diff options
Diffstat (limited to 'nvim/.config')
-rw-r--r-- | nvim/.config/nvim/lazy-lock.json | 51 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/plugins/telescope.lua | 1 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp.lua | 89 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/configs.lua | 8 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua | 50 |
5 files changed, 101 insertions, 98 deletions
diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 9c6e088..06e792f 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -1,69 +1,68 @@ { "Comment.nvim": { "branch": "master", "commit": "e51f2b142d88bb666dcaa77d93a07f4b419aca70" }, "LuaSnip": { "branch": "master", "commit": "500981ff6cefc7343e3959ef0f939bd0bfd49ba9" }, - "SchemaStore.nvim": { "branch": "main", "commit": "2d0b27ad28443cb700835b0d6a404ffe7f29c731" }, + "SchemaStore.nvim": { "branch": "main", "commit": "335569380e25ef49b4837195f295f144012e3c87" }, "cellular-automaton.nvim": { "branch": "main", "commit": "679943b8e1e5ef79aaeeaf4b00782c52eb4e928f" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-cmdline": { "branch": "main", "commit": "5af1bb7d722ef8a96658f01d6eb219c4cf746b32" }, + "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, "cmp-commit": { "branch": "main", "commit": "5f7d19957012ba114da59f06c7e6a3adafb1751d" }, "cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" }, "cmp-dap": { "branch": "master", "commit": "d16f14a210cd28988b97ca8339d504533b7e09a4" }, "cmp-git": { "branch": "main", "commit": "f900a4cf117300fdc3ba31d26f8b6223ccd9c574" }, - "cmp-npm": { "branch": "main", "commit": "e5753b6103ce4cf887233142fa9f31b2d13b42f2" }, + "cmp-npm": { "branch": "main", "commit": "2337f109f51a09297596dd6b538b70ccba92b4e4" }, "cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" }, "cmp-nvim-lsp-document-symbol": { "branch": "main", "commit": "f0f53f704c08ea501f9d222b23491b0d354644b0" }, "cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "3d8912ebeb56e5ae08ef0906e3a54de1c66b92f1" }, "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, - "dressing.nvim": { "branch": "master", "commit": "f19cbd56f7f8cad212c58a7285d09c5d9c273896" }, + "dressing.nvim": { "branch": "master", "commit": "5fb5cce0cbfcedeadbcee43e5674e8c9a9f28d4a" }, "firenvim": { "branch": "master", "commit": "e2d5a0f97d1f41e03c8d2a3c71ee60b1a4a6bb83" }, "git-conflict.nvim": { "branch": "main", "commit": "3c89812a83ac749b8851a473863958325a1cd57c" }, "gitsigns.nvim": { "branch": "main", "commit": "bb808fc7376ed7bac0fbe8f47b83d4bf01738167" }, "gruvbox.nvim": { "branch": "main", "commit": "df149bccb19a02c5c2b9fa6ec0716f0c0487feb0" }, "indent-blankline.nvim": { "branch": "master", "commit": "ceaf730b13e332cd76600d9795722413c236c684" }, - "lazy.nvim": { "branch": "main", "commit": "ebdd0499551765e6a7aba220cc8ae4e0cdb6be69" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "f0ce33f4794a2364eb08d09d09380e8b04ec5e6a" }, + "lazy.nvim": { "branch": "main", "commit": "6b2311a46a3808e366bb251270f4cc04afb421ed" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "5230617372e656d4a2e1e236e03bf7e7b4b97273" }, "mason-null-ls.nvim": { "branch": "main", "commit": "cfbd83909cbc56e2f07cb3f8a03157e069c5c91c" }, - "mason-nvim-dap.nvim": { "branch": "main", "commit": "c836e511e796d2b6a25ad9f164f5b25d8b9ff705" }, + "mason-nvim-dap.nvim": { "branch": "main", "commit": "e4d56b400e9757b1dc77d620fd3069396e92d5fc" }, "mason-update-all": { "branch": "main", "commit": "d94cf0ff32a5469ca887dd99914bf4b095ebc24f" }, - "mason.nvim": { "branch": "main", "commit": "7d7efc738e08fc5bee822857db45cb6103f0b0c1" }, - "neodev.nvim": { "branch": "main", "commit": "358f11c585fdccfcb5e8eae720c423fbed6d92de" }, - "noice.nvim": { "branch": "main", "commit": "ed7bbe09e8516040836c194ad17b3f2b3162cade" }, - "nui.nvim": { "branch": "main", "commit": "2b2732528e4a79eb8542568bd51d25f710395bd6" }, + "mason.nvim": { "branch": "main", "commit": "4be1226f48bc2011024110f37b17f5ee468df58f" }, + "neodev.nvim": { "branch": "main", "commit": "b41da3926ce1c022a2f6a7ea8858889c3a8be4d7" }, + "noice.nvim": { "branch": "main", "commit": "a070cb87a180fd7e2c4387accff0be90268fb736" }, + "nui.nvim": { "branch": "main", "commit": "e319f2554d14a521f4271576ebff2685105d7628" }, "null-ls-embedded": { "branch": "main", "commit": "abe1d19ee701be2785d8a41f95db9e0313f0b18f" }, - "null-ls.nvim": { "branch": "main", "commit": "c89333e034a8daba654ebfcf9a4ec9f87765f01e" }, - "nvim-cmp": { "branch": "main", "commit": "fc0f694af1a742ada77e5b1c91ff405c746f4a26" }, + "null-ls.nvim": { "branch": "main", "commit": "bbaf5a96913aa92281f154b08732be2f57021c45" }, + "nvim-cmp": { "branch": "main", "commit": "b8c2a62b3bd3827aa059b43be3dd4b5c45037d65" }, "nvim-colorizer.lua": { "branch": "master", "commit": "dde3084106a70b9a79d48f426f6d6fec6fd203f7" }, - "nvim-dap": { "branch": "master", "commit": "56118cee6af15cb9ddba9d080880949d8eeb0c9f" }, + "nvim-dap": { "branch": "master", "commit": "a6d48d23407fbad7a4c1451803b8f34cab31c441" }, "nvim-dap-go": { "branch": "main", "commit": "cdf604a5703838f65fdee7c198f6cb59b563ef6f" }, "nvim-dap-python": { "branch": "master", "commit": "37b4cba02e337a95cb62ad1609b3d1dccb2e5d42" }, "nvim-dap-repl-highlights": { "branch": "master", "commit": "97a2b322c05cf945c5aabaad5e599a20b25e77d9" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "57f1dbd0458dd84a286b27768c142e1567f3ce3b" }, - "nvim-jdtls": { "branch": "master", "commit": "365811ecf97a08d0e2055fba210d65017344fd15" }, - "nvim-lspconfig": { "branch": "master", "commit": "9166622781a39a829878d1fd24c174529d996838" }, + "nvim-jdtls": { "branch": "master", "commit": "aebfc22877ab143f907e90889e3903557183a22c" }, + "nvim-lspconfig": { "branch": "master", "commit": "295c646488d5baa63c6c4da68fe61171b9257375" }, "nvim-neoclip.lua": { "branch": "main", "commit": "4e406ae0f759262518731538f2585abb9d269bac" }, - "nvim-notify": { "branch": "master", "commit": "f3024b912073774111202f5fa6518b0cd2a74432" }, + "nvim-notify": { "branch": "master", "commit": "ea9c8ce7a37f2238f934e087c255758659948e0f" }, "nvim-texlabconfig": { "branch": "master", "commit": "e21cf7144a4805296781e40778953756352f47ed" }, - "nvim-treesitter": { "branch": "master", "commit": "23dfae4db84f71e2ddb56c024845b322035182ee" }, - "nvim-treesitter-context": { "branch": "master", "commit": "2182556aab4524b4fa8d00031bf1228ea2e4a023" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "95b76b95eff25e1e64f363938cd853852355d70a" }, + "nvim-treesitter": { "branch": "master", "commit": "1b9f704eb8664508749a1164d4086e47f9afa77f" }, + "nvim-treesitter-context": { "branch": "master", "commit": "efe87061af560847679fca93697991e474f049e2" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "2d6d3c7e49a24f6ffbbf7898241fefe9784f61bd" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "0bf8fbc2ca8f8cdb6efbd0a9e32740d7a991e4c3" }, "nvim-ts-hint-textobject": { "branch": "master", "commit": "5a28bff46c05d28bdb4bcaef67e046eb915a9390" }, "peek.nvim": { "branch": "master", "commit": "67752e7581f88da6899838985a05705b008e4185" }, - "plenary.nvim": { "branch": "master", "commit": "499e0743cf5e8075cd32af68baa3946a1c76adf1" }, + "plenary.nvim": { "branch": "master", "commit": "36aaceb6e93addd20b1b18f94d86aecc552f30c4" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "pretty-fold.nvim": { "branch": "master", "commit": "a7d8b424abe0eedf50116c460fbe6dfd5783b1d5" }, - "refactoring.nvim": { "branch": "master", "commit": "a85dfff2602b739627b9f8a831de8c3e7b2993ae" }, - "ripgrep": { "branch": "master", "commit": "949092fd22689905fce358cdd1b2b676709feefe" }, + "refactoring.nvim": { "branch": "master", "commit": "08bcc40638cd4debd5184f934971858e1c5acff4" }, "rust-tools.nvim": { "branch": "patched", "commit": "4338a9b08faa8da8b5aad095a035ceff31301e3f" }, - "statuscol.nvim": { "branch": "main", "commit": "f13a5dbe83ed500e6022e8e96d3c404aa11ebfba" }, + "statuscol.nvim": { "branch": "main", "commit": "98d335ca2c0781ad0d06189441cf7d9e4b0cf073" }, "telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, "telescope-live-grep-args.nvim": { "branch": "master", "commit": "0f75ea809c46af8997c64f49c52e3c641d887885" }, "telescope-symbols.nvim": { "branch": "master", "commit": "f2060117d965df4a626f068a4ebbd8ee051aa076" }, - "telescope-undo.nvim": { "branch": "main", "commit": "231b5ebb4328d2768c830c9a8d1b9c696116848d" }, - "telescope.nvim": { "branch": "master", "commit": "6d3fbffe426794296a77bb0b37b6ae0f4f14f807" }, + "telescope-undo.nvim": { "branch": "main", "commit": "3dec002ea3e7952071d26fbb5d01e2038a58a554" }, + "telescope.nvim": { "branch": "master", "commit": "00cf15074a2997487813672a75f946d2ead95eb0" }, "todo-comments.nvim": { "branch": "main", "commit": "09b0b17d824d2d56f02ff15967e8a2499a89c731" }, "tokyonight.nvim": { "branch": "main", "commit": "161114bd39b990995e08dbf941f6821afbdcd666" }, "virt-column.nvim": { "branch": "master", "commit": "93b40ea038f676f5a72d7d1f2336fe7b051fc0ce" } diff --git a/nvim/.config/nvim/lua/plugins/telescope.lua b/nvim/.config/nvim/lua/plugins/telescope.lua index 38ef839..375e393 100644 --- a/nvim/.config/nvim/lua/plugins/telescope.lua +++ b/nvim/.config/nvim/lua/plugins/telescope.lua @@ -3,7 +3,6 @@ local M = { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim", - "BurntSushi/ripgrep", { "nvim-telescope/telescope-fzf-native.nvim", build = "make", diff --git a/nvim/.config/nvim/lua/tobyvin/lsp.lua b/nvim/.config/nvim/lua/tobyvin/lsp.lua index 3dbe969..b97c809 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp.lua @@ -8,6 +8,7 @@ vim.api.nvim_create_autocmd("LspAttach", { group = augroup, desc = "setup lsp", callback = function(args) + ---@type lsp.Client local client = vim.lsp.get_client_by_id(args.data.client_id) if client.server_capabilities.documentHighlightProvider then @@ -26,36 +27,82 @@ vim.api.nvim_create_autocmd("LspAttach", { }) end - if client.server_capabilities.codeLensProvider then - vim.lsp.codelens.refresh() - vim.api.nvim_create_autocmd({ "TextChanged", "InsertLeave" }, { - group = augroup, + if client.server_capabilities.documentFormattingProvider then + vim.keymap.set("n", "gqq", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) + vim.keymap.set("n", "<leader>lf", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) + end + + if client.server_capabilities.documentRangeFormattingProvider then + vim.keymap.set("v", "<leader>lf", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) + end + + if client.server_capabilities.hoverProvider then + vim.keymap.set({ "n", "v" }, "K", vim.lsp.buf.hover, { desc = "hover", buffer = args.buf }) + end + + if client.server_capabilities.signatureHelpProvider then + vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, { + desc = "signature help", buffer = args.buf, - callback = vim.lsp.codelens.refresh, - desc = "refresh codelens", }) end - if (client.server_capabilities.experimental or {}).externalDocs then - vim.keymap.set("n", "gx", vim.lsp.buf.external_docs, { desc = "external_docs", buffer = args.buf }) + local on_list = function(options) + vim.fn.setqflist({}, " ", options) + vim.api.nvim_command("cfirst") end - if client.server_capabilities.documentFormattingProvider then - vim.keymap.set("n", "gqq", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) + if client.server_capabilities.declarationProvider then + vim.keymap.set("n", "gD", function() + vim.lsp.buf.declaration({ on_list = on_list }) + end, { desc = "declaration", buffer = args.buf }) + end + + if client.server_capabilities.definitionProvider then + vim.keymap.set("n", "gd", function() + vim.lsp.buf.definition({ on_list = on_list }) + end, { desc = "definition", buffer = args.buf }) end - vim.keymap.set({ "n", "v" }, "<leader>lf", vim.lsp.buf.format, { desc = "format", buffer = args.buf }) + if client.server_capabilities.typeDefinitionProvider then + vim.keymap.set("n", "go", function() + vim.lsp.buf.type_definition({ on_list = on_list }) + end, { desc = "type definition", buffer = args.buf }) + end + + if client.server_capabilities.implementationProvider then + vim.keymap.set("n", "gi", function() + vim.lsp.buf.implementation({ on_list = on_list }) + end, { desc = "implementation", buffer = args.buf }) + end - vim.keymap.set({ "n", "v" }, "K", vim.lsp.buf.hover, { desc = "hover", buffer = args.buf }) - vim.keymap.set("n", "<C-k>", vim.lsp.buf.signature_help, { desc = "signature help", buffer = args.buf }) - vim.keymap.set("n", "gd", vim.lsp.buf.definition, { desc = "definition", buffer = args.buf }) - vim.keymap.set("n", "gD", vim.lsp.buf.declaration, { desc = "declaration", buffer = args.buf }) - vim.keymap.set("n", "go", vim.lsp.buf.type_definition, { desc = "type definition", buffer = args.buf }) - vim.keymap.set("n", "gi", vim.lsp.buf.implementation, { desc = "implementation", buffer = args.buf }) - vim.keymap.set("n", "gr", vim.lsp.buf.references, { desc = "references", buffer = args.buf }) + if client.server_capabilities.referencesProvider then + vim.keymap.set("n", "gr", function() + vim.lsp.buf.references(nil, { on_list = on_list }) + end, { desc = "references", buffer = args.buf }) + end - vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, { desc = "rename", buffer = args.buf }) - vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, { desc = "code action", buffer = args.buf }) - vim.keymap.set("n", "<leader>ll", vim.lsp.codelens.run, { desc = "codelens", buffer = args.buf }) + if client.server_capabilities.renameProvider then + vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename, { + desc = "rename", + buffer = args.buf, + }) + end + + if client.server_capabilities.codeActionProvider then + vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action, { + desc = "code action", + buffer = args.buf, + }) + end + + if client.server_capabilities.experimental then + if client.server_capabilities.experimental.externalDocs then + vim.keymap.set("n", "gx", vim.lsp.buf.external_docs, { + desc = "external_docs", + buffer = args.buf, + }) + end + end end, }) diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua index ad7a2ee..bed8a3e 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua @@ -95,6 +95,14 @@ local M = { powershell_es = {}, pylsp = {}, rust_analyzer = { + handlers = { + ["experimental/externalDocs"] = function(err, result) + if result then + vim.fn["netrw#BrowseX"](result, 0) + end + return result, err + end, + }, standalone = true, settings = { ["rust-analyzer"] = { diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua index 9df2915..26d4c9e 100644 --- a/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua +++ b/nvim/.config/nvim/lua/tobyvin/lsp/handlers.lua @@ -1,59 +1,9 @@ -local augroup = vim.api.nvim_create_augroup("lsp_workspace", {}) -local handlers = vim.deepcopy(vim.lsp.handlers) - function vim.lsp.buf.external_docs() - ---@diagnostic disable-next-line: missing-parameter local params = vim.lsp.util.make_position_params() return vim.lsp.buf_request(0, "experimental/externalDocs", params) end return { - ["textDocument/definition"] = function(err, result, ctx, config) - if not result or vim.tbl_isempty(result) then - vim.notify("No location found", vim.log.levels.INFO, { title = "[LSP] " .. ctx.method }) - elseif vim.tbl_islist(result) then - result = result[1] - end - - local original = vim.lsp.buf.list_workspace_folders() - - handlers["textDocument/definition"](err, result, ctx, config) - - local workspaces = vim.lsp.buf.list_workspace_folders() - - -- TODO: rework this to reload LSP and reset diagnostics, as it is not done - -- when removing the workspace folder. Possibly move into a LspRequest autocmd - if original ~= workspaces then - for _, workspace in ipairs(workspaces) do - if not vim.tbl_contains(original, workspace) then - vim.api.nvim_create_autocmd("BufDelete", { - group = augroup, - buffer = vim.api.nvim_get_current_buf(), - callback = function() - local autocmds = vim.api.nvim_get_autocmds({ group = augroup, event = "BufDelete" }) - - if #autocmds <= 1 then - vim.lsp.buf.remove_workspace_folder(workspace) - end - - return true - end, - desc = "remove temporary workspace", - }) - end - end - end - end, - - ["experimental/externalDocs"] = function(err, result, ctx, config) - if handlers["experimental/externalDocs"] then - result, err = handlers["experimental/externalDocs"](err, result, ctx, config) - elseif result then - vim.fn["netrw#BrowseX"](result, 0) - end - return result, err - end, - ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single", }), |