NEOVIM PLUGIN (MOJO) โ LUA

Blaze.nvim
OVERVIEW
Blaze.nvim is "a blazingly fast mojo.vim fork" for Neovim that provides syntax highlighting, indentation, Tree-sitter, formatting, linting, debugging (DAP) and LSP integration for Mojo and `*.๐ฅ` files. The README marks it "Under Active development expect breaking changes until stable release."
HOW IT WORKS
- 1Add the plugin for the `mojo`/`๐ฅ` filetypes (lazy.nvim `{ "qompassai/blaze.nvim" }`, or the packer spec with `blaze-ts.nvim`, `nvim-lspconfig`, `nvim-dap`, `nvim-dap-ui` and `nvim-dap-python`), then call `require("blaze").setup()`. Source: GitHub blaze.nvim README.md.
- 2On setup, enabled subsystems wire up in order: LSP servers if `lsp.enabled`, Pixi if `pixi.enabled`, Magic if `magic.enabled`, and the emoji filetype extension if `filetypes.emoji_extension`; a FileType autocmd applies the configured indentation to Mojo buffers. Source: primo clone `~/.GH/Qompass/blaze.nvim/lua/blaze/init.lua`.
- 3Syntax highlighting comes from Tree-sitter via `blaze-ts.nvim` when available; otherwise the fallback sets `vim.g.mojo_highlight_all` and loads the bundled syntax file on FileType. Source: primo clone `lua/blaze/init.lua` (`blaze_syntax`).
- 4Formatting uses `mojo format` (the ๐ฅ-fmt cheat-sheet entry) with on-save formatting; linting integrates with `nvim-lint`/null-ls; debugging is set up via `nvim-dap`. Sources: GitHub blaze.nvim README.md feature list; `docs/blaze.txt` cheat sheet.
- 5`:Fever` runs the health check, reporting Tree-sitter parser availability, Mojo file detection, and ๐ฅ-ls / ๐ฅ-fmt / ๐ฅ-lint / ๐ฅ-dap availability. Sources: GitHub blaze.nvim README.md; `docs/blaze.txt`.
CONCEPTS
CONFIGURATION
| Option | Default | What it does |
|---|---|---|
formatting.format_on_save | true | Format Mojo files on save (nested under `formatting` in the defaults table) |
line_length | 88 | Formatter line length (also `formatting.line_length = 88`) |
enable_linting | true | Enable linting integration |
dap.enabled | true | Enable DAP debugging setup |
lsp.enabled | true | Enable LSP integration (`lsp.mojo.enabled = true` nested) |
indentation.expandtab | true | Expand tabs for Mojo buffers |
indentation.shiftwidth | 4 | Indent width for Mojo buffers |
filetypes.emoji_extension | true | Treat the `๐ฅ` extension as the Mojo filetype |
pixi.enabled | true | Enable Pixi integration (`auto_detect = true`) |
pixi.keymaps.prefix | <leader>p | Prefix for Pixi keymaps (`pixi.keymaps.enabled = true`) |
pixi.display.method / height / width | `float` / 15 / 80 | Pixi output display (options: `split`, `vsplit`, `float`, `notify`) |
magic.enabled | true | Enable Modular Magic integration (`show_output = true`, `commands.list = true`) |
syntax.enabled | true | Enable syntax subsystem (`syntax.treesitter.enabled = true`; fallback enabled with `highlight_all = true`) |
keymaps | true (in README example) | Optional which-key mappings, passed to `require("blaze.config").setup({...})` in the README's manual-setup example |
CONTROLS
| Action | Control |
|---|---|
| Run health check | :Fever |
| Format Mojo file (which-key, when `keymaps = true`) | <leader>fm |
| Run healthcheck via `:Fever` (which-key, when `keymaps = true`) | <leader>fh |
| Format current file (example mapping in the manual) | `<leader>fm` via `vim.lsp.buf.format()` (labelled "just examples" in the doc) |
| Show Blaze status in lualine | `require("blaze.lualine").blaze_status` in `lualine_c` (README: "Still in development") |
NOT COVERED
- Config shape discrepancy, both sourced: the defaults table in `lua/blaze/config.lua` nests on-save formatting as `formatting.format_on_save`, while the README's manual-setup example passes flat `format_on_save = true, enable_linting = true, keymaps = true` to `require("blaze.config").setup(...)`. No source read reconciles the two shapes. - Only two which-key mappings (`<leader>fm`, `<leader>fh`) are documented; the Pixi keymaps behind the `<leader>p` prefix are not enumerated in any source read. - LSP buffer mappings (`gd`, `K`, `<leader>rn`, etc.) appear in the Diver-side lazy spec fetched as blaze.nvim's `lazy.lua` (file header: `/qompassai/diver/lua/plugins/lang/mojo.lua`), i.e. they belong to Diver's Mojo spec, not to blaze.nvim itself, so they are not listed as blaze controls. - No standalone install/usage documentation beyond the README and the short `docs/blaze.txt` manual was sourced.
REFERENCES
- Mojo manual (Modular)The language reference for the Mojo this plugin supports; its formatter (mojo format) and language server are the toolchain Blaze wires into the editor.
- Neovim LSP documentation (:help lsp)Neovim's built-in LSP client documentation โ the client Blaze's LSP integration configures for Mojo buffers.
- Tree-sitter documentationThe parsing library behind the Tree-sitter highlighting path (via blaze-ts.nvim) the diagram shows.