Awesome
<!-- This file is generated by scripts/link-docs.mjs from docs/tinymist/introduction.typ. Do not edit manually. -->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.
It contains:
- an analyzing library for Typst, see tinymist-query.
- a CLI for Typst, see tinymist.
- which provides a language server for Typst, see Language Features.
- which provides a preview server for Typst, see Preview Feature.
- a VSCode extension for Typst, see Tinymist VSCode Extension.
Features
Language service (LSP) features:
-
- The "semantic highlighting" is supplementary to "syntax highlighting".
-
- Also known as "quick fixes" or "refactorings".
-
- Highlight all break points in a loop context.
- (Todo) Highlight all exit points in a function context.
- (Todo) Highlight all captures in a closure context.
- (Todo) Highlight all occurrences of a symbol in a document.
-
- Renders path or link references in the document, such as
image("path.png")
orbibliography(style: "path.csl")
.
- Renders path or link references in the document, such as
-
- Also known as "document outline" or "table of contents" in Typst.
-
- You can collapse code/content blocks and headings.
-
- Right-click on a symbol and select "Go to Definition".
- Or ctrl+click on a symbol.
-
- Right-click on a symbol and select "Go to References" or "Find References".
- Or ctrl+click on a symbol.
-
- Also known as "hovering tooltip".
-
- 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 all inlay colorful label for color literals in your document.
- Change the color literal's value by a color picker or its code presentation.
-
- Should give contextual buttons along with code. For example, a button for exporting your document to various formats at the start of the document.
-
- Increasing/Decreasing heading levels.
-
- <kbd>Enter</kbd> inside triple-slash comments automatically inserts
///
- <kbd>Enter</kbd> in the middle or after a trailing space in
//
inserts//
- <kbd>Enter</kbd> inside
//!
doc comments automatically inserts//!
- <kbd>Enter</kbd> inside triple-slash comments automatically inserts
Extra features:
- Compiles to PDF on save (configurable to as-you-type, or other options).
- Compiles to SVG, PNG, HTML, Markdown, Text, and other formats by commands, vscode tasks, or code lenses.
- Provides code lenses for exporting to PDF/SVG/PNG/etc.
- Provides a status bar item to show the current document's compilation status and words count.
- Editor tools:
- 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
andtinymist.initTemplateInPlace
) - Trace execution in current document (
tinymist.profileCurrentFile
).
- View a list of templates in template gallery. (
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
(<picture><source media="(prefers-color-scheme: dark)" srcset="./assets/images/introduction.typ-inlined0.svg"><img style="vertical-align: -0.35em" alt="typst-block" src="./assets/images/introduction.typ-inlined1.svg"/></picture>), e.g.0.11.0-rc1
and0.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
and0.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. - Otherwise, if the
PATCH
number is even, e.g.0.11.0
and0.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.
Installing Regular/Nightly Prebuilds from GitHub
Note: if you are not knowing what is a regular/nightly release, please don't follow this section.
Besides published releases specific for each editors, you can also download the latest regular/nightly prebuilts from GitHub and install them manually.
- Regular prebuilts can be found in GitHub Releases.
- Nightly prebuilts can be found in GitHub Actions. 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 <kbd>Ctrl+Shift+X</kbd> in the editor window and drop the downloaded vsix file into the opened extensions view.
Documentation
See Online Documentation.
Packaging
Stable Channel:
Nightly Channel:
Roadmap
- Spell checking: There is already a branch but no suitable (default) spell checking library is found.
- Periscope renderer: It is disabled since vscode reject to render SVGs containing foreignObjects.
- Inlay hint: It is disabled by default because of performance issues.
- Find references of dictionary fields and named function arguments.
- Go to definition of dictionary fields and named function arguments.
- Improve symbol view's appearance.
Contributing
Please read the CONTRIBUTING.md file for contribution guidelines.
Acknowledgements
- Partially code is inherited from typst-lsp
- The integrating offline handwritten-stroke recognizer is powered by Detypify.
- The integrating preview service is powered by typst-preview.
- The integrating local package management functions are adopted from vscode-typst-sync.