Tinymist [ˈtaɪni mɪst] is an integrated language service for Typst [taɪpst].
Find a file
Myriad-Dreamin d21ebc38dc
feat: bump typst to v0.13.0-rc1 (#1342)
* dev: use range type from lsp-types

* feat: add html document variant

* feat: use new-style bytes constructors

* fix: broken span usages

* fix: syntax kind is changed

* fix: label use pico str

* fix: bib element is changed

* fix: raw element is changed

* fix: typst use codex

* fix: package fn is removed from world trait

* feat: reflexo accept typst document

* docs: update changelog

* dev: cargo patch

* fix: typst pdf timestamp is changed

* fix: pattern is renamed to tiling

* dev: make eval compat

* test: update snapshots

* build: bump version to nightly 0.12.19-rc4

* build: bump version to 0.12.19-rc1 (#1164)

  * build update changelog

  * build: bump version to 0.12.19-rc1

* build: bump version to nightly 0.12.19-rc2 (#1221)

  * feat: update typst to `85d1778`

  * deps: lock git deps version

  * build: bump version to 0.12.19-rc2

  * docs: remove rc in changelog

  * fix: mathtext formatting of typstyle

  * fix: completion related to mathtext

  * build: update cargo.lock

* build: bump version to nightly 0.12.19-rc3 (#1232)

* build: bump version to nightly 0.12.19-rc4 (#1239)

* feat: add typst-html

* feat: add typst-html

* cargo patch

* fix: features doesn't take effect

* fix: casting

* fix: broken no-content-hint

* fix: snapshot

* fix: remove unnecessary `fs` feature

* fix: move system features feature

* feat: remove nightly shim

* test: update snapshot

* dev: nightly v0.12.21 (#1279)

* feat: update typst to `0ea6680`

feat: update typst to `0ea6680`

build: bump version to nightly 0.12.19 (#1261)

* fix: fix lint errors

* styl: fotmat

* fix: build web ci

* build: update cargo.toml

* build: bump version to nightly 0.12.21-rc1 (#1280)

* build: update typstyle & reflexo (#1336)

* build: update typstyle & reflexo

* dev: remove useless patches

---------

Co-authored-by: Myriad-Dreamin <camiyoru@gmail.com>

* build: update version

* fix: pdf gate were broken (#1285)

* fix: panic on convert_datetime (#1286)

* feat: run language sever with targeting html (#1284)

* dev: add some debug logging

* feat: html compilation

* fix: revert changes

* feat: adjust html interfaces

* feat: lock reflexo

* feat: provide exportTarget configuration

* feat: export html actions when target is html

* build: bump reflexo

* fix: system feature gate

* fix: feature gate 2

* fix: feature gate 3

* feat: make tinymist-world featured by lsp

* feat: text export over typst's HTML export (#1289)

* feat: add more doc, world, and task apis (#1290)

* feat: add num of pages method

* feat: add from_snapshot_inner method

* feat: add clear_dedicates method

* feat: more convertion traits

* feat: add doc_get_as_value method

* feat: add doc_get_as_value method

* feat: add cast_run method

* fix: set is compiling flag (#1293)

* feat: publish {tinymist-{derive,analysis,std,vfs,world,project},typlite,crityp} crates (#1310)

* build: bump version to 0.12.21-pre-rc1

* fix: deps

* build: set nightly in nightly branch

* docs: add readmes for publish

* feat: add release crates action

* dev: remove publish of sync-lsp

* dev: remove useless setup

* fix: remove readme

* fix: publish ignore errors

* fix: specify version for publish

* fix: specify version for publish

* feat: update tinymist-web version

* test: update snapshot

* fix: diverged deps

---------

Co-authored-by: ParaN3xus <136563585+ParaN3xus@users.noreply.github.com>
2025-02-21 03:18:04 +08:00
.github feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
.vscode docs: documenting Myriad-Dreamin's workspace setting (#1264) 2025-02-08 13:41:18 +08:00
assets docs: add documentation about publish tokens (#1212) 2025-01-27 01:41:01 +08:00
CHANGELOG build: bump version to 0.12.16 (#1099) 2025-01-02 21:28:50 +08:00
contrib/typst-preview/editors/vscode build: bump dependencies of js packages (#1304) 2025-02-17 20:18:14 +08:00
crates feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
docs docs: fix typo (#1276) 2025-02-08 23:09:39 +08:00
editors feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
scripts feat: CLI generate shell build script (#1219) 2025-01-28 15:13:59 +08:00
syntaxes/textmate feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
tests feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
tools dev: move package to reflexo_world part (#1177) 2025-01-16 10:13:37 +08:00
typ/templates fix: rollback typo fixes in tokyo-hight.tmTheme (#899) 2024-11-26 16:37:57 +08:00
.gitignore feat: ignore vscode workspace (#1120) 2025-01-07 14:15:06 +08:00
.prettierignore dev: init 2024-03-07 05:29:31 +08:00
Cargo.lock feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
Cargo.toml feat: bump typst to v0.13.0-rc1 (#1342) 2025-02-21 03:18:04 +08:00
CHANGELOG.md build: bump version to 0.11.2 (#136) 2024-03-30 23:02:43 +08:00
CODEOWNERS feat: add CODEOWNERS 2024-11-22 11:39:17 +08:00
CONTRIBUTING.md docs: improve contributing and development guide (#976) 2024-12-10 22:30:25 +08:00
dist-workspace.toml ci: build binaries for riscv64-linux-musl, loongarch64-linux-{musl,gnu} (#1014) 2024-12-17 15:53:34 +08:00
LICENSE dev: init 2024-03-07 05:29:31 +08:00
MAINTAINERS.typ feat: add Sylvan Franklin as maintainer (#1091) 2025-01-09 11:08:41 +08:00
package.json build: bump dependencies of js packages (#1304) 2025-02-17 20:18:14 +08:00
README.md docs: clarify typst version in nightly releases (#1173) 2025-01-15 12:50:03 +08:00
tinymist.lock feat: CLI compile documents with lock updates (#1218) 2025-01-28 13:57:27 +08:00
yarn.lock build: bump dependencies of js packages (#1304) 2025-02-17 20:18:14 +08:00

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:

Features

Language service (LSP) features:

  • Semantic highlighting

  • Code actions

    • Also known as "quick fixes" or "refactorings".
  • Formatting (Reformatting)

    • Provide the user with support for formatting whole documents, using typstfmt or typstyle.
  • Document highlight

    • 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.
  • Document links

    • Renders path or link references in the document, such as image("path.png") or bibliography(style: "path.csl").
  • Document symbols

    • Also known as "document outline" or "table of contents" in Typst.
  • Folding ranges

    • You can collapse code/content blocks and headings.
  • Goto definitions

    • Right-click on a symbol and select "Go to Definition".
    • Or ctrl+click on a symbol.
  • References

    • Right-click on a symbol and select "Go to References" or "Find References".
    • Or ctrl+click on a symbol.
  • Hover tips

    • Also known as "hovering tooltip".
    • Render docs according to tidy style.
  • Inlay hints

    • 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.
  • Color Provider

    • 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.
  • Code Lens

    • Should give contextual buttons along with code. For example, a button for exporting your document to various formats at the start of the document.
  • Rename symbols and embedded paths

  • Help with function and method signatures

  • Workspace Symbols

  • Code Action

    • Increasing/Decreasing heading levels.
    • Turn equation into "inline", "block" or "multiple-line block" styles.
  • experimental/onEnter

    • Enter inside triple-slash comments automatically inserts ///
    • Enter in the middle or after a trailing space in // inserts //
    • Enter inside //! doc comments automatically inserts //!
    • Enter inside equation markups automatically inserts indents.

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 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 (typst-block), 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.

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.

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.

Documentation

See Online Documentation.

Packaging

Stable Channel:

Packaging status

Nightly Channel:

Packaging status

Roadmap

The development in typst v0.12.0 has been finished. We'll slow down for a while to catch regressions and bugs by changes. We are also planning to implement the following features in typst v0.13.0 or spare time in weekend:

  • Spell checking: There is already a branch but no suitable (default) spell checking library is found.
  • Type checking: complete the type checker.
  • Static Linter: linting code statically according to feedback of the type checker and succeeding code analysis.
  • 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.
  • A reliable way of configuring projects's entry files and files to export across editors. See GitHub Issue 530.
  • 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.
    • Browsing mode: if no main file is specified, the preview will be in browsing mode and use the recently focused file as the main.
    • 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.

If you are interested by any 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.

Maintainers

Get list of maintainers from MAINTAINERS.typ. Or programmatically by yarn maintainers

Note

You can add extra arguments for specific information. For example, yarn maintainers --input="action=maintainers".

Acknowledgements