- Remove locally-developed or rarely-used plugin packages (codetyper, curls, edgy, flash) to reduce maintenance surface, external deps, and startup cost; these were local/optional and caused complexity. - Clean up stale/keymap docs and small duplicate or experimental files (keymaps/README.md, sudoku keymaps). - Apply targeted refactors to core modules for readability, robustness, and to align Java/DAP/Copilot integrations with local environment. - Removed plugin modules: - lua/cargdev/plugins/codetyper.lua (deleted) - lua/cargdev/plugins/curls.lua (deleted) - lua/cargdev/plugins/edgy.lua (deleted) - lua/cargdev/plugins/flash.lua (deleted) - Added .codetyper to .gitignore - Java / JDTLS: - ftplugin/java.lua: pin jdtls java executable to JDK 25, switch to mac_arm config, enable LSP formatter and declare multiple runtimes (JavaSE-17, JavaSE-25). - Notifications & startup UX: - lua/cargdev/core/function/notification_manager.lua: large refactor — use local aliases (api, cmd, loop, opt), improved docs, dashboard-aware handling, nvim-notify fallback, safer tracking and cleanup of notifications. - Utilities & monitors: - lua/cargdev/core/function/performance_monitor.lua: use local references, better notify usage and docs. - lua/cargdev/core/function/project_commands.lua: add docs, use local api/fn/notify, clearer RunProject/DebugProject commands. - Terminal helper: - lua/cargdev/core/function/openTerminal.lua: add module docs and small refactor to use local cmd/api aliases and expose keymap. - Keymaps & docs: - Removed stale keymaps README (lua/cargdev/core/keymaps/README.md). - Reworked many keymap files: docstrings, renamed/moved mappings to avoid conflicts, moved DAP mappings into dap plugin config, removed/disabled experimental mappings (see files under lua/cargdev/core/keymaps/*). - Adjusted quick keybindings and prefixes to reduce overlaps. - Plugins & integrations: - lua/cargdev/plugins/formatting.lua: disabled google-java-format fallback for java (prefer JDTLS). - lua/cargdev/plugins/dap.lua: added additional DAP configs (Bun launch, attach helper), moved/registered dap keymaps here. - lua/cargdev/plugins/copilot.lua: reorganized Copilot/Copilot-cmp/CopilotChat config and added copilot source to nvim-cmp. - lua/cargdev/plugins/nvim-cmp.lua: added copilot source and small formatting tweak.
96 lines
3.0 KiB
Lua
96 lines
3.0 KiB
Lua
-- ============================================================================
|
|
-- NVIM-LINT: Asynchronous linting for Neovim
|
|
-- ============================================================================
|
|
-- Provides linting via external tools with support for custom linter configs.
|
|
-- Automatically triggers linting on BufEnter, BufWritePost, and InsertLeave.
|
|
-- Includes custom DBML linter and keymaps for manual lint triggers.
|
|
-- ============================================================================
|
|
|
|
return {
|
|
"mfussenegger/nvim-lint",
|
|
event = { "BufReadPre", "BufNewFile" },
|
|
config = function()
|
|
local lint = require("lint")
|
|
local api = vim.api
|
|
local keymap = vim.keymap
|
|
|
|
lint.linters.dbml = {
|
|
cmd = "dbml",
|
|
args = { "lint" },
|
|
stdin = false,
|
|
stream = "stdout",
|
|
ignore_exitcode = true,
|
|
parser = function(output, bufnr)
|
|
local diagnostics = {}
|
|
for line in output:gmatch("[^\r\n]+") do
|
|
local lnum, col, msg = line:match("(%d+):(%d+):%s*(.*)")
|
|
if lnum and msg then
|
|
table.insert(diagnostics, {
|
|
bufnr = bufnr,
|
|
lnum = tonumber(lnum) - 1,
|
|
col = tonumber(col) - 1,
|
|
message = msg,
|
|
severity = vim.diagnostic.severity.WARN,
|
|
})
|
|
end
|
|
end
|
|
return diagnostics
|
|
end,
|
|
}
|
|
|
|
lint.linters.sqlfluff = {
|
|
cmd = "sqlfluff",
|
|
args = { "lint", "--format", "json" },
|
|
stdin = false,
|
|
stream = "stdout",
|
|
ignore_exitcode = true,
|
|
parser = function(output, bufnr)
|
|
local diagnostics = {}
|
|
local parsed = vim.fn.json_decode(output)
|
|
if parsed and parsed[1] and parsed[1].violations then
|
|
for _, issue in ipairs(parsed[1].violations) do
|
|
table.insert(diagnostics, {
|
|
bufnr = bufnr,
|
|
lnum = issue.line_no - 1,
|
|
col = issue.line_pos - 1,
|
|
message = issue.description,
|
|
severity = vim.diagnostic.severity.WARN,
|
|
})
|
|
end
|
|
end
|
|
return diagnostics
|
|
end,
|
|
}
|
|
|
|
lint.linters_by_ft = {
|
|
javascript = { "eslint_d" },
|
|
typescript = { "eslint_d" },
|
|
javascriptreact = { "eslint_d" },
|
|
typescriptreact = { "eslint_d" },
|
|
svelte = { "eslint_d" },
|
|
python = { "pylint" },
|
|
dbml = { "dbml" },
|
|
sql = { "sqlfluff" },
|
|
html = { "htmlhint" },
|
|
java = { "checkstyle" },
|
|
tex = { "chktex" },
|
|
}
|
|
|
|
-- Set full path for chktex (TeX binaries may not be in Neovim's PATH)
|
|
lint.linters.chktex.cmd = "/Library/TeX/texbin/chktex"
|
|
|
|
local lint_augroup = api.nvim_create_augroup("lint", { clear = true })
|
|
|
|
api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
|
|
group = lint_augroup,
|
|
callback = function()
|
|
lint.try_lint()
|
|
end,
|
|
})
|
|
|
|
keymap.set("n", "<leader>lf", function()
|
|
lint.try_lint()
|
|
end, { desc = "Trigger linting for current file" })
|
|
end,
|
|
}
|