Skip to content

Neovim

The official LUMOS plugin for Neovim provides syntax highlighting via Tree-sitter and full LSP integration.

{
"getlumos/nvim-lumos",
dependencies = {
"nvim-treesitter/nvim-treesitter",
"neovim/nvim-lspconfig",
},
config = function()
require("lumos").setup()
end,
}
use {
"getlumos/nvim-lumos",
requires = {
"nvim-treesitter/nvim-treesitter",
"neovim/nvim-lspconfig",
},
config = function()
require("lumos").setup()
end,
}
Terminal window
# Clone to your plugins directory
git clone https://github.com/getlumos/nvim-lumos \
~/.local/share/nvim/site/pack/plugins/start/nvim-lumos
# Install Tree-sitter grammar
:TSInstall lumos

  • Neovim 0.9+ (required)
  • nvim-treesitter - For syntax highlighting
  • nvim-lspconfig - For LSP features
  • lumos-lsp - LSP server
    Terminal window
    cargo install lumos-lsp

Tree-sitter-based syntax highlighting for:

  • Keywords, types, and attributes
  • Comments (line and block)
  • String literals and numbers
  • Enum variants

Full Language Server Protocol support:

  • Real-time diagnostics
  • Auto-completion
  • Hover documentation
  • Go to definition
  • Find references
  • Code actions
KeyAction
gdGo to definition
KHover documentation
grFind references
<leader>rnRename symbol
<leader>caCode actions
<leader>fFormat document

require("lumos").setup({
-- LSP server path (auto-detected if on PATH)
lsp_cmd = { "lumos-lsp" },
-- Enable diagnostics
diagnostics = true,
-- Format on save
format_on_save = true,
})
require("lumos").setup({
lsp_cmd = { "lumos-lsp" },
-- Custom keybindings
on_attach = function(client, bufnr)
local opts = { buffer = bufnr }
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
vim.keymap.set("n", "<leader>rn", vim.lsp.buf.rename, opts)
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
vim.keymap.set("n", "<leader>f", function()
vim.lsp.buf.format({ async = true })
end, opts)
end,
-- Custom capabilities (for nvim-cmp integration)
capabilities = require("cmp_nvim_lsp").default_capabilities(),
})
local cmp = require("cmp")
cmp.setup({
sources = cmp.config.sources({
{ name = "nvim_lsp" }, -- LUMOS completions
{ name = "buffer" },
{ name = "path" },
}),
})

  1. Verify lumos-lsp is installed:

    Terminal window
    lumos-lsp --version
  2. Check LSP logs:

    :LspLog
  3. Manually start LSP:

    :LspStart lumos
  1. Verify grammar is installed:

    :TSInstallInfo lumos
  2. Reinstall grammar:

    :TSInstall lumos

Add to your config:

vim.filetype.add({
extension = {
lumos = "lumos",
},
})