From 9b83bd2d1bb67fe6e7936eab6e5846b1bd78c38d Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:04:31 +0200 Subject: Rewrite that also includes null-ls --- lua/plugins/lsp.lua | 455 +++++++++++++++++++--------------------------------- 1 file changed, 169 insertions(+), 286 deletions(-) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index ea8a377..2cb6e4b 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -1,52 +1,57 @@ --- Shorten Function Names -local fn = vim.fn -local keymap = vim.keymap -local mods = require("user.mods") - - --- Setup mason so it can manage external tooling require('mason').setup() +local lspconfig = require 'lspconfig' +local null_ls = require 'null-ls' --- Mason-lspconfig -require("mason-lspconfig").setup({ - ensure_installed = { - "clangd", - "lua_ls", - "pylsp", - "pyright", - "jedi_language_server", - "rust_analyzer", - "bashls", - "vimls" +local keymap = vim.keymap +local cmd = vim.cmd + +local border = { + { '🭽', 'FloatBorder' }, + { '▔', 'FloatBorder' }, + { '🭾', 'FloatBorder' }, + { '▕', 'FloatBorder' }, + { '🭿', 'FloatBorder' }, + { '▁', 'FloatBorder' }, + { '🭼', 'FloatBorder' }, + { '▏', 'FloatBorder' }, +} - }, - ui = { - icons = { - package_pending = " ", - package_installed = " ", - package_uninstalled = " ﮊ", - }, - keymaps = { - toggle_server_expand = "", - install_server = "i", - update_server = "u", - check_server_version = "c", - update_all_servers = "U", - check_outdated_servers = "C", - uninstall_server = "X", - cancel_installation = "", +local signs = { Error = " ", Warn = "▲", Info = "􀅳", Hint = "⚑" } +for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) +end + +vim.diagnostic.config({ + underline = false, + signs = true, + virtual_text = false, + virtual_lines = { only_current_line = true }, + float = { + show_header = true, + source = 'if_many', + --border = 'rounded', + border = border, + focusable = true, }, - }, - max_concurrent_installers = 10, - automatic_installation = true, + update_in_insert = false, -- default to false + severity_sort = false, -- default to false +}) + +vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + underline = false, + virtual_text = false, + signs = true, + update_in_insert = false, }) +vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) +vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" }) + -- Use an on_attach function to only map the following keys after the language server attaches to the current buffer local on_attach = function(client, bufnr) -- Enable completion triggered by vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Shorten function names for mappings local map = function(mode, l, r, opts) opts = opts or {} opts.silent = true @@ -80,84 +85,14 @@ local on_attach = function(client, bufnr) map("n", "wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) - --map("n", "q", function() - -- vim.diagnostic.setqflist({ open = true }) - --end) - --map("n", "q", "lua vim.diagnostic.setloclist()") - --map("n", "gk", "Lspsaga diagnostic_jump_prev") - --map("n", "gj", "Lspsaga diagnostic_jump_next") - - -- Set some key bindings conditional on server capabilities - if client.server_capabilities.documentFormattingProvider then - map("n", "f", vim.lsp.buf.format) - end - - -- Add rust specific keymappings - if client.name == "rust_analyzer" then - map("n", "rr", "RustRunnables") - map("n", "ra", "RustHoverAction") - end - - -- this part is telling Neovim to use the lsp server - --local servers = { 'pyright', 'tsserver', 'jdtls' } - --for _, lsp in pairs(servers) do - -- require('lspconfig')[lsp].setup { - -- on_attach = on_attach, - -- flags = { - -- debounce_text_changes = 150, - -- } - -- } - --end - -- Add the following to your on_attach (this allows checking server capabilities to avoid calling invalid commands.) - -- Highlight symbol under cursor - if client.server_capabilities.document_highlight then - vim.cmd [[ - hi! LspReferenceRead cterm=bold ctermbg=red guibg=LightYellow - hi! LspReferenceText cterm=bold ctermbg=red guibg=LightYellow - hi! LspReferenceWrite cterm=bold ctermbg=red guibg=LightYellow - ]] - vim.api.nvim_create_augroup('lsp_document_highlight', { - clear = false - }) - vim.api.nvim_clear_autocmds({ - buffer = bufnr, - group = 'lsp_document_highlight', - }) - --vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { - -- group = 'lsp_document_highlight', - -- buffer = bufnr, - -- callback = vim.lsp.buf.document_highlight, - --}) - --vim.api.nvim_create_autocmd("CursorHold", { - -- buffer = bufnr, - -- callback = function() - -- local term_opts = { - -- focusable = false, - -- --close_events = { "BufLeave", "CursorMoved", "InsertEnter", "FocusLost" }, - -- close_events = { "BufLeave" }, - -- border = 'rounded', - -- --source = 'always', - -- --prefix = ' ', - -- --scope = 'cursor', - -- } - -- vim.diagnostic.open_float(nil, term_opts) - -- end - --}) - vim.api.nvim_create_autocmd('CursorMoved', { - group = 'lsp_document_highlight', - buffer = bufnr, - callback = vim.lsp.buf.clear_references, - --callback = ":silent! lua vim.lsp.buf.clear_references()", - - }) + -- TODO: Use the nicer new API for autocommands + cmd 'augroup lsp_aucmds' + if client.server_capabilities.documentHighlightProvider then + cmd 'au CursorHold lua vim.lsp.buf.document_highlight()' + cmd 'au CursorMoved lua vim.lsp.buf.clear_references()' end - - if vim.g.logging_level == "debug" then - local msg = string.format("Language server %s started!", client.name) - vim.notify(msg, vim.log.levels.DEBUG, { title = "Server?" }) - end - + cmd 'augroup END' end -- Toggle diagnostics visibility @@ -184,81 +119,47 @@ augroup END -- Suppress error messages from lang servers vim.lsp.set_log_level("debug") local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) +capabilities = require("cmp_nvim_lsp").default_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true capabilities.offsetEncoding = { "utf-16" } -local lspconfig = require("lspconfig") - -if mods.executable("pylsp") then - lspconfig.pylsp.setup({ - settings = { - pylsp = { - plugins = { - pylint = { enabled = true, executable = "pylint" }, - pyflakes = { enabled = false }, - pycodestyle = { enabled = false }, - jedi_completion = { fuzzy = true }, - pyls_isort = { enabled = true }, - pylsp_mypy = { enabled = true }, - }, - }, - }, - flags = { - debounce_text_changes = 200, - }, - capabilities = capabilities, - }) -else - vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Server?" }) -end - -if mods.executable('pyright') then - lspconfig.pyright.setup{ - on_attach = on_attach, - capabilities = capabilities - } -else - vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Server?'}) +local function prefer_null_ls_fmt(client) + client.server_capabilities.documentHighlightProvider = false + client.server_capabilities.documentFormattingProvider = false + on_attach(client) end -if mods.executable("clangd") then - lspconfig.clangd.setup({ - on_attach = on_attach, - capabilities = capabilities, - filetypes = { "c", "cpp", "cc" }, - flags = { - debounce_text_changes = 500, - }, - }) -else - vim.notify("clangd not found!", vim.log.levels.WARN, { title = "Server?" }) -end - --- Set up vim-language-server -if mods.executable("vim-language-server") then - lspconfig.vimls.setup({ - on_attach = on_attach, - flags = { - debounce_text_changes = 500, - }, - capabilities = capabilities, - }) -else - vim.notify("vim-language-server not found!", vim.log.levels.WARN, { title = "Server?" }) -end - --- Set up bash-language-server -if mods.executable("bash-language-server") then - lspconfig.bashls.setup({ - on_attach = on_attach, - capabilities = capabilities, - debounce_text_changes = 500, - }) -end - -if mods.executable("lua-language-server") then - lspconfig.lua_ls.setup({ +local servers = { + bashls = {}, + cssls = { + filetypes = { 'css', 'scss', 'less', 'sass' }, + root_dir = lspconfig.util.root_pattern('package.json', '.git'), + }, + -- ghcide = {}, + html = {}, + jsonls = { prefer_null_ls = true, cmd = { '--stdio' } }, + julials = { + on_new_config = function(new_config, _) + local julia = vim.fn.expand '~/.julia/environments/nvim-lspconfig/bin/julia' + if lspconfig.util.path.is_file(julia) then + new_config.cmd[1] = julia + end + end, + settings = { julia = { format = { indent = 2 } } }, + }, + pyright = { settings = { python = { formatting = { provider = 'yapf' }, linting = { pytypeEnabled = true } } } }, + rust_analyzer = { + settings = { + ['rust-analyzer'] = { + cargo = { allFeatures = true }, + checkOnSave = { + command = 'clippy', + extraArgs = { '--no-deps' }, + }, + }, + }, + }, + lua_ls = ({ on_attach = on_attach, capabilities = capabilities, debounce_text_changes = 500, @@ -279,112 +180,94 @@ if mods.executable("lua-language-server") then }, }, }, - }) -end - - -if mods.executable("rust-language-server") then -require("lspconfig").rust_analyzer.setup{ - cmd = { "rustup", "run", "nightly", "rust-analyzer" }, - on_attach = on_attach, - flags = { - debounce_text_changes = 500, - }, - --[[ - settings = { - rust = { - unstable_features = true, - build_on_save = false, - all_features = true, - }, - } - --]] + }), + tsserver = { capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), + on_attach = function(client) + client.server_capabilities.document_formatting = false + client.server_capabilities.document_range_formatting = false + end, + filetypes = { + 'javascript', + 'javascriptreact', + 'javascript.jsx', + 'typescript', + 'typescriptreact', + 'typescript.tsx' + }, }, + vimls = {}, } -end -local opts = { - tools = { - runnables = { - use_telescope = true, - }, - inlay_hints = { - auto = true, - show_parameter_hints = false, - parameter_hints_prefix = "", - other_hints_prefix = "", - }, - }, - -- all the opts to send to nvim-lspconfig - -- these override the defaults set by rust-tools.nvim - -- see https://github.com/neovim/nvim-lspconfig/blob/master/CONFIG.md#rust_analyzer - server = { - -- on_attach is a callback called when the language server attachs to the buffer - on_attach = on_attach, - settings = { - -- to enable rust-analyzer settings visit: - -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc - ["rust-analyzer"] = { - -- enable clippy on save - checkOnSave = { - command = "clippy", - }, - }, - }, - }, -} -require('rust-tools').setup(opts) -vim.diagnostic.config({ - underline = false, - signs = true, - virtual_text = false, - virtual_lines = { only_current_line = true }, - float = { - show_header = true, - source = 'if_many', - border = 'rounded', - focusable = true, - }, - update_in_insert = false, -- default to false - severity_sort = false, -- default to false -}) - -vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { - underline = false, - virtual_text = false, - signs = true, - update_in_insert = false, -}) -vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "rounded" }) -vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "rounded" }) - - --- The following settings works with the bleeding edge neovim. --- See https://github.com/neovim/neovim/pull/13998. -vim.lsp.handlers["textDocument/hover"] = vim.lsp.with( - vim.lsp.handlers.hover, { - border = { - {"┌", "Normal"}, - {"─", "Normal"}, - {"┐", "Normal"}, - {"│", "Normal"}, - {"┘", "Normal"}, - {"─", "Normal"}, - {"└", "Normal"}, - {"│", "Normal"} - } -}) +for server, config in pairs(servers) do + if config.prefer_null_ls then + if config.on_attach then + local old_on_attach = config.on_attach + config.on_attach = function(client, bufnr) + old_on_attach(client, bufnr) + prefer_null_ls_fmt(client) + end + else + config.on_attach = prefer_null_ls_fmt + end + elseif not config.on_attach then + config.on_attach = on_attach + end --- this is for diagnositcs signs on the line number column --- use this to beautify the plain E W signs to more fun ones --- !important nerdfonts needs to be setup for this to work in your terminal ---local signs = { Error = "✘", Warn = "▲", Info = "􀅳", Hint = "⚑" } -local signs = { Error = " ", Warn = "▲", Info = "􀅳", Hint = "⚑" } -for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - --vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) + lspconfig[server].setup(config) end +-- null_ls setup +local builtins = null_ls.builtins +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + +null_ls.setup { + sources = { + builtins.diagnostics.chktex, + --null_ls.builtins.code_actions.eslint_d, + --null_ls.builtins.diagnostics.eslint_d, + --null_ls.builtins.formatting.eslint_d, + -- null_ls.builtins.diagnostics.cppcheck, + -- null_ls.builtins.diagnostics.proselint, + -- null_ls.builtins.diagnostics.pylint, + builtins.diagnostics.selene, + builtins.diagnostics.shellcheck, + builtins.diagnostics.teal, + -- null_ls.builtins.diagnostics.vale, + builtins.diagnostics.vint, + builtins.diagnostics.tidy, + -- null_ls.builtins.diagnostics.write_good.with { filetypes = { 'markdown', 'tex' } }, + builtins.formatting.clang_format, + -- null_ls.builtins.formatting.cmake_format, + builtins.formatting.isort, + builtins.formatting.htmlbeautifier, + -- null_ls.builtins.formatting.prettier, + builtins.formatting.prettier.with({ + filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", + "css", "scss", "less", "graphql", "vue", "svelte" }, + extra_args = { "--single-quote", "--tab-width 4", "--print-width 200" }, + }), + --null_ls.builtins.formatting.prettierd, + builtins.formatting.rustfmt, + builtins.formatting.shfmt, + builtins.formatting.stylua, + builtins.formatting.trim_whitespace, + builtins.formatting.yapf, + -- null_ls.builtins.formatting.black + builtins.code_actions.gitsigns, + -- null_ls.builtins.code_actions.refactoring.with { filetypes = { 'javascript', 'typescript', 'lua', 'python', 'c', 'cpp' } }, + }, + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end + }) + end + end, +} -- cgit v1.2.3 From 1540d12c76e8a991ab3aad50ef82acb9aa6f0323 Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:04:48 +0200 Subject: Moved null-ls to lsp.lua --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 6bee2e3..214e5d8 100644 --- a/init.lua +++ b/init.lua @@ -80,7 +80,7 @@ local modules = { --"plugins.git", "plugins.gitsigns", "plugins.neoscroll", - "plugins.null-ls", + --"plugins.null-ls", "plugins.lsp", "plugins.goto-preview", "plugins.autopairs", -- cgit v1.2.3 From 3453a302bfbc0396b958285b11cb20187c903a3b Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:05:07 +0200 Subject: Added formatter.nvim --- lua/user/pack.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/user/pack.lua b/lua/user/pack.lua index 50ed41e..c7c8378 100644 --- a/lua/user/pack.lua +++ b/lua/user/pack.lua @@ -88,6 +88,7 @@ return packer.startup(function(use) }) -- Linters/Formatters + use('mhartington/formatter.nvim') use("jay-babu/mason-null-ls.nvim") --use({"jayp0521/mason-null-ls.nvim", -- config = function() -- cgit v1.2.3 From ccb2a1010108ff040ad1e13ba13c9da033afa35c Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:05:24 +0200 Subject: Improved auto formatting --- lua/user/mods.lua | 62 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 29 deletions(-) diff --git a/lua/user/mods.lua b/lua/user/mods.lua index 704ffdf..1973868 100644 --- a/lua/user/mods.lua +++ b/lua/user/mods.lua @@ -31,20 +31,20 @@ end -- Format on save local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) require("null-ls").setup({ - -- you can reuse a shared lspconfig on_attach callback here - on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead - vim.lsp.buf.formatting_seq_sync() - end, - }) - end - end, + -- you can reuse a shared lspconfig on_attach callback here + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead + vim.lsp.buf.formatting_seq_sync() + end, + }) + end + end, }) @@ -73,7 +73,6 @@ function M.may_create_dir(dir) end end - -------------------------------------------------- --- Toggle cmp completion @@ -122,26 +121,24 @@ function M.add_pack(name) return status end - -------------------------------------------------- --- Toggle autopairs on/off (requires "windwp/nvim-autopairs") function M.Toggle_autopairs() - local ok, autopairs = pcall(require, "nvim-autopairs") - if ok then - if autopairs.state.disabled then - autopairs.enable() - print("autopairs on") - else - autopairs.disable() - print("autopairs off") - end - else - print("autopairs not available") - end + local ok, autopairs = pcall(require, "nvim-autopairs") + if ok then + if autopairs.state.disabled then + autopairs.enable() + print("autopairs on") + else + autopairs.disable() + print("autopairs off") + end + else + print("autopairs not available") + end end - -------------------------------------------------- --- Make vim-rooter message disappear after making it's changes @@ -199,6 +196,7 @@ function M.Set_git_env_vars() end end end + vim.cmd [[augroup my_git_env_vars]] vim.cmd [[ autocmd!]] vim.cmd [[ autocmd BufEnter * lua require('user.mods').Set_git_env_vars()]] @@ -207,4 +205,10 @@ vim.cmd [[augroup END]] -------------------------------------------------- +vim.cmd [[autocmd BufWritePre lua vim.lsp.buf.format()]] +--vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]] + +-------------------------------------------------- + + return M -- cgit v1.2.3 From 0987df01be5e72a4590ccd0cd5e18bd5acf6f811 Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:05:54 +0200 Subject: Commented out deprecated view.mappings.list --- lua/plugins/nvim-tree.lua | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lua/plugins/nvim-tree.lua b/lua/plugins/nvim-tree.lua index c950357..e6cf73c 100644 --- a/lua/plugins/nvim-tree.lua +++ b/lua/plugins/nvim-tree.lua @@ -65,13 +65,13 @@ nvim_tree.setup({ width = 30, --height = 30, side = "left", - mappings = { - list = { - { key = { "l", "", "o" }, cb = tree_cb("edit") }, - { key = "h", cb = tree_cb("close_node") }, - { key = "v", cb = tree_cb("vsplit") }, - { key = "u", action = "dir_up" }, - }, - }, + --mappings = { + -- list = { + -- { key = { "l", "", "o" }, cb = tree_cb("edit") }, + -- { key = "h", cb = tree_cb("close_node") }, + -- { key = "v", cb = tree_cb("vsplit") }, + -- { key = "u", action = "dir_up" }, + -- }, + --}, }, }) -- cgit v1.2.3 From 0e5a57307477550b2879507b827e80b2dd03d139 Mon Sep 17 00:00:00 2001 From: srdusr Date: Fri, 21 Apr 2023 23:06:36 +0200 Subject: Working on formatting html files automatically --- lua/plugins/null-ls.lua | 50 ++++++++++++++++++++++++------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/lua/plugins/null-ls.lua b/lua/plugins/null-ls.lua index 2f4e898..0ab0af8 100644 --- a/lua/plugins/null-ls.lua +++ b/lua/plugins/null-ls.lua @@ -24,20 +24,21 @@ local sources = { builtins.formatting.clang_format, builtins.formatting.rustfmt, builtins.formatting.sql_formatter, - --builtins.formatting.prettierd.with { - -- filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", "css", "scss", "less", "graphql", "vue", "svelte" }, - -- condition = function(utils) - -- return utils.root_has_file ".prettierrc" or utils.root_has_file ".prettierrc.js" or utils.root_has_file ".prettierrc.json" or utils.root_has_file "prettier.config.js" or utils.root_has_file "prettier.config.cjs" - -- end, - --}, - builtins.formatting.prettier.with({ -- markdown, html/js formatting + builtins.formatting.prettierd.with({ filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", "css", "scss", "less", "graphql", "vue", "svelte" }, }), + builtins.formatting.prettier.with({ + -- markdown, html/js formatting + filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", + "css", "scss", "less", "graphql", "vue", "svelte" }, + extra_args = { "--single-quote", "--tab-width 4", "--print-width 200" }, + }), builtins.diagnostics.dotenv_linter, - builtins.diagnostics.shellcheck.with({ -- shell script diagnostics + builtins.diagnostics.shellcheck.with({ + -- shell script diagnostics diagnostic_config = { - -- see :help vim.diagnostic.config() + -- see :help vim.diagnostic.config() underline = true, virtual_text = false, signs = true, @@ -45,8 +46,8 @@ local sources = { severity_sort = true, }, diagnostics_format = "[#{c}] #{m} (#{s})", - -- this will run every time the source runs, - -- so you should prefer caching results if possible + -- this will run every time the source runs, + -- so you should prefer caching results if possible }), builtins.diagnostics.eslint_d.with(eslint_opts), builtins.diagnostics.todo_comments, @@ -65,27 +66,24 @@ local M = {} M.setup = function(on_attach) local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - null_ls.setup { + null_ls.setup({ sources = sources, debug = false, on_attach = function(client, bufnr) - on_attach(client, bufnr) -- Format on save - -- vim.cmd [[autocmd BufWritePost lua vim.lsp.buf.formatting()]] - -- if client.supports_method "textDocument/formatting" then - -- vim.api.nvim_clear_autocmds { group = augroup, buffer = bufnr } - -- vim.api.nvim_create_autocmd("BufWritePre", { - -- group = augroup, - -- buffer = bufnr, - -- callback = function() - -- -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead - -- vim.lsp.buf.format { bufnr = bufnr } - -- end, - -- }) - -- end + if client.supports_method "textDocument/formatting" then + vim.api.nvim_clear_autocmds { group = augroup, buffer = bufnr } + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end + }) + end end, - } + }) end return M -- cgit v1.2.3 From 1ee717e085304ec115844d781317d9cc6285ecd7 Mon Sep 17 00:00:00 2001 From: srdusr Date: Sat, 22 Apr 2023 22:27:02 +0200 Subject: Set line number as transparent --- lua/plugins/colorscheme.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lua/plugins/colorscheme.lua b/lua/plugins/colorscheme.lua index 346bc4a..20947d4 100644 --- a/lua/plugins/colorscheme.lua +++ b/lua/plugins/colorscheme.lua @@ -4,19 +4,25 @@ local colorscheme = "nightfly" local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) if not status_ok then - vim.notify("colorscheme " .. colorscheme .. " not found!") - return + vim.notify("colorscheme " .. colorscheme .. " not found!") + return end vim.api.nvim_command("syntax on") vim.api.nvim_command("highlight Normal guibg=none") vim.api.nvim_command("highlight SignColumn guibg=none") +--vim.api.nvim_command("highlight FoldColumn guibg=none") +vim.api.nvim_command("highlight CursorLineSign guibg=none ctermbg=NONE") vim.api.nvim_command("highlight TabLine guibg=#333842 gui=bold") vim.api.nvim_command("highlight Title guibg=none gui=bold") vim.api.nvim_command("highlight TabLineSel guibg=#333842 gui=bold") vim.api.nvim_command("highlight TabLineFill guibg=none gui=bold") vim.api.nvim_command("highlight WinBar guibg=none gui=bold") vim.api.nvim_command("highlight NormalFloat guibg=none") +vim.api.nvim_command("highlight LineNr guibg=none") +vim.api.nvim_command("highlight CursorLineSign guibg=none ctermbg=NONE") +--vim.api.nvim_command("highlight SignColumn guifg=none guibg=none cterm=NONE ctermfg=none ctermbg=NONE gui=NONE") +--vim.api.nvim_command("highlight ColorColumn guifg=none guibg=none cterm=NONE ctermfg=none ctermbg=NONE gui=NONE") --vim.api.nvim_command("highlight TabLineSel guibg=none guifg=none gui=bold") --vim.api.nvim_command("highlight TabLineNC guibg=none gui=bold") --vim.api.nvim_command("highlight StatusLine guibg=#333842 gui=bold") @@ -27,13 +33,13 @@ vim.api.nvim_command("highlight NormalFloat guibg=none") --vim.api.nvim_command("highlight winblend guibg=none") -- Set different window separator colorscheme -vim.cmd[[ +vim.cmd [[ au WinEnter * setl winhl=WinSeparator:WinSeparatorA au WinLeave * setl winhl=WinSeparator:WinSeparator ]] require("notify").setup({ - background_colour = "#000000", + background_colour = "#000000", }) -- Custom colorscheme -- cgit v1.2.3 From 753ed387c7993058e08c97acce3406c39ce90885 Mon Sep 17 00:00:00 2001 From: srdusr Date: Sun, 23 Apr 2023 21:47:23 +0200 Subject: Installed intelephense and php formatting tools --- lua/plugins/lsp.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 2cb6e4b..954fb87 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -138,6 +138,7 @@ local servers = { -- ghcide = {}, html = {}, jsonls = { prefer_null_ls = true, cmd = { '--stdio' } }, + intelephense = {}, julials = { on_new_config = function(new_config, _) local julia = vim.fn.expand '~/.julia/environments/nvim-lspconfig/bin/julia' @@ -237,6 +238,8 @@ null_ls.setup { -- null_ls.builtins.diagnostics.vale, builtins.diagnostics.vint, builtins.diagnostics.tidy, + builtins.diagnostics.php, + builtins.diagnostics.phpcs, -- null_ls.builtins.diagnostics.write_good.with { filetypes = { 'markdown', 'tex' } }, builtins.formatting.clang_format, -- null_ls.builtins.formatting.cmake_format, -- cgit v1.2.3 From a12c1cc6d6b62f1c6a491777be4d7373a239ff8f Mon Sep 17 00:00:00 2001 From: srdusr Date: Sun, 23 Apr 2023 21:55:24 +0200 Subject: Add asm_lsp --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 954fb87..644ebe5 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -130,6 +130,7 @@ local function prefer_null_ls_fmt(client) end local servers = { + asm_lsp = {}, bashls = {}, cssls = { filetypes = { 'css', 'scss', 'less', 'sass' }, -- cgit v1.2.3 From 84d496fd4572ba51d759111de651a7fd268f02bb Mon Sep 17 00:00:00 2001 From: srdusr Date: Sun, 23 Apr 2023 21:57:06 +0200 Subject: Add clangd --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 644ebe5..f5c197f 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -132,6 +132,7 @@ end local servers = { asm_lsp = {}, bashls = {}, + clangd = {}, cssls = { filetypes = { 'css', 'scss', 'less', 'sass' }, root_dir = lspconfig.util.root_pattern('package.json', '.git'), -- cgit v1.2.3 From 265eca214f91dea8144627cc752461e8995d1f90 Mon Sep 17 00:00:00 2001 From: srdusr Date: Sun, 23 Apr 2023 21:59:02 +0200 Subject: Add sqlls --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index f5c197f..a2c472c 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -184,6 +184,7 @@ local servers = { }, }, }), + sqlls = {}, tsserver = { capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()), on_attach = function(client) client.server_capabilities.document_formatting = false -- cgit v1.2.3 From b1a898fbde1b5e05435a7c6d51659075ad25ed6c Mon Sep 17 00:00:00 2001 From: srdusr Date: Sun, 23 Apr 2023 22:00:08 +0200 Subject: Add yamlls --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index a2c472c..3574392 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -199,6 +199,7 @@ local servers = { 'typescript.tsx' }, }, vimls = {}, + yamlls = {}, } -- cgit v1.2.3 From bcaacfd647f17914bcf4eced2ec63824ea7c93a4 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:32:01 +0200 Subject: Add shellharden and options for shfmt (null-ls) --- lua/plugins/lsp.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 3574392..60d78c8 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -236,8 +236,18 @@ null_ls.setup { -- null_ls.builtins.diagnostics.cppcheck, -- null_ls.builtins.diagnostics.proselint, -- null_ls.builtins.diagnostics.pylint, - builtins.diagnostics.selene, - builtins.diagnostics.shellcheck, + --builtins.diagnostics.selene, + builtins.formatting.shfmt.with({ + filetypes = { "bash", "zsh", "sh" }, + extra_args = { "-i", "2", "-ci" }, + }), + --builtins.diagnostics.shellcheck, + builtins.formatting.shellharden, + builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } }, + builtins.formatting.clang_format, + builtins.formatting.rustfmt, + builtins.formatting.sql_formatter, + builtins.diagnostics.teal, -- null_ls.builtins.diagnostics.vale, builtins.diagnostics.vint, @@ -245,7 +255,6 @@ null_ls.setup { builtins.diagnostics.php, builtins.diagnostics.phpcs, -- null_ls.builtins.diagnostics.write_good.with { filetypes = { 'markdown', 'tex' } }, - builtins.formatting.clang_format, -- null_ls.builtins.formatting.cmake_format, builtins.formatting.isort, builtins.formatting.htmlbeautifier, @@ -257,7 +266,6 @@ null_ls.setup { }), --null_ls.builtins.formatting.prettierd, builtins.formatting.rustfmt, - builtins.formatting.shfmt, builtins.formatting.stylua, builtins.formatting.trim_whitespace, builtins.formatting.yapf, -- cgit v1.2.3 From 5e5061793e94ec9035fb94cfaf6c7733f2a6f765 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:32:52 +0200 Subject: Add builtins.diagnostics.dotenv_linter for null-ls --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 60d78c8..778ae94 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -241,6 +241,7 @@ null_ls.setup { filetypes = { "bash", "zsh", "sh" }, extra_args = { "-i", "2", "-ci" }, }), + builtins.diagnostics.dotenv_linter, --builtins.diagnostics.shellcheck, builtins.formatting.shellharden, builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } }, -- cgit v1.2.3 From b8394e6e469c542a73770c97f9de9e715f3be590 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:33:53 +0200 Subject: Add shellcheck with options for null-ls --- lua/plugins/lsp.lua | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 778ae94..cb56d61 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -242,7 +242,20 @@ null_ls.setup { extra_args = { "-i", "2", "-ci" }, }), builtins.diagnostics.dotenv_linter, - --builtins.diagnostics.shellcheck, + builtins.diagnostics.shellcheck.with({ + -- shell script diagnostics + diagnostic_config = { + -- see :help vim.diagnostic.config() + underline = true, + virtual_text = false, + signs = true, + update_in_insert = false, + severity_sort = true, + }, + diagnostics_format = "[#{c}] #{m} (#{s})", + -- this will run every time the source runs, + -- so you should prefer caching results if possible + }), builtins.formatting.shellharden, builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } }, builtins.formatting.clang_format, -- cgit v1.2.3 From 004bfda917611da7d5fa47c8d4ae677e451eb9d9 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:34:33 +0200 Subject: Add builtins.diagnostics.todo_comments --- lua/plugins/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index cb56d61..9d5ae9c 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -261,6 +261,7 @@ null_ls.setup { builtins.formatting.clang_format, builtins.formatting.rustfmt, builtins.formatting.sql_formatter, + builtins.diagnostics.todo_comments, builtins.diagnostics.teal, -- null_ls.builtins.diagnostics.vale, -- cgit v1.2.3 From f43b0dba14ac6a6d45f3de3870123e8e6cb6c9cd Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:36:56 +0200 Subject: Reformatted null-ls sections by seperating diagnostics, formatting and code actions --- lua/plugins/lsp.lua | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 9d5ae9c..a8d881e 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -229,6 +229,7 @@ local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) null_ls.setup { sources = { + -- Diagnostics builtins.diagnostics.chktex, --null_ls.builtins.code_actions.eslint_d, --null_ls.builtins.diagnostics.eslint_d, @@ -237,10 +238,6 @@ null_ls.setup { -- null_ls.builtins.diagnostics.proselint, -- null_ls.builtins.diagnostics.pylint, --builtins.diagnostics.selene, - builtins.formatting.shfmt.with({ - filetypes = { "bash", "zsh", "sh" }, - extra_args = { "-i", "2", "-ci" }, - }), builtins.diagnostics.dotenv_linter, builtins.diagnostics.shellcheck.with({ -- shell script diagnostics @@ -256,13 +253,7 @@ null_ls.setup { -- this will run every time the source runs, -- so you should prefer caching results if possible }), - builtins.formatting.shellharden, - builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } }, - builtins.formatting.clang_format, - builtins.formatting.rustfmt, - builtins.formatting.sql_formatter, builtins.diagnostics.todo_comments, - builtins.diagnostics.teal, -- null_ls.builtins.diagnostics.vale, builtins.diagnostics.vint, @@ -270,6 +261,19 @@ null_ls.setup { builtins.diagnostics.php, builtins.diagnostics.phpcs, -- null_ls.builtins.diagnostics.write_good.with { filetypes = { 'markdown', 'tex' } }, + + + -- Formatting + builtins.formatting.shfmt.with({ + filetypes = { "bash", "zsh", "sh" }, + extra_args = { "-i", "2", "-ci" }, + }), + builtins.formatting.shellharden, + builtins.formatting.trim_whitespace.with { filetypes = { "tmux", "teal", "zsh" } }, + builtins.formatting.clang_format, + builtins.formatting.rustfmt, + builtins.formatting.sql_formatter, + -- null_ls.builtins.formatting.cmake_format, builtins.formatting.isort, builtins.formatting.htmlbeautifier, @@ -285,6 +289,9 @@ null_ls.setup { builtins.formatting.trim_whitespace, builtins.formatting.yapf, -- null_ls.builtins.formatting.black + + + -- Code Actions builtins.code_actions.gitsigns, -- null_ls.builtins.code_actions.refactoring.with { filetypes = { 'javascript', 'typescript', 'lua', 'python', 'c', 'cpp' } }, }, -- cgit v1.2.3 From 026ed2e0228f54eada41d14c6d243d16712a9586 Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:38:26 +0200 Subject: Add a few code_actions for null-ls and Hover section --- lua/plugins/lsp.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index a8d881e..5c19586 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -292,8 +292,16 @@ null_ls.setup { -- Code Actions - builtins.code_actions.gitsigns, + builtins.code_actions.shellcheck, -- shell script code actions + --builtins.code_actions.eslint_d.with(eslint_opts), -- null_ls.builtins.code_actions.refactoring.with { filetypes = { 'javascript', 'typescript', 'lua', 'python', 'c', 'cpp' } }, + builtins.code_actions.gitsigns, + builtins.code_actions.gitrebase, + + + -- Hover + builtins.hover.dictionary, + builtins.hover.printenv, }, on_attach = function(client, bufnr) if client.supports_method("textDocument/formatting") then -- cgit v1.2.3 From f0370798af5e0efe635a621777d05466945f880d Mon Sep 17 00:00:00 2001 From: srdusr Date: Mon, 24 Apr 2023 21:40:42 +0200 Subject: Add commented out eslint_opts just in case --- lua/plugins/lsp.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 5c19586..8fbc03f 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -227,6 +227,14 @@ end local builtins = null_ls.builtins local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) +--local eslint_opts = { +-- -- condition = function(utils) +-- -- return utils.root_has_file ".eslintrc.js" or utils.root_has_file ".eslintrc" or utils.root_has_file ".eslintrc.json" +-- -- end, +-- -- diagnostics_format = "#{m} [#{c}]", +-- prefer_local = true, +--} + null_ls.setup { sources = { -- Diagnostics -- cgit v1.2.3