thyrgle/declint.nvim

Neovim Package for declint.

Lua

1

4 commits

updated Oct 2, 2026

See the code

See what people are saying

SourceMessageScoreDate

declint.nvim - Complement your LSPs with YAML lints. (r/neovim)

tl;dr [declint](https://github.com/thyrgle/declint) lets you define linter rules in YAML. [declint.nvim](https://github.com/thyrgle/declint.nvim) shows them as native diagnostics as you type. Someone committed (see the GIF above!) ``` try: 1/0 except Exception: pass ``` (Bare exceptions are…

1

Oct 2, 2026

README

declint.nvim

declint for Neovim: one small plugin that attaches the built-in LSP client to the declint language server. Diagnostics and quickfixes from your .declint.yaml rules, as you type.

nvimdeclint

Install

lazy.nvim

{
  'thyrgle/declint.nvim',
  config = function()
    require('declint').setup()
  end,
}

Neovim's native package manager (no plugin manager needed)

vim.pack.add({ 'https://github.com/thyrgle/declint.nvim' })
require('declint').setup()

Classic :packadd

git clone https://github.com/thyrgle/declint.nvim \
  ~/.local/share/nvim/site/pack/vendor/start/declint.nvim
-- init.lua
require('declint').setup()

Setup

Prerequisite: the declint binary (once: cargo install declint), and a config site in your project (.declint.yaml, .declint/, or declint.yaml — declint init --lang python scaffolds one).

require('declint').setup({ ... }) takes overrides merged over these defaults:

{
  filetypes = { 'python', 'javascript', 'html', 'vue', 'svelte', 'erb',
                'handlebars', 'ini', 'markdown', 'json', 'toml', 'yaml',
                'sh', 'dockerfile' },
  cmd = { 'declint', 'serve' },
  markers = { '.declint.yaml', '.declint', 'declint.yaml' },
}
  • filetypes — which buffers attach the linter. Match your declint configs' languages keys.
  • cmd — the server command; point it at an absolute declint binary if it isn't on PATH.
  • markers — files/directories that identify a project root.

How attaching works

On each FileType event, the plugin walks up from the file looking for a config-site marker. Found: one declint serve client starts per project root and attaches every matching buffer in it. Not found: the buffer just doesn't get a declint client — no noise.

Troubleshooting

  • Client not attaching? Check the buffer's detected filetype with :set ft? — the plugin attaches on the filetypes in setup(). Neovim detects .ini as conf, for example, so either add conf to filetypes or :set filetype=ini in a modeline/autocmd.
  • Client not attaching? :LspInfo (or :checkhealth vim.lsp) — if no client is listed, no config site was found above the file. Run declint check . in the project to confirm the config itself works.
  • No diagnostics but the client is attached? Your config's languages keys and the buffer's filetype must intersect — the server only publishes configs whose languages match.
lua
neovim
neovim-plugin
nvim
nvim-plugin

thyrgle/declint.nvim

Neovim Package for declint.

Lua

1

4 commits

updated Oct 2, 2026

See the code

See what people are saying

SourceMessageScoreDate

declint.nvim - Complement your LSPs with YAML lints. (r/neovim)

tl;dr [declint](https://github.com/thyrgle/declint) lets you define linter rules in YAML. [declint.nvim](https://github.com/thyrgle/declint.nvim) shows them as native diagnostics as you type. Someone committed (see the GIF above!) ``` try: 1/0 except Exception: pass ``` (Bare exceptions are…

1

Oct 2, 2026

README

declint.nvim

declint for Neovim: one small plugin that attaches the built-in LSP client to the declint language server. Diagnostics and quickfixes from your .declint.yaml rules, as you type.

nvimdeclint

Install

lazy.nvim

{
  'thyrgle/declint.nvim',
  config = function()
    require('declint').setup()
  end,
}

Neovim's native package manager (no plugin manager needed)

vim.pack.add({ 'https://github.com/thyrgle/declint.nvim' })
require('declint').setup()

Classic :packadd

git clone https://github.com/thyrgle/declint.nvim \
  ~/.local/share/nvim/site/pack/vendor/start/declint.nvim
-- init.lua
require('declint').setup()

Setup

Prerequisite: the declint binary (once: cargo install declint), and a config site in your project (.declint.yaml, .declint/, or declint.yaml — declint init --lang python scaffolds one).

require('declint').setup({ ... }) takes overrides merged over these defaults:

{
  filetypes = { 'python', 'javascript', 'html', 'vue', 'svelte', 'erb',
                'handlebars', 'ini', 'markdown', 'json', 'toml', 'yaml',
                'sh', 'dockerfile' },
  cmd = { 'declint', 'serve' },
  markers = { '.declint.yaml', '.declint', 'declint.yaml' },
}
  • filetypes — which buffers attach the linter. Match your declint configs' languages keys.
  • cmd — the server command; point it at an absolute declint binary if it isn't on PATH.
  • markers — files/directories that identify a project root.

How attaching works

On each FileType event, the plugin walks up from the file looking for a config-site marker. Found: one declint serve client starts per project root and attaches every matching buffer in it. Not found: the buffer just doesn't get a declint client — no noise.

Troubleshooting

  • Client not attaching? Check the buffer's detected filetype with :set ft? — the plugin attaches on the filetypes in setup(). Neovim detects .ini as conf, for example, so either add conf to filetypes or :set filetype=ini in a modeline/autocmd.
  • Client not attaching? :LspInfo (or :checkhealth vim.lsp) — if no client is listed, no config site was found above the file. Run declint check . in the project to confirm the config itself works.
  • No diagnostics but the client is attached? Your config's languages keys and the buffer's filetype must intersect — the server only publishes configs whose languages match.
lua
neovim
neovim-plugin
nvim
nvim-plugin

Languages

Lua

100.0%