diff --git a/nvim/lua/dzu/lsp/.gitignore b/nvim/lua/dzu/lsp/.gitignore new file mode 100644 index 0000000..abe8258 --- /dev/null +++ b/nvim/lua/dzu/lsp/.gitignore @@ -0,0 +1 @@ +*.lua_ diff --git a/nvim/lua/dzu/lsp/dockerls.lua b/nvim/lua/dzu/lsp/dockerls.lua deleted file mode 100644 index a564707..0000000 --- a/nvim/lua/dzu/lsp/dockerls.lua +++ /dev/null @@ -1 +0,0 @@ -return {} diff --git a/nvim/lua/dzu/lsp/hls.lua b/nvim/lua/dzu/lsp/hls.lua index 9bbaabd..944266f 100644 --- a/nvim/lua/dzu/lsp/hls.lua +++ b/nvim/lua/dzu/lsp/hls.lua @@ -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 - } - } - } - } - ]] -- } diff --git a/nvim/lua/dzu/lsp/init.lua b/nvim/lua/dzu/lsp/init.lua index 4e08259..916aec8 100644 --- a/nvim/lua/dzu/lsp/init.lua +++ b/nvim/lua/dzu/lsp/init.lua @@ -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, +-- }) diff --git a/nvim/lua/dzu/lsp/jdtls.lua b/nvim/lua/dzu/lsp/jdtls.lua deleted file mode 100644 index 4b61ecf..0000000 --- a/nvim/lua/dzu/lsp/jdtls.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - settings = { - java = { - classPath = { "*.jar" } - } - } -} diff --git a/nvim/lua/dzu/lsp/mason.lua b/nvim/lua/dzu/lsp/mason.lua index 630a19d..a4fb402 100644 --- a/nvim/lua/dzu/lsp/mason.lua +++ b/nvim/lua/dzu/lsp/mason.lua @@ -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, - capabilities = handlers.capabilities, - } +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 diff --git a/nvim/lua/dzu/lsp/nil_ls.lua b/nvim/lua/dzu/lsp/nil_ls.lua deleted file mode 100644 index 452cb9b..0000000 --- a/nvim/lua/dzu/lsp/nil_ls.lua +++ /dev/null @@ -1,4 +0,0 @@ --- (nix lsp) - -return { -} diff --git a/nvim/lua/dzu/lsp/nushell.lua b/nvim/lua/dzu/lsp/nushell.lua deleted file mode 100644 index 9c25ff0..0000000 --- a/nvim/lua/dzu/lsp/nushell.lua +++ /dev/null @@ -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, -} diff --git a/nvim/lua/dzu/lsp/ts_ls.lua b/nvim/lua/dzu/lsp/ts_ls.lua deleted file mode 100644 index a564707..0000000 --- a/nvim/lua/dzu/lsp/ts_ls.lua +++ /dev/null @@ -1 +0,0 @@ -return {} diff --git a/nvim/lua/dzu/plugins/formatting.lua b/nvim/lua/dzu/plugins/formatting.lua index 11425d1..9564951 100644 --- a/nvim/lua/dzu/plugins/formatting.lua +++ b/nvim/lua/dzu/plugins/formatting.lua @@ -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" }, diff --git a/nvim/lua/dzu/plugins/img-clip.lua b/nvim/lua/dzu/plugins/img-clip.lua deleted file mode 100644 index 70f663c..0000000 --- a/nvim/lua/dzu/plugins/img-clip.lua +++ /dev/null @@ -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, -} diff --git a/nvim/lua/dzu/plugins/lint.lua b/nvim/lua/dzu/plugins/lint.lua index f7b7d87..3cc2db0 100644 --- a/nvim/lua/dzu/plugins/lint.lua +++ b/nvim/lua/dzu/plugins/lint.lua @@ -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, diff --git a/nvim/lua/dzu/plugins/lsp.lua b/nvim/lua/dzu/plugins/lsp.lua index fca30c1..a34cbdc 100644 --- a/nvim/lua/dzu/plugins/lsp.lua +++ b/nvim/lua/dzu/plugins/lsp.lua @@ -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", - { - "hrsh7th/cmp-nvim-lsp", - lazy = false, - }, -- lsp suggestions - -- "jose-elias-alvarez/null-ls.nvim", - -- "jay-babu/mason-null-ls.nvim", + "mason-org/mason.nvim", + "neovim/nvim-lspconfig", + -- lsp completions + "hrsh7th/cmp-nvim-lsp", }, config = config, lazy = false, diff --git a/nvim/lua/dzu/plugins/mason.lua b/nvim/lua/dzu/plugins/mason.lua new file mode 100644 index 0000000..08a7e84 --- /dev/null +++ b/nvim/lua/dzu/plugins/mason.lua @@ -0,0 +1,4 @@ +return { + "mason-org/mason.nvim", + opts = {} +} diff --git a/nvim/lua/dzu/plugins/nvim-jdtls.lua b/nvim/lua/dzu/plugins/nvim-jdtls.lua deleted file mode 100644 index eaf0c7e..0000000 --- a/nvim/lua/dzu/plugins/nvim-jdtls.lua +++ /dev/null @@ -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, -} diff --git a/nvim/lua/dzu/plugins/tree-sitter.lua b/nvim/lua/dzu/plugins/tree-sitter.lua index 7578ab5..c1e9739 100644 --- a/nvim/lua/dzu/plugins/tree-sitter.lua +++ b/nvim/lua/dzu/plugins/tree-sitter.lua @@ -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 + enable = true, -- false will disable the whole extension + 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 diff --git a/nvim/lua/dzu/plugins/url-open.lua b/nvim/lua/dzu/plugins/url-open.lua index edbe048..a14261c 100644 --- a/nvim/lua/dzu/plugins/url-open.lua +++ b/nvim/lua/dzu/plugins/url-open.lua @@ -4,7 +4,7 @@ local function config() return end url_open.setup({ - open_app = 'librewolf', + open_app = 'default', }) end