aboutsummaryrefslogtreecommitdiffstats
path: root/lua/pi/lsp/attach.lua
diff options
context:
space:
mode:
authorElvis Claros Castro <elvis@claros.ar>2024-07-12 11:18:14 -0300
committerElvis Claros Castro <elvis@claros.ar>2024-07-12 11:18:14 -0300
commitea0f4bf8ffade657b1d45152dbc183d4679e75c4 (patch)
treecc1fb023bc308e019ddce33a4b0aed39f56805dc /lua/pi/lsp/attach.lua
parent1fd0af14d592d612c2aaab7717c04c8806ba3daa (diff)
downloadnvim-conf-ea0f4bf8ffade657b1d45152dbc183d4679e75c4.tar.gz
nvim-conf-ea0f4bf8ffade657b1d45152dbc183d4679e75c4.zip
Feat: PI
Diffstat (limited to 'lua/pi/lsp/attach.lua')
-rw-r--r--lua/pi/lsp/attach.lua29
1 files changed, 29 insertions, 0 deletions
diff --git a/lua/pi/lsp/attach.lua b/lua/pi/lsp/attach.lua
new file mode 100644
index 0000000..7c28494
--- /dev/null
+++ b/lua/pi/lsp/attach.lua
@@ -0,0 +1,29 @@
+local telescope_mapper = require "pi.telescope.mappings"
+
+return function(client, bufnr)
+ -- keymaps for lsp
+ vim.keymap.set("n", "K", vim.lsp.buf.hover, { buffer = 0, desc = "LSP Help information of symbol under the cursor" })
+ vim.keymap.set("n", "<leader>vrn", vim.lsp.buf.rename, { buffer = 0, desc = "LSP Rename symbol under cursor" })
+ vim.keymap.set("i", "<c-h>", vim.lsp.buf.signature_help, { buffer = 0, desc = "LSP Signature help" })
+ vim.keymap.set("n", "<leader>vo", ":LspRestart<cr>", { noremap = true, desc = "LSP Restart Server" })
+ vim.keymap.set({ "n", "v" }, "<leader>vca", vim.lsp.buf.code_action, { buffer = 0, desc = "LSP Code actions" })
+ vim.keymap.set("n", "<leader>vf", function()
+ return vim.lsp.buf.format {
+ async = true,
+ filter = function(cli)
+ return cli.name ~= "lua_ls"
+ end,
+ }
+ end, { buffer = 0, desc = "LSP format file" })
+
+ telescope_mapper("gr", "lsp_references", { buffer = true, desc = "LSP References of symbol on cursor" })
+ telescope_mapper("<leader>pv", "find_symbol", { buffer = true, desc = "LSP find symbol on the project" })
+ telescope_mapper("<leader>pd", "lsp_document_symbols", { buffer = true, desc = "LSP document symbols" })
+ telescope_mapper("gd", "lsp_definitions", { buffer = true, desc = "LSP go to definition" })
+
+ vim.bo.omnifunc = "v:lua.vim.lsp.omnifunc"
+
+ if client.server_capabilities.inlayHintProvider then
+ vim.lsp.inlay_hint.enable(bufnr)
+ end
+end