Tinymist Docs

Helix

Run and configure tinymist in helix for Typst.

Features

See Tinymist Features for a list of features.

Finding Executable

To enable LSP, you must install tinymisttinymist. You can find tinymisttinymist by:

  • Night versions available at GitHub Actions.

  • Stable versions available at GitHub Releases.
    If you are using the latest version of typst-ts-mode, then you can use command typst-ts-lsp-download-binarytypst-ts-lsp-download-binary to download the latest stable binary of tinymisttinymist at typst-ts-lsp-download-pathtypst-ts-lsp-download-path.

  • Build from source by cargo. You can also compile and install latest tinymisttinymist by Cargo.

    
                                        
    cargo install --git https://github.com/Myriad-Dreamin/tinymist --locked tinymist
    
                                        
    cargo install --git https://github.com/Myriad-Dreamin/tinymist --locked tinymist
    
                                        
    cargo install --git https://github.com/Myriad-Dreamin/tinymist --locked tinymist
    
                                        
    cargo install --git https://github.com/Myriad-Dreamin/tinymist --locked tinymist

Setup Server

Update .config/helix/languages.toml.config/helix/languages.toml to use tinymist.


                                
[language-server.tinymist]

                                
command = "tinymist"

                                


                                
[[language]]

                                
name = "typst"

                                
language-servers = ["tinymist"]

                                
[language-server.tinymist]

                                
command = "tinymist"

                                


                                
[[language]]

                                
name = "typst"

                                
language-servers = ["tinymist"]

                                
[language-server.tinymist]

                                
command = "tinymist"

                                


                                
[[language]]

                                
name = "typst"

                                
language-servers = ["tinymist"]

                                
[language-server.tinymist]

                                
command = "tinymist"

                                


                                
[[language]]

                                
name = "typst"

                                
language-servers = ["tinymist"]

Tips

Getting Preview Feature

Default Preview Feature and Background Preview Feature are suitable in helix.

Working with Multiple-File Projects

There is a way in Neovim, but you cannot invoke related commands with arguments by :lsp-workspace-command in helix. As a candidate solution, assuming your having following directory layout:


                                
├── .helix

                                
│   └── languages.toml

                                
└── main.typ

                                
├── .helix

                                
│   └── languages.toml

                                
└── main.typ

                                
├── .helix

                                
│   └── languages.toml

                                
└── main.typ

                                
├── .helix

                                
│   └── languages.toml

                                
└── main.typ

You could create .helix/languages.toml in the project folder with the following contents:


                                
[language-server.tinymist.config]

                                
typstExtraArgs = ["main.typ"]

                                
[language-server.tinymist.config]

                                
typstExtraArgs = ["main.typ"]

                                
[language-server.tinymist.config]

                                
typstExtraArgs = ["main.typ"]

                                
[language-server.tinymist.config]

                                
typstExtraArgs = ["main.typ"]

Then all diagnostics and autocompletion will be computed according to the main.typmain.typ.

Note: With that configuration, if you’re seeing a file that is not reachable by main.typmain.typ, you will not get diagnostics and autocompletion correctly in that file.

Extra Settings

To configure the language server, edit the language-server.tinymistlanguage-server.tinymist section. For example, if you want to export PDF on typing and output files in $root_dir/target$root_dir/target directory:


                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { exportPdf = "onType", outputPath = "$root/target/$dir/$name" }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { exportPdf = "onType", outputPath = "$root/target/$dir/$name" }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { exportPdf = "onType", outputPath = "$root/target/$dir/$name" }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { exportPdf = "onType", outputPath = "$root/target/$dir/$name" }

To enable a live preview you can use the preview.backgroundpreview.background:


                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { preview.background.enabled = true", preview.background.args = ["--data-plane-host=127.0.0.1:23635", "--invert-colors=never", "--open"] }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { preview.background.enabled = true", preview.background.args = ["--data-plane-host=127.0.0.1:23635", "--invert-colors=never", "--open"] }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { preview.background.enabled = true", preview.background.args = ["--data-plane-host=127.0.0.1:23635", "--invert-colors=never", "--open"] }

                                
[language-server.tinymist]

                                
command = "tinymist"

                                
config = { preview.background.enabled = true", preview.background.args = ["--data-plane-host=127.0.0.1:23635", "--invert-colors=never", "--open"] }

See Tinymist Server Configuration for references.