| Crates.io | jinja-lsp |
| lib.rs | jinja-lsp |
| version | 0.1.89 |
| created_at | 2024-01-06 14:09:57.785387+00 |
| updated_at | 2025-06-18 19:36:24.44057+00 |
| description | Language server for jinja2 |
| homepage | https://github.com/uros-5/jinja-lsp |
| repository | https://github.com/uros-5/jinja-lsp |
| max_upload_size | |
| id | 1090941 |
| size | 129,875 |
jinja-lsp enhances minijinja development experience by providing Helix/Nvim users with advanced features such as autocomplete, syntax highlighting, hover, goto definition, code actions and linting.
cargo install jinja-lsp
or
download binary from releases page.
Intelligent suggestions for variables in current template, as well as variables, templates and filters defined on backend side.
Highlights errors and potential bugs in your jinja templates.
See the complete filter or variable description by hovering over it.
It's recommended to reset variables on server in case you rename/delete file.
Quickly jump to definition. Works for Rust identifiers as well.
https://github.com/uros-5/jinja-lsp/assets/59397844/015e47b4-b6f6-47c0-8504-5ce79ebafb00
Language server configuration(all fields are optional)
{ "templates": "./TEMPLATES_DIR", "backend": ["./BACKEND_DIR"], "lang": "rust"}
Helix configuration
[language-server.jinja-lsp]
command = "jinja-lsp"
config = { templates = "./templates", backend = ["./src"], lang = "rust"}
timeout = 5
[[language]]
name = "jinja"
language-servers = ["jinja-lsp"]
Neovim configuration
init.lua, I use kickstarter.nvim, it uses Mason.nvim for installing language servers.
-- if you want to debug
vim.lsp.set_log_level("debug")
require('lazy').setup(
-- your other configs
{
-- Main LSP Configuration
'neovim/nvim-lspconfig',
dependencies = {
-- dependencies
},
config = function() {
-- keybindings etc.
vim.filetype.add {
extension = {
jinja = 'jinja',
jinja2 = 'jinja',
j2 = 'jinja',
py = 'python'
},
}
local servers = {
jinja_lsp = {
filetypes = { 'jinja', 'rust', 'python' },
},
-- other servers
}
end
}
)
template_extensions = ["j2", "tex"]
You can also write configuration in: pyproject.toml, Cargo.toml, jinja-lsp.toml.
Python
[tool.jinja-lsp]
templates = "./templates"
backend = ["./src"]
Rust
[metadata.jinja-lsp]
templates = "./templates"
backend = ["./src"]
Supported languages: Python, Rust