Rhombulary
Rhombulary is primarily an Emacs Lisp package, but it does contain and rely on Racket code for determining what scribblings have been installed as documentation for the Racket that is running the code, and then also for extracting parts of that documentation in a textual “blue boxes” style, and writing out that data as Lisp for use within Emacs.
1 Command-Line Interface
The rhombulary/rhombulary-cli module does not expose any Racket API, but rather it implements a command-line interface for the dictionary generator tool. It gets installed as the rhombulary program if the project is raco pkg installed, but doing that is entirely optional for the functioning of the Emacs package.
The rhombulary Emacs Lisp feature runs the "rhombulary-cli.rkt" file directly, and it therefore does not rely on the rhombulary program being installed. Furthermore the Emacs Lisp functionality only uses the --input-eval option when it calls "rhombulary-cli.rkt", with the other options existing for testing purposes only. In essence the Emacs Lisp feature just uses "rhombulary-cli.rkt" for evaluating its instructions against the rhombulary/rhombulary-api interface, and it expresses those instructions in Racket rather than encoding them as command-line arguments.
The path of the racket executable that is used for running "rhombulary-cli.rkt" from Emacs Lisp is determined by the rhombulary-racket-program variable of the rhombulary feature, which can be configured using the standard Emacs customization facility if the default setting does not correctly point to the desired Racket installation’s racket.
2 Application Programming Interface
| (require rhombulary/rhombulary-api) | package: rhombulary |
The dictionary generation API consists of a number of parameters for configuring the generator and functions for running the generator to emit Emacs Lisp code.
parameter
(configuration-name name) → void? name : string?
= "generic"
parameter
(ranked-language-families lst) → void? lst : (listof string?)
= '("*")
parameter
(ranked-modules) → (listof string?)
(ranked-modules lst) → void? lst : (listof string?)
= null
parameter
(included-modules) → (listof string?)
(included-modules lst) → void? lst : (listof string?)
= null
parameter
(excluded-modules) → (listof string?)
(excluded-modules lst) → void? lst : (listof string?)
= null
parameter
(ranked-as-included-modules flag) → void? flag : boolean?
= #f
parameter
(additional-words) → (listof (list/c string? string? string?))
(additional-words lst) → void? lst : (listof (list/c string? string? string?))
= null
parameter
(feature-name) → string?
(feature-name name) → void? name : string?
= #f
parameter
(provide-feature? flag) → void? flag : boolean?
= #f
procedure
(display-elisp-tables [out]) → any
out : output-port? = (current-output-port)
procedure
(write-elisp-tables-to-file path) → any
path : path-string?