Tinymist is an integrated language service for Typst designed to enhance productivity and streamline document creation. It offers comprehensive support for developers, technical writers, educators, and professionals working with Typst.
Key Features:
Language Server Protocol (LSP) integration for semantic highlighting, code actions, formatting, and intelligent suggestions.
Document symbols, folding ranges, hover tips, and inlay hints to improve code understanding.
Color provider and code lens features for enhanced document customization and export options.
Support for multiple output formats, including PDF, SVG, PNG, HTML, Markdown, and Text.
Integration with VSCode for seamless editing and debugging experiences.
Audience & Benefit:
Ideal for developers and technical writers seeking advanced support for Typst documents. Tinymist provides a comprehensive toolset to improve efficiency, reduce errors, and enhance the quality of typst-based projects.
Installable via winget, Tinymist is a reliable solution for anyone working with Typst, offering robust features to simplify document creation and management.
README
Tinymist
Tinymist [ˈtaɪni mɪst] is an integrated language service for Typst [taɪpst]. You can also call it 微wēi霭ǎi in Chinese.
Inlay hints are special markers that appear in the editor and provide you with additional information about your code, like the names of the parameters that a called method expects.
View a list of templates in template gallery. (tinymist.showTemplateGallery)
Click a button in template gallery to initialize a new project with a template. (tinymist.initTemplate and tinymist.initTemplateInPlace)
Trace execution in current document (tinymist.profileCurrentFile).
Versioning and Release Cycle
Tinymist’s versions follow the Semantic Versioning scheme, in format of MAJOR.MINOR.PATCH. Besides, tinymist follows special rules for the version number:
If a version is suffixed with -rcN (), e.g. 0.11.0-rc1 and 0.12.1-rc1, it means this version is a release candidate. It is used to test publish script and E2E functionalities. These versions will not be published to the marketplace.
If the PATCH number is odd, e.g. 0.11.1 and 0.12.3, it means this version is a nightly release. The nightly release will use both tinymist and typst at main branch. They will be published as prerelease version to the marketplace. Note that in nightly releases, we change #sys.version to the next minor release to help develop documents with nightly features. For example, in tinymist nightly v0.12.1 or v0.12.3, the #sys.version is changed to version(0, 13, 0).
Otherwise, if the PATCH number is even, e.g. 0.11.0 and 0.12.2, it means this version is a regular release. The regular release will always use the recent stable version of tinymist and typst.
The release cycle is as follows:
If there is a typst version update, a new major or minor version will be released intermediately. This means tinymist will always align the minor version with typst.
If there is at least a bug or feature added this week, a new patch version will be released.
Installation
Follow the instructions to enable tinymist in your favorite editor.
The prebuilts for other revisions can also be found manually. For example, if you are seeking a nightly release for the featured PR: build: bump version to 0.11.17-rc1, you could click and go to the action page run for the related commits and download the artifacts.
To install extension file (the file with .vsix extension) manually, please Ctrl+Shift+X in the editor window and drop the downloaded vsix file into the opened extensions view.
To encourage contributions, we create many Pull Requests in draft to navigate short-term plans. They give you a hint of what or where to start in this large repository.
Long Terms
We are planning to implement the following features in typst v0.14.0 or spare time in weekend:
Type checking: Complete the type checker.
Periscope renderer: Disabled since vscode rejects to render SVGs containing foreignObjects.
Inlay hints: Disabled by default because of performance issues.
Find references of dictionary fields and named function arguments.
Improve symbol view’s appearance.
Improve package view.
Navigate to symbols by clicking on the symbol name in the view.
Automatically locate the symbol item in the view when viewing local documentation.
Remember the recently invoked package commands, e.g. “Open Docs of @preview/cetz:0.3.1”, “Open directory of @preview/touying:0.5.3”.
Improve label view.
Group labels.
Search labels.
Keep (persist) group preferences.
Improve Typst Preview.
Pin drop-down: Set the file to preview in the drop-down for clients that doesn’t support passing arguments to the preview command.
Render in web worker (another thread) to reduce overhead on the electron’s main thread.
Spell checking: There is already a branch but no suitable (default) spell checking library is found.
If you are interested in any of the above features, please feel free to send Issues to discuss or PRs to implement to GitHub.
Contributing
Please read the CONTRIBUTING.md file for contribution guidelines.
Sponsoring
Tinymist thrives on community love and remains proudly independent. While we don’t accept direct project funding, we warmly welcome support for our maintainers’ personal efforts. Please go to Maintainers Page and Contributors Page and find their personal pages for more information. It is also welcomed to directly ask questions about sponsoring on the GitHub Issues.