Skip to content

Latest commit

 

History

History
139 lines (104 loc) · 10.5 KB

README.md

File metadata and controls

139 lines (104 loc) · 10.5 KB

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".
  • 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.
  • 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 //!

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

  • 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