Skip to content

[plugins] Suggested complementary plugins: mini.ai, nvim-lint #146

@stanfish06

Description

@stanfish06

Context

Two plugins that would fill genuine gaps in the current setup, distinct from those already suggested in #129 (nvim-surround, oil.nvim, nvim-dap) and #139 (lazydev.nvim, render-markdown.nvim).


1. echasnovski/mini.ai — enhanced text objects

Rationale: The config already uses nvim-treesitter-textobjects for ]f/[f function navigation. mini.ai complements it by improving the everyday a/i text-object layer: af/if for function bodies, aa/ia for function arguments, a"/i" with smarter multi-line handling, etc. It works without grammar-level queries, so it covers filetypes where treesitter parsers are missing. The plugin is part of the mini.nvim ecosystem, zero-dependency, and a single-file install.

Install: { name = "mini.ai", src = "https://github.com/echasnovski/mini.ai.git" }

Minimal setup:

require("mini.ai").setup()  -- sensible defaults out of the box

2. mfussenegger/nvim-lint — async linting

Rationale: The config has conform.nvim for formatting and LSP for type-checking diagnostics, but no dedicated lint pass. Many tools emit diagnostics that LSP servers don't surface: eslint for JS/TS style rules, ruff check (not ruff_format) for Python, selene for Lua, shellcheck for Bash. nvim-lint runs these asynchronously on BufWritePost/InsertLeave and populates the diagnostic namespace — appearing in the existing statusline diagnostics counter and <leader>d list with no extra UI. It pairs naturally with the existing conform formatters: format → then lint.

Install: { name = "nvim-lint", src = "https://github.com/mfussenegger/nvim-lint.git" }

Minimal setup:

require("lint").linters_by_ft = {
    python     = { "ruff" },
    javascript = { "eslint_d" },
    typescript = { "eslint_d" },
    lua        = { "selene" },
    sh         = { "shellcheck" },
}
vim.api.nvim_create_autocmd({ "BufWritePost", "InsertLeave" }, {
    callback = function() require("lint").try_lint() end,
})

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions