diff --git a/git/gitconfig b/git/gitconfig index 43b767a..4e84c28 100644 --- a/git/gitconfig +++ b/git/gitconfig @@ -1,6 +1,7 @@ [user] name = codepuncher email = lee.hanbury@gmail.com + signingkey = ~/.ssh/id_ed25519.pub [filter "lfs"] clean = git-lfs clean -- %f @@ -23,6 +24,12 @@ [init] defaultBranch = main +[gpg] + format = ssh + +[commit] + gpgsign = true + [push] autoSetupRemote = true diff --git a/git/users/wsl.gitconfig b/git/users/wsl.gitconfig index 4cf6bc2..68ac36a 100644 --- a/git/users/wsl.gitconfig +++ b/git/users/wsl.gitconfig @@ -1,17 +1,9 @@ [user] - name = codepuncher - email = lee.hanbury@gmail.com signingkey = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6lhgN8pvPgXJpgr8e4vo6k0nwP4mI8zgQcYMvePPBCNy8zZHS9BTKHPy/EdwNrCKX87uv0HcJeIztCShfmu7OjvasO6zgNzaNTOPxmelm7osBIuGYyZYih33ruT11eK8/RfeDh81OZGzMmez+Szk+oK1mb32rZvBPZpu2iGRFu0Yxx3jWtY+Kn8kwZX1GrfGEAfd29qoJiQli0Ma6YQhpioPgO7ybL8TCEvmkQPlCvHHpPhebwII8I2nZyGVpuIZsVleJW+fUroGOPDJ3xBcAs18YTMnQa/RDfUl0zsC6ZYa0MqnXUC6INBmNSk/hwLTmeVYDXau4DOLC8OpIaFkz [core] pager = delta sshCommand = ssh.exe -[commit] - gpgsign = true - -[gpg] - format = ssh - [gpg "ssh"] program = "/mnt/c/Users/LeeHanbury-Pickett/AppData/Local/1Password/app/8/op-ssh-sign-wsl" diff --git a/nvim/lua/keymappings.lua b/nvim/lua/keymappings.lua index dc59d9a..95d2c50 100644 --- a/nvim/lua/keymappings.lua +++ b/nvim/lua/keymappings.lua @@ -50,6 +50,17 @@ wk.register({ ['ª'] = { 'BufferLineGoToBuffer 9', '[BUFFER] Go to #9' }, ['ç'] = { 'Bdelete', '[BUFFER] Delete' }, + -- LSP + ['ca'] = { 'Lspsaga code_action', '[LSP] Code Action' }, + ['fm'] = { 'lua vim.lsp.buf.format()', '[LSP] Format' }, + ['gd'] = { 'lua vim.lsp.buf.definition()', '[LSP] Go to definition' }, + ['K'] = { 'Lspsaga hover_doc', '[LSP] Hover documentation' }, + [''] = { 'lua vim.lsp.buf.signature_help()', '[LSP] Get signature help' }, + ['rn'] = { 'Lspsaga rename', '[LSP] Rename' }, + ['gr'] = { 'lua vim.lsp.buf.references()', '[LSP] Get references' }, + ['[d'] = { 'lua vim.diagnostic.goto_prev()', '[LSP] Go to previous diagnostic' }, + [']d'] = { 'lua vim.diagnostic.goto_next()', '[LSP] Go to next diagnostic' }, + -- NvimTree [''] = { 'NvimTreeToggle', '[NVIMTREE] Toggle' }, diff --git a/nvim/lua/lsp/init.lua b/nvim/lua/lsp/init.lua index 1ec443b..a4688c3 100644 --- a/nvim/lua/lsp/init.lua +++ b/nvim/lua/lsp/init.lua @@ -3,89 +3,61 @@ if not _lspconfig then return end -local formatGroup = vim.api.nvim_create_augroup('LspFormatting', {}) -local lsp_formatting = function(bufnr) - vim.lsp.buf.format({ - bufnr = bufnr, - filter = function(client) - return client.name == 'null-ls' - end, - }) -end -local on_attach = function(client, bufnr) - local function map(...) - vim.api.nvim_buf_set_keymap(bufnr, ...) - end - - local opts = { - noremap = true, - silent = true, - } - - map('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) - map('n', 'gd', 'lua vim.lsp.buf.definition()', opts) - map('n', 'K', 'Lspsaga hover_doc', opts) - map('n', 'gi', 'lua vim.lsp.buf.implementation()', opts) - map('n', '', 'lua vim.lsp.buf.signature_help()', opts) - map('n', 'wa', 'lua vim.lsp.buf.add_workspace_folder()', opts) - map('n', 'wr', 'lua vim.lsp.buf.remove_workspace_folder()', opts) - map('n', 'wl', 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))', opts) - map('n', 'D', 'lua vim.lsp.buf.type_definition()', opts) - map('n', 'rn', 'Lspsaga rename', opts) - map('n', 'ca', 'Lspsaga code_action', opts) - map('n', 'gr', 'lua vim.lsp.buf.references()', opts) - map('n', 'e', 'lua vim.diagnostic.open_float()', opts) - map('n', '[d', 'lua vim.diagnostic.goto_prev()', opts) - map('n', ']d', 'lua vim.diagnostic.goto_next()', opts) - map('n', 'q', 'lua vim.diagnostic.setloclist()', opts) - map('n', 'f', 'lua vim.lsp.buf.format()', opts) - - if client.supports_method('textDocument/formatting') then - vim.api.nvim_clear_autocmds({ group = formatGroup, buffer = bufnr }) - vim.api.nvim_create_autocmd({ 'BufWritePre' }, { - group = formatGroup, - buffer = bufnr, - callback = function() - lsp_formatting(bufnr) - end, - }) - end -end - -local capabilities = vim.lsp.protocol.make_client_capabilities() -local _cmp_nvim_lsp, cmp_nvim_lsp = pcall(require, 'cmp_nvim_lsp') -if _cmp_nvim_lsp then - capabilities = cmp_nvim_lsp.default_capabilities() -end - +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if not client then + return + end + + ---@diagnostic disable-next-line: missing-parameter, param-type-mismatch + if client.supports_method('textDocument/formatting') then + vim.api.nvim_create_autocmd('BufWritePre', { + buffer = args.buf, + callback = function() + vim.lsp.buf.format({ bufnr = args.buf, id = client.id }) + end, + -- filter = function(client) + -- return client.name == 'null-ls' + -- end, + }) + end + end, +}) + +local capabilities = require('cmp_nvim_lsp').default_capabilities() local servers = { 'ansiblels', 'bashls', - -- 'cssls', 'dockerls', - 'eslint', + -- 'eslint', 'gopls', 'html', 'intelephense', 'jsonls', 'lemminx', 'lua_ls', - 'null_ls', 'pyright', 'rust_analyzer', 'stylelint_lsp', 'ts_ls', - 'volar', + 'vue_ls', 'yamlls', 'tailwindcss', } for _, server in pairs(servers) do local _config, config = pcall(require, 'lsp.servers.' .. server) - if not _config then - return + if _config then + vim.lsp.config(server, config(capabilities)) + vim.lsp.enable(server) + else + vim.lsp.config(server, { + capabilities = capabilities, + }) + vim.lsp.enable(server) end - - config.setup(on_attach, capabilities) end +require('lsp.servers.none_ls').setup() + return diff --git a/nvim/lua/lsp/servers/ansiblels.lua b/nvim/lua/lsp/servers/ansiblels.lua deleted file mode 100644 index 4659e9c..0000000 --- a/nvim/lua/lsp/servers/ansiblels.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').ansiblels.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/bashls.lua b/nvim/lua/lsp/servers/bashls.lua deleted file mode 100644 index 8895d6e..0000000 --- a/nvim/lua/lsp/servers/bashls.lua +++ /dev/null @@ -1,17 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').bashls.setup({ - on_attach = on_attach, - capabilities = capabilities, - filetypes = { - 'sh', - 'bash', - }, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/cssls.lua b/nvim/lua/lsp/servers/cssls.lua deleted file mode 100644 index 11c5ced..0000000 --- a/nvim/lua/lsp/servers/cssls.lua +++ /dev/null @@ -1,19 +0,0 @@ -local _M = {} ---Enable (broadcasting) snippet capability for completion --- local capabilities = vim.lsp.protocol.make_client_capabilities() --- capabilities.textDocument.completion.completionItem.snippetSupport = true - -_M.setup = function(on_attach, capabilities) - require('lspconfig').cssls.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - init_options = { - provideFormatter = false, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/dockerls.lua b/nvim/lua/lsp/servers/dockerls.lua deleted file mode 100644 index 55c733a..0000000 --- a/nvim/lua/lsp/servers/dockerls.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').dockerls.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/eslint.lua b/nvim/lua/lsp/servers/eslint.lua deleted file mode 100644 index bc7e461..0000000 --- a/nvim/lua/lsp/servers/eslint.lua +++ /dev/null @@ -1,30 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - local lspconfig = require('lspconfig') - - lspconfig.eslint.setup({ - root_dir = lspconfig.util.root_pattern('.eslintrc', '.eslintrc.js', '.eslintrc.json'), - on_attach = function(client, bufnr) - client.server_capabilities.documentFormattingProvider = true - on_attach(client, bufnr) - end, - capabilities = capabilities, - settings = { - format = { - enable = false, - }, - }, - handlers = { - ['window/showMessageRequest'] = function(_, result) - if result.message:find('ENOENT') then - return vim.NIL - end - - return vim.lsp.handlers['window/showMessageRequest'](nil, result) - end, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/gopls.lua b/nvim/lua/lsp/servers/gopls.lua deleted file mode 100644 index fbabf89..0000000 --- a/nvim/lua/lsp/servers/gopls.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').gopls.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/html.lua b/nvim/lua/lsp/servers/html.lua deleted file mode 100644 index 836a778..0000000 --- a/nvim/lua/lsp/servers/html.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').html.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/intelephense.lua b/nvim/lua/lsp/servers/intelephense.lua index c9fa9b0..2ad4314 100644 --- a/nvim/lua/lsp/servers/intelephense.lua +++ b/nvim/lua/lsp/servers/intelephense.lua @@ -1,13 +1,5 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - local _lspconfig, lspconfig = pcall(require, 'lspconfig') - if not _lspconfig then - return - end - - lspconfig.intelephense.setup({ - on_attach = on_attach, +return function(capabilities) + return { capabilities = capabilities, flags = { debounce_text_changes = 150, @@ -36,7 +28,5 @@ _M.setup = function(on_attach, capabilities) }, }, }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/jsonls.lua b/nvim/lua/lsp/servers/jsonls.lua index f3dfc1d..0f62188 100644 --- a/nvim/lua/lsp/servers/jsonls.lua +++ b/nvim/lua/lsp/servers/jsonls.lua @@ -1,8 +1,5 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').jsonls.setup({ - on_attach = on_attach, +return function(capabilities) + return { capabilities = capabilities, flags = { debounce_text_changes = 150, @@ -33,7 +30,5 @@ _M.setup = function(on_attach, capabilities) }, }, }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/lemminx.lua b/nvim/lua/lsp/servers/lemminx.lua deleted file mode 100644 index 4272b89..0000000 --- a/nvim/lua/lsp/servers/lemminx.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').lemminx.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/ltex.lua b/nvim/lua/lsp/servers/ltex.lua index 9dd8a6f..cca6f19 100644 --- a/nvim/lua/lsp/servers/ltex.lua +++ b/nvim/lua/lsp/servers/ltex.lua @@ -1,15 +1,10 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').ltex.setup({ - on_attach = on_attach, +return function(capabilities) + return { capabilities = capabilities, settings = { ltex = { language = 'en', }, }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/lua_ls.lua b/nvim/lua/lsp/servers/lua_ls.lua index f88bfbb..968d305 100644 --- a/nvim/lua/lsp/servers/lua_ls.lua +++ b/nvim/lua/lsp/servers/lua_ls.lua @@ -1,16 +1,13 @@ -local _plugin, plugin = pcall(require, 'neodev') +local _plugin, plugin = pcall(require, 'lazydev') if not _plugin then return end plugin.setup({}) -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').lua_ls.setup({ +return function(capabilities) + return { lspconfig = { - on_attach = on_attach, capabilities = capabilities, settings = { Lua = { @@ -34,7 +31,5 @@ _M.setup = function(on_attach, capabilities) debounce_text_changes = 150, }, }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/null_ls.lua b/nvim/lua/lsp/servers/none_ls.lua similarity index 68% rename from nvim/lua/lsp/servers/null_ls.lua rename to nvim/lua/lsp/servers/none_ls.lua index 7c56b02..dcf9225 100644 --- a/nvim/lua/lsp/servers/null_ls.lua +++ b/nvim/lua/lsp/servers/none_ls.lua @@ -9,27 +9,22 @@ end local formatting = plugin.builtins.formatting local diagnostics = plugin.builtins.diagnostics -local code_actions = plugin.builtins.code_actions -_M.setup = function(on_attach) +_M.setup = function(capabilities) plugin.setup({ + capabilities = capabilities, debug = true, root_dir = require('null-ls.utils').root_pattern('.git', 'package.json', 'composer.json'), sources = { - code_actions.eslint_d, - code_actions.shellcheck, + require('none-ls.code_actions.eslint_d'), diagnostics.actionlint, - -- diagnostics.ansiblelint, - diagnostics.chktex, - diagnostics.eslint_d, + require('none-ls.diagnostics.eslint_d'), diagnostics.hadolint, diagnostics.markdownlint, diagnostics.phpcs.with({ prefer_local = './vendor/bin', }), - -- diagnostics.phpmd, -- FIX: doesn't work yet. - diagnostics.shellcheck, diagnostics.stylelint.with({ prefer_local = './node_modules/stylelint/bin', }), @@ -38,7 +33,7 @@ _M.setup = function(on_attach) diagnostics.zsh, formatting.blade_formatter, - formatting.eslint_d, + require('none-ls.formatting.eslint_d'), formatting.gofmt, formatting.phpcbf.with({ prefer_local = './vendor/bin', @@ -48,16 +43,8 @@ _M.setup = function(on_attach) prefer_local = './node_modules/stylelint/bin', }), formatting.stylua, - formatting.shfmt.with({ - filetypes = { - 'sh', - 'bash', - 'zsh', - }, - }), formatting.tidy, }, - on_attach = on_attach, }) end diff --git a/nvim/lua/lsp/servers/pyright.lua b/nvim/lua/lsp/servers/pyright.lua deleted file mode 100644 index b24f707..0000000 --- a/nvim/lua/lsp/servers/pyright.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').pyright.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/rust_analyzer.lua b/nvim/lua/lsp/servers/rust_analyzer.lua deleted file mode 100644 index 1dedac8..0000000 --- a/nvim/lua/lsp/servers/rust_analyzer.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').rust_analyzer.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/stylelint_lsp.lua b/nvim/lua/lsp/servers/stylelint_lsp.lua index 81cbc03..8bcebe8 100644 --- a/nvim/lua/lsp/servers/stylelint_lsp.lua +++ b/nvim/lua/lsp/servers/stylelint_lsp.lua @@ -1,14 +1,11 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) +return function(capabilities) local filetypes = { 'sass', 'scss', 'postcss', } - require('lspconfig').stylelint_lsp.setup({ - on_attach = on_attach, + return { capabilities = capabilities, flags = { debounce_text_changes = 150, @@ -21,7 +18,5 @@ _M.setup = function(on_attach, capabilities) filetypes = filetypes, }, }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/svelte.lua b/nvim/lua/lsp/servers/svelte.lua deleted file mode 100644 index 89c6bdb..0000000 --- a/nvim/lua/lsp/servers/svelte.lua +++ /dev/null @@ -1,16 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').svelte.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - filetypes = { - 'svelte', - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/tailwindcss.lua b/nvim/lua/lsp/servers/tailwindcss.lua index 736a2d7..fab16dc 100644 --- a/nvim/lua/lsp/servers/tailwindcss.lua +++ b/nvim/lua/lsp/servers/tailwindcss.lua @@ -1,14 +1,9 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').tailwindcss.setup({ - on_attach = on_attach, +return function(capabilities) + return { capabilities = capabilities, filetypes = { 'html', 'css', }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/ts_ls.lua b/nvim/lua/lsp/servers/ts_ls.lua index 6b8927c..86693b2 100644 --- a/nvim/lua/lsp/servers/ts_ls.lua +++ b/nvim/lua/lsp/servers/ts_ls.lua @@ -1,7 +1,6 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').ts_ls.setup({ +return function(capabilities) + return { + capabilities = capabilities, init_options = { plugins = { { @@ -18,7 +17,5 @@ _M.setup = function(on_attach, capabilities) 'typescript.tsx', 'vue', }, - }) + } end - -return _M diff --git a/nvim/lua/lsp/servers/volar.lua b/nvim/lua/lsp/servers/volar.lua deleted file mode 100644 index 295f29c..0000000 --- a/nvim/lua/lsp/servers/volar.lua +++ /dev/null @@ -1,19 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - local typescript_path = vim.env.HOME .. '/.config/yarn/global/node_modules/typescript/lib' - require('lspconfig').volar.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - init_options = { - typescript = { - tsdk = typescript_path, - }, - }, - }) -end - -return _M diff --git a/nvim/lua/lsp/servers/yamlls.lua b/nvim/lua/lsp/servers/yamlls.lua deleted file mode 100644 index f1bc09a..0000000 --- a/nvim/lua/lsp/servers/yamlls.lua +++ /dev/null @@ -1,13 +0,0 @@ -local _M = {} - -_M.setup = function(on_attach, capabilities) - require('lspconfig').yamlls.setup({ - on_attach = on_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 150, - }, - }) -end - -return _M diff --git a/nvim/lua/plugins/configs/cmp.lua b/nvim/lua/plugins/configs/cmp.lua index 31d29ef..d1ddd81 100644 --- a/nvim/lua/plugins/configs/cmp.lua +++ b/nvim/lua/plugins/configs/cmp.lua @@ -62,6 +62,7 @@ cmp.setup({ { name = 'nvim_lsp', group_index = 2 }, { name = 'path', group_index = 2 }, { name = 'luasnip', group_index = 2 }, + { name = 'lazydev', group_index = 2 }, -- { name = 'emoji' }, }, { { name = 'buffer' }, diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua index 40ff6a8..98a1007 100644 --- a/nvim/lua/plugins/init.lua +++ b/nvim/lua/plugins/init.lua @@ -71,7 +71,7 @@ require('lazy').setup({ 'nvim-tree/nvim-web-devicons', }, config = function() - require('lsp-progress').setup() + require('lsp-progress').setup({}) end, }, { @@ -111,6 +111,7 @@ require('lazy').setup({ local notify = require('notify') vim.notify = notify notify.setup({ + merge_duplicates = false, background_colour = '#000000', }) end, @@ -141,11 +142,24 @@ require('lazy').setup({ -- Language Server Protocol { - 'folke/neodev.nvim', - 'neovim/nvim-lspconfig', { - 'jose-elias-alvarez/null-ls.nvim', + 'neovim/nvim-lspconfig', dependencies = { + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- See the configuration section for more details + -- Load luvit types when the `vim.uv` word is found + { path = '${3rd}/luv/library', words = { 'vim%.uv' } }, + }, + }, + }, + }, + { + 'nvimtools/none-ls.nvim', + dependencies = { + 'nvimtools/none-ls-extras.nvim', 'nvim-lua/plenary.nvim', }, }, @@ -247,7 +261,7 @@ require('lazy').setup({ require('copilot_cmp').setup({ method = 'getCompletionsCycling', format = { - before = function(entry, vim_item) + before = function(_, vim_item) vim_item.kind = require('lspkind').presets.default[vim_item.kind] .. ' Copilot' return vim_item end, @@ -266,6 +280,13 @@ require('lazy').setup({ end, }, }, + opts = function(_, opts) + opts.sources = opts.sources or {} + table.insert(opts.sources, { + name = 'lazydev', + group_index = 0, -- set group index to 0 to skip loading LuaLS completions + }) + end, }, { 'windwp/nvim-autopairs',