Multi lingual support in the Helix editor

Writing in Markdown without a spellchecker is risky—especially if you write in multiple languages or have a habit of typing fast and making typos.

Here is a short, reproducible guide to setting up multilingual spell and grammar checking (English & Norwegian) in the Helix editor (hx) using mise.


Tech Stack

  • Helix (hx): Fast, modal terminal editor with built-in LSP support.
  • mise: Runtime and tool version manager used to manage language servers cleanly without sudo.
  • ltex-ls: LanguageTool-based language server providing spell and grammar checking.
  • marksman: Markdown language server providing document symbols, links, and completion.

Files Involved

  1. mise.toml (or ~/.config/mise/config.toml): Installs and manages ltex-ls and marksman.
  2. ~/.config/helix/languages.toml: Defines the language servers and attaches them to Markdown.
  3. .helix/languages.toml (optional): Per-project override to switch between English and Norwegian.

Step 1: Install the Language Servers with mise

Install ltex-ls (GitHub backend) and marksman:

# Global mise setup:
mise use -g github:valentjn/ltex-ls@latest
mise use -g marksman@latest

# Or declare in your project's mise.toml:
# [tools]
# "github:valentjn/ltex-ls" = "latest"
# marksman = "latest"

Tip on PATH: Ensure ~/.local/bin is in your $PATH. If needed, symlink the binaries directly:

ln -s ~/.local/share/mise/installs/github-valentjn-ltex-ls/latest/bin/ltex-ls ~/.local/bin/ltex-ls
ln -s ~/.local/share/mise/installs/marksman/latest/marksman ~/.local/bin/marksman

Step 2: Configure Helix (~/.config/helix/languages.toml)

Edit or create ~/.config/helix/languages.toml:

# 1. English spell checking (British English; use "en-US" for American)
[language-server.ltex-en]
command = "ltex-ls"

[language-server.ltex-en.config]
ltex.language = "en-GB"

# 2. Norwegian Bokmål spell checking
[language-server.ltex-nb]
command = "ltex-ls"

[language-server.ltex-nb.config]
ltex.language = "nb"

# 3. Attach marksman and ltex-en to Markdown
[[language]]
name = "markdown"
language-servers = ["marksman", "ltex-en"]

Step 3: Switching Between English and Norwegian

Running both ltex-en and ltex-nb simultaneously is not recommended because English text will be flagged as misspelled Norwegian and vice versa.

Instead:
- Keep ltex-en as your global default in ~/.config/helix/languages.toml.
- When working in a repository or directory that is primarily Norwegian, create a local .helix/languages.toml:

[[language]]
name = "markdown"
language-servers = ["marksman", "ltex-nb"]

Helix automatically merges project-level .helix/languages.toml with your global configuration.


Step 4: Verify the Setup

Check that Helix recognizes the language servers:

hx --health markdown

You should see green checkmarks for both servers:

Configured language servers:
  ✓ marksman: /home/inio/.local/bin/marksman
  ✓ ltex-en: /home/inio/.local/bin/ltex-ls

Summary

With mise managing the language server binaries and Helix natively handling multiple language servers per file type, you get real-time Markdown intelligence and grammar/spell checking with zero bloat and seamless switching between languages.