{"id":13895968,"url":"https://github.com/astoff/digestif","last_synced_at":"2026-01-04T00:47:12.648Z","repository":{"id":39801195,"uuid":"159284842","full_name":"astoff/digestif","owner":"astoff","description":"A language server for TeX and friends","archived":false,"fork":false,"pushed_at":"2024-07-30T00:39:21.000Z","size":2916,"stargazers_count":254,"open_issues_count":7,"forks_count":7,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-08-07T18:37:14.423Z","etag":null,"topics":["bibtex","language-server","latex","tex"],"latest_commit_sha":null,"homepage":"","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/astoff.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-27T06:08:52.000Z","updated_at":"2024-08-03T16:30:25.000Z","dependencies_parsed_at":"2024-05-01T23:54:56.676Z","dependency_job_id":"387a9b0c-2277-4348-9d46-adc223f66175","html_url":"https://github.com/astoff/digestif","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astoff%2Fdigestif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astoff%2Fdigestif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astoff%2Fdigestif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/astoff%2Fdigestif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/astoff","download_url":"https://codeload.github.com/astoff/digestif/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226260601,"owners_count":17596494,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bibtex","language-server","latex","tex"],"created_at":"2024-08-06T18:02:35.373Z","updated_at":"2026-01-04T00:47:12.642Z","avatar_url":"https://github.com/astoff.png","language":"Lua","funding_links":[],"categories":["Lua"],"sub_categories":[],"readme":"Digestif\n========\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/astoff/digestif/actions/workflows/test.yml\"\u003e\u003cimg src=\"https://github.com/astoff/digestif/actions/workflows/test.yml/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://ctan.org/pkg/digestif\"\u003e\u003cimg alt=\"CTAN\" src=\"https://img.shields.io/ctan/v/digestif?color=blue\"\u003e\u003c/a\u003e\n\u003ca href=\"https://luarocks.org/modules/astoff/digestif\"\u003e\u003cimg alt=\"LuaRocks\" src=\"https://img.shields.io/luarocks/v/astoff/digestif?color=blue\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nDigestif is a code analyzer, and a [language server][lsp], for LaTeX,\nConTeXt et caterva.  It provides context-sensitive completion,\ndocumentation, code navigation, and related functionality to any text\neditor that speaks the LSP protocol.\n\nFeatures\n--------\n\n- Completion for commands, environments, key-value options (for\n  instance, TikZ options), cross-references and citations.\n\n  \u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/astoff/digestif/images/completion.png\"\u003e\u003c/p\u003e\n\n- Popup help messages, including command signature and documentation.\n  For the best results, make sure you have the [LaTeX reference\n  manual][latexref] installed as an [info node][info-issues].\n\n  \u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/astoff/digestif/images/help.png\"\u003e\u003c/p\u003e\n\n- Find definition and references to labels and citations.\n\n- Document outline.\n\n- Multi-file documents are supported via TeXShop-style magic comments.\n  Just add a comment like this near the top of each child document:\n\n  ```\n  % !TeX root = somefile.tex\n  ```\n\n- Digestif is fuzzy!  For citations, it tries an exact match against\n  the BibTeX identifier and a fuzzy match against author and title.\n  In the picture below, the user typed `groalhom`, which matches\n  **Gro**thendieck's “Sur quelques points d'**al**gébre\n  **hom**ologique”; selecting this inserts the BibTeX identifier\n  `Tohoku`.\n\n  \u003cp align=\"center\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/astoff/digestif/images/cite.png\"\u003e\u003c/p\u003e\n\n  Similarly, for cross-references, Digestif tries an exact match\n  against the label and a fuzzy match against the text around the\n  label.\n\n- Support for LaTeX, ConTeXt, plain TeX, DocTeX (`.dtx` files) and\n  Texinfo.\n\n- Bibliography support via BibTeX, BibLaTeX and amsrefs.\n\n- Lua API, independent of the language server protocol, for use in\n  editors capable of loading Lua modules.  See [API on the wiki][api]\n  for details.\n\nInstallation\n------------\n\nDigestif has minimal dependencies and can run on LuaTeX or on a\nstandalone Lua interpreter.  Correspondingly, there are two ways to\ninstall it.\n\n### LuaTeX with the self-installing script ![easy]\n\nThe only dependencies for this are git and a recent TeX installation.\n\n1. Download the [digestif][self-install-sh] wrapper script (or, on\n   Windows, [digestif.cmd][self-install-cmd]).\n2. Place it in your `$PATH` (say, `~/.local/bin`).\n3. Make it executable (`chmod +x ~/.local/bin/digestif`).\n\nIn the first run, the script will automatically download the\npackage, by default to `~/.digestif`.  To update or uninstall,\nsimply delete that folder.\n\n### Standalone Lua via LuaRocks\n\nRun `luarocks install digestif`.  This should be done either as root\nor with the `--local` option, in which case the executable script will\nland in `~/.luarocks/bin/digestif`; make sure this is in your `$PATH`\nor adapt your text editor configuration accordingly.\n\nEditor setup\n------------\n\nNext, you need to enable Digestif as a language server in your\nfavorite text editor.\n\n### Emacs with the [Eglot] package\n\nDigestif works out-of-the-box with Eglot.  Just install the package\n(`M-x package-install RET eglot RET`), open some TeX document and\nenable Eglot (`M-x eglot`).  Voilà!  Some hints:\n\n- If you want automatic snippet insertion upon choosing a completion\n  candidate, make sure to activate `yas-minor-mode` *before*\n  starting up Eglot.\n\n- Try the [consult-eglot] package to access the index of a multifile\n  project (this is exposed via the the `workspace/symbols` LSP\n  method.)\n\n### Emacs with the [lsp-mode] package\n\nTo ensure that Digestif is used, add the following to your init file:\n\n  ``` emacs-lisp\n  (setq lsp-tex-server 'digestif)\n  ```\n\n### Vim with the [Coc] plugin\n\nSee instructions [here](https://github.com/neoclide/coc.nvim/wiki/Language-servers#latex).\n\n### Sublime Text with the [LSP](https://packagecontrol.io/packages/LSP) package\n\nSee instructions [here](https://lsp.sublimetext.io/language_servers/#digestif).\n\n### Neovim using the [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) plugin\n\nSee instructions [here](https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md#digestif).\n\n### Other editors\n\nIt shouldn't be hard to set up other editors to use Digestif.  Please\nopen an issue if you want to include additional instructions here.\n\nSupported TeX packages\n----------------------\n\nDigestif tries to learn about the commands provided by a package by\nlooking at its source code, but this has limitations, since the\ntypical TeX literate documentation is ostensibly not machine readable.\n\nFor full support, a detailed “tags” file should be created for each\npackage.  Among other things, this file lists all defined macros\ntogether with their signatures and docstrings.  To generate a stub\ntags file from a `.sty`, `.cls` or `.dtx` file, use the command\n\n```\ndigestif --generate FILES\n```\n\nAfter filling in the missing details, the resulting tags file can be\nadded to this repository (pull requests are welcome!).  The format of\nthe tags files should be more or less self explanatory.  See the\n[data](./data) folder for examples.\n\nLicense\n-------\n\nDigestif is available under the [GNU General Public License][GPL],\nversion 3 or later.  For some files in the [data](./data) directory, a\ndifferent (free) license applies.  See [LICENSE.md](./LICENSE.md) for\ndetails.\n\n[info-issues]: https://github.com/astoff/digestif/wiki/Common-installation-issues#info-nodes\n[installation-issues]: https://github.com/astoff/digestif/wiki/Common-installation-issues\n[coc]: https://github.com/neoclide/coc.nvim\n[eglot]: https://github.com/joaotavora/eglot\n[latexref]: https://latexref.xyz/\n[lsp-mode]: https://github.com/emacs-lsp/lsp-mode\n[lsp]: https://microsoft.github.io/language-server-protocol/\n[api]: https://github.com/astoff/digestif/wiki/API\n[self-install-sh]: https://raw.githubusercontent.com/astoff/digestif/master/scripts/digestif\n[self-install-cmd]: https://raw.githubusercontent.com/astoff/digestif/master/scripts/digestif.cmd\n[easy]: https://raw.githubusercontent.com/astoff/digestif/images/easy.png\n[GPL]: https://www.gnu.org/licenses/gpl-3.0.txt\n[consult-eglot]: https://github.com/mohkale/consult-eglot/\n[Company mode]: https://company-mode.github.io/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastoff%2Fdigestif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fastoff%2Fdigestif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fastoff%2Fdigestif/lists"}