Digestif is a code analyzer, and a language server, for LaTeX, ConTeXt et caterva. It provides context-sensitive completion, documentation, code navigation, and related functionality to any text editor that speaks the LSP protocol.
Completion for commands, environments, key-value options (for instance, TikZ options), cross-references and citations.
Find definition and references to labels and citations.
Multi-file documents are supported via TeXShop-style magic comments. Just add a comment like this near the top of each child document:
% !TeX root = somefile.tex
Digestif is fuzzy! For citations, it tries an exact match against
the BibTeX identifier and a fuzzy match against author and title.
In the picture below, the user typed
groalhom, which matches
Grothendieck's Sur quelques points d'algbre
homologique; selecting this inserts the BibTeX identifier
Similarly, for cross-references, Digestif tries an exact match against the label and a fuzzy match against the text around the label.
Support for LaTeX, ConTeXt, plain TeX, DocTeX (
.dtx files) and
Bibliography support via BibTeX, BibLaTeX and amsrefs.
Lua API, independent of the language server protocol, for use in editors capable of loading Lua modules. See API on the wiki for details.
Digestif has minimal dependencies and can run on LuaTeX or on a standalone Lua interpreter. Correspondingly, there are two ways to install it.
The only dependencies for this are git and a recent TeX installation.
chmod +x ~/.local/bin/digestif).
In the first run, the script will automatically download the
package, by default to
~/.digestif. To update or uninstall,
simply delete that folder.
luarocks install digestif. This should be done either as root
or with the
--local option, in which case the executable script will
~/.luarocks/bin/digestif; make sure this is in your
or adapt your text editor configuration accordingly.
Next, you need to enable Digestif as a language server in your favorite text editor.
Digestif works out-of-the-box with Eglot. Just install the package
M-x package-install RET eglot RET), open some TeX document and
enable Eglot (
M-x eglot). Voil! Some hints:
If you want automatic snippet insertion upon choosing a completion
candidate, make sure to activate
starting up Eglot.
Try the consult-eglot package to access the index of a multifile
project (this is exposed via the the
To ensure that Digestif is used, add the following to your init file:
(setq lsp-tex-server 'digestif)
See instructions here.
See instructions here.
It shouldn't be hard to set up other editors to use Digestif. Please open an issue if you want to include additional instructions here.
Digestif tries to learn about the commands provided by a package by looking at its source code, but this has limitations, since the typical TeX literate documentation is ostensibly not machine readable.
For full support, a detailed tags file should be created for each
package. Among other things, this file lists all defined macros
together with their signatures and docstrings. To generate a stub
tags file from a
.dtx file, use the command
digestif --generate FILES
After filling in the missing details, the resulting tags file can be added to this repository (pull requests are welcome!). The format of the tags files should be more or less self explanatory. See the data folder for examples.