Compare commits

..
Author SHA1 Message Date
Dzuchun
40fd46f290 plugin(tree-sitter): add missing parsers
- java
- diff
- git_rebase
- gitcommit
2025-12-25 07:24:00 +00:00
Dzuchun
e98b7a9048 plugin(nvim-lint): update linter list
- remove haskell linters
- remove docker linter (hadolint)
- add gitcommit linter
- add html linter
2025-12-25 07:23:05 +00:00
Dzuchun
ed0caff48a plugin(conform): formatter list update
- remove haskell
- add lua back
2025-12-25 07:21:57 +00:00
Dzuchun
d3d9852e1e plugin(url-open): use default browser 2025-12-25 07:21:10 +00:00
Dzuchun
7d1fea660a remove img-clip
I'm not writing markdown with images anymore
2025-12-25 07:20:21 +00:00
Dzuchun
28fd6aae2d yet another lsp cleanup
- refactored lsp config for allow independent requests for custom config
- removed all lints and formatters from LSP config
- deleted a bunch of empty config files
- changed mason and mason-lspconfig from maintainer's fork to the org repo
- remove separate nvim-jdtls plugin
2025-12-25 07:15:32 +00:00
Dzuchun
19de2d7e73 remove some unnecessary tree-sitter 2025-12-25 06:46:57 +00:00
Dzuchun
f1fef7172b add config for biome linter 2025-12-25 04:02:01 +00:00
Dzuchun
0099fd2dac fix: lsp (mason) configuration 2025-12-25 04:01:08 +00:00
Dzuchun
f4aba4166c add mason-only servers list
also juggled servers around until checkhealth was happy
2025-12-25 03:33:36 +00:00
17 changed files with 84 additions and 179 deletions

1
nvim/lua/dzu/lsp/.gitignore vendored Normal file
View file

@ -0,0 +1 @@
*.lua_

View file

@ -1 +0,0 @@
return {}

View file

@ -18,28 +18,4 @@ return {
},
}
}
-- cmd = { "haskell-language-server-wrapper", "--lsp", "-Wall" }
-- formattingProvider = "hls-stylish-haskell-plugin",
-- CRED: https://github.com/haskell/haskell-language-server/issues/4363 -- does not
-- work
--[[
settings = {
plugin = {
-- CRED: https://github.com/haskell/haskell-language-server/issues/680 --
-- does not work too!
['ghcide'] = {
completionOn = false,
},
['pramas'] = {
completionOn = false,
},
['ghcide-completions'] = {
config = {
snippetsOn = false,
autoExtendOn = true
}
}
}
}
]] --
}

View file

@ -5,14 +5,15 @@ if not is_ok then
return
end
-- format code on save
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = {
"*.rs", -- rust sources
"*.py", -- python sources
"*.js", -- javascript sources
},
callback = function(ev)
vim.lsp.buf.format()
end,
})
-- -- format code on save
-- vim.api.nvim_create_autocmd({ "BufWritePre" }, {
-- pattern = {
-- "*.rs", -- rust sources
-- "*.py", -- python sources
-- "*.js", -- javascript sources
-- "*.html", -- html files
-- },
-- callback = function(ev)
-- vim.lsp.buf.format()
-- end,
-- })

View file

@ -1,7 +0,0 @@
return {
settings = {
java = {
classPath = { "*.jar" }
}
}
}

View file

@ -1,22 +1,3 @@
local servers = {
"rust_analyzer", -- rust
"pyright", -- has no code formatting
-- "marksman", -- markdown
"ts_ls", -- js, ts, tsx
"clangd", -- C
"lua_ls",
"hls",
"nil_ls",
"tinymist",
"dockerls",
"html",
-- "jdtls",
-- "xmlformatter"
}
local nvimlsp_only_servers = {
"nushell",
}
local settings = {
ui = {
border = "none",
@ -29,14 +10,47 @@ local settings = {
log_level = vim.log.levels.INFO,
max_concurrent_installers = 4,
}
require("mason").setup(settings)
local servers = {
{ "rust_analyzer", "rust_analyzer" },
{ "pyright", "pyright", },
{ "ts_ls", nil },
{ "biome", nil },
{ "clangd", nil },
{ "lua_ls", "lua_ls" },
-- { "hls", "hls" },
{ "nil_ls", nil },
{ "tinymist", "tinymist" },
{ "jdtls", nil },
-- { "nushell", nil }, -- TODO what IS the lspconfig name?
{ "html", nil },
{ "dockerls", nil },
}
local lspconfig_servers = {}
for _, s in pairs(servers) do
local s0 = s[1]
if s0 ~= nil then
table.insert(lspconfig_servers, s0)
vim.lsp.enable(s0, true)
end
end
require("mason-lspconfig").setup({
ensure_installed = servers,
automatic_enable = false,
ensure_installed = lspconfig_servers,
automatic_enable = true,
automatic_installation = true,
})
local config_servers = {}
for _, s in pairs(servers) do
local s1 = s[2]
if s1 ~= nil then
table.insert(config_servers, s1)
end
end
local is_ok, handlers = pcall(require, "dzu.lsp.handlers")
if not is_ok then
vim.notify("failed to initialize LSP handlers")
@ -44,31 +58,21 @@ if not is_ok then
end
handlers.setup()
local opts = {}
local nvim_lsp_servers = {}
for _, nlsp_s in pairs(nvimlsp_only_servers) do
table.insert(nvim_lsp_servers, nlsp_s)
end
for _, s in pairs(servers) do
table.insert(nvim_lsp_servers, s)
end
for _, server in pairs(nvim_lsp_servers) do
opts = {
-- on_attach = handlers.on_attach,
local opts = {
capabilities = handlers.capabilities,
}
for _, server in pairs(config_servers) do
server = vim.split(server, "@")[1]
local is_ok, conf_opts = pcall(require, "dzu.lsp." .. server)
if is_ok then
opts = vim.tbl_deep_extend("force", conf_opts, opts)
else
if not is_ok then
vim.notify("Failed to initialize config for " .. server)
goto continue
end
local opts0 = vim.tbl_deep_extend("force", conf_opts, opts)
vim.lsp.config(server, opts)
vim.lsp.config(server, opts0)
vim.lsp.enable(server, true)
::continue::
end

View file

@ -1,4 +0,0 @@
-- (nix lsp)
return {
}

View file

@ -1,6 +0,0 @@
return {
cmd = { "nu", "--plugins", "[~/.cargo/bin/nu_plugin_polars]", "--lsp", },
filetypes = { "nu" },
root_dir = require("lspconfig.util").find_git_ancestor,
single_file_support = true,
}

View file

@ -1 +0,0 @@
return {}

View file

@ -8,16 +8,13 @@ local function config()
-- js/ts fomatters
local web_fmt = { "biome" };
local fomatters_by_ft = {
-- lua = { "stylua" },
lua = { "stylua" },
python = { "black" },
javascript = web_fmt,
javascriptreact = web_fmt,
typescript = web_fmt,
typescriptreact = web_fmt,
json = web_fmt,
haskell = { "fourmolu" },
lhaskell = { "fourmolu" },
cabal = { "fourmolu" },
-- nix = { "nixfmt" },
cpp = { "clang-format" },
xml = { "xmlformatter" },

View file

@ -1,15 +0,0 @@
return {
"HakonHarnes/img-clip.nvim",
event = "VeryLazy",
opts = {
default = {
-- file and directory options
dir_path = "/home/dzu/.wiki/attachments/", ---@type string
extension = "png", ---@type string
file_name = "%Y-%m-%d-%H-%M-%S", ---@type string
use_absolute_path = false, ---@type boolean
relative_to_current_file = false, ---@type boolean
}
},
lazy = false,
}

View file

@ -25,10 +25,12 @@ local function config()
typescript = web_linters,
typescriptreact = web_linters,
json = web_linters,
haskell = { 'hlint' },
lhaskell = { 'hlint' },
cabal = { 'hlint' },
dockerfile = { "hadolint" },
-- haskell = { 'hlint' },
-- lhaskell = { 'hlint' },
-- cabal = { 'hlint' },
-- dockerfile = { "hadolint" }, -- kinda broken?
gitcommit = { 'gitlint' },
html = { 'htmlhint' },
}
-- add to tool list
for _, lints in pairs(names(linters_by_ft, "mason")) do
@ -41,7 +43,7 @@ local function config()
-- autolint on save
vim.api.nvim_create_autocmd({ "BufWritePost", "BufReadPost" }, {
pattern = { "*.js", "*.ts", "*.jsx", "*.tsx", "*.json", "*.hs", "*Dockerfile*" },
pattern = { "*.js", "*.ts", "*.jsx", "*.tsx", "*.json", "*.hs", "*.html", "*COMMIT_EDITMSG" },
callback = function(_)
lint.try_lint()
end,

View file

@ -1,4 +1,3 @@
-- CRED: nvim from scratch - https://github.com/LunarVim/Neovim-from-scratch/blob/06-LSP/lua/user/lsp/handlers.lua
local function config()
local is_ok, _ = pcall(require, 'dzu.lsp')
if not is_ok then
@ -8,16 +7,13 @@ local function config()
end
return {
"neovim/nvim-lspconfig",
"mason-org/mason-lspconfig.nvim",
opts = {},
dependencies = {
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
{
"mason-org/mason.nvim",
"neovim/nvim-lspconfig",
-- lsp completions
"hrsh7th/cmp-nvim-lsp",
lazy = false,
}, -- lsp suggestions
-- "jose-elias-alvarez/null-ls.nvim",
-- "jay-babu/mason-null-ls.nvim",
},
config = config,
lazy = false,

View file

@ -0,0 +1,4 @@
return {
"mason-org/mason.nvim",
opts = {}
}

View file

@ -1,13 +0,0 @@
local function config()
local is_ok, jdtls = pcall(require, "jdtls")
if not is_ok then
vim.notify "Couldn't load jdtls (java additional LSP plugin)"
return
end
end
return {
"mfussenegger/nvim-jdtls",
config = config,
lazy = true,
}

View file

@ -17,7 +17,9 @@ local function config()
"dockerfile", -- oh yeah. I should probably figure docker out...
"fish",
"gitignore",
-- "git_commit",
"diff",
"git_rebase",
"gitcommit",
"haskell",
"html",
"javascript",
@ -39,12 +41,13 @@ local function config()
"vimdoc",
"xml",
"nu",
"java",
},
sync_install = false,
ignore_install = { "" }, -- List of parsers to ignore installing
ignore_install = {}, -- List of parsers to ignore installing
highlight = {
enable = true, -- false will disable the whole extension
disable = { "" }, -- list of language that will be disabled
disable = {}, -- list of language that will be disabled
additional_vim_regex_highlighting = true,
},
@ -52,38 +55,6 @@ local function config()
}
configs.setup(config_opts)
-- latex parser
local is_ok, parsers = pcall(require, 'nvim-treesitter.parsers')
if not is_ok then
vim.notify("couldn't find tree sitter parsers")
return
end
local parser_configs = parsers.get_parser_configs()
parser_configs.latex = {
install_info = {
url = "https://github.com/latex-lsp/tree-sitter-latex",
files = { "src/parser.c", "src/scanner.c" }, -- note that some parsers also require src/scanner.c or src/scanner.cc
-- optional entries:
-- branch = "master", -- default branch in case of git repo if different from master
generate_requires_npm = false, -- if stand-alone parser without npm dependencies
requires_generate_from_grammar = true, -- if folder contains pre-generated src/parser.c
},
filetype = "tex", -- if filetype does not match the parser name
}
-- git commit parser
parser_configs.git_commit = {
install_info = {
url = "~/Repositories/random/tree-sitter-git-commit/",
files = { "src/parser.c" }, -- note that some parsers also require src/scanner.c or src/scanner.cc
-- optional entries:
-- branch = "master", -- default branch in case of git repo if different from master
generate_requires_npm = false, -- if stand-alone parser without npm dependencies
requires_generate_from_grammar = false, -- if folder contains pre-generated src/parser.c
},
filetype = "gitcommit", -- if filetype does not match the parser name
}
vim.cmd.TSUpdate()
end

View file

@ -4,7 +4,7 @@ local function config()
return
end
url_open.setup({
open_app = 'librewolf',
open_app = 'default',
})
end