@@ -4,6 +4,7 @@ local servers = {
44 " pyright" ,
55 " kotlin_language_server" ,
66 " jsonls" ,
7+ " yamlls" ,
78}
89
910-- Set up Mason for automatic LSP server installation
@@ -12,9 +13,18 @@ require("mason-lspconfig").setup({
1213 ensure_installed = servers ,
1314})
1415
16+ vim .diagnostic .config ({
17+ severity_sort = true ,
18+ float = {
19+ border = " rounded" ,
20+ },
21+ })
22+
23+ local capabilities = require (" cmp_nvim_lsp" ).default_capabilities ()
24+
1525-- Set capabilities for all servers (cmp integration)
1626vim .lsp .config (" *" , {
17- capabilities = require ( " cmp_nvim_lsp " ). default_capabilities () ,
27+ capabilities = capabilities ,
1828})
1929
2030-- Load server-specific configurations
2636vim .lsp .enable (servers )
2737
2838-- Diagnostic keymaps
29- vim .keymap .set (" n" , " <space>e" , vim .diagnostic .open_float )
39+ vim .keymap .set (" n" , " <space>e" , vim .diagnostic .open_float , { desc = " Open diagnostic float " } )
3040vim .keymap .set (" n" , " [d" , function ()
3141 vim .diagnostic .jump ({ count = - 1 })
32- end )
42+ end , { desc = " Previous diagnostic " } )
3343vim .keymap .set (" n" , " ]d" , function ()
3444 vim .diagnostic .jump ({ count = 1 })
35- end )
36- vim .keymap .set (" n" , " <space>q" , vim .diagnostic .setloclist )
45+ end , { desc = " Next diagnostic " } )
46+ vim .keymap .set (" n" , " <space>q" , vim .diagnostic .setloclist , { desc = " Diagnostic quickfix list " } )
3747
3848-- LSP keymaps (set when a server attaches to a buffer)
3949vim .api .nvim_create_autocmd (" LspAttach" , {
4050 callback = function (ev )
4151 local client = vim .lsp .get_client_by_id (ev .data .client_id )
42- local opts = { buffer = ev .buf }
52+ local opts = { buffer = ev .buf , silent = true }
4353
4454 -- Enable completion triggered by <c-x><c-o>
4555 vim .bo [ev .buf ].omnifunc = " v:lua.vim.lsp.omnifunc"
@@ -50,22 +60,52 @@ vim.api.nvim_create_autocmd("LspAttach", {
5060 client .server_capabilities .documentRangeFormattingProvider = false
5161 end
5262
53- vim .keymap .set (" n" , " gD" , vim .lsp .buf .declaration , opts )
54- vim .keymap .set (" n" , " gd" , vim .lsp .buf .definition , opts )
55- vim .keymap .set (" n" , " K" , vim .lsp .buf .hover , opts )
56- vim .keymap .set (" n" , " gi" , vim .lsp .buf .implementation , opts )
57- vim .keymap .set (" n" , " <C-k>" , vim .lsp .buf .signature_help , opts )
58- vim .keymap .set (" n" , " <space>wa" , vim .lsp .buf .add_workspace_folder , opts )
59- vim .keymap .set (" n" , " <space>wr" , vim .lsp .buf .remove_workspace_folder , opts )
63+ vim .keymap .set (" n" , " gD" , vim .lsp .buf .declaration , vim .tbl_extend (" force" , opts , { desc = " LSP declaration" }))
64+ vim .keymap .set (" n" , " gd" , vim .lsp .buf .definition , vim .tbl_extend (" force" , opts , { desc = " LSP definition" }))
65+ vim .keymap .set (" n" , " K" , vim .lsp .buf .hover , vim .tbl_extend (" force" , opts , { desc = " LSP hover" }))
66+ vim .keymap .set (
67+ " n" ,
68+ " gi" ,
69+ vim .lsp .buf .implementation ,
70+ vim .tbl_extend (" force" , opts , { desc = " LSP implementation" })
71+ )
72+ vim .keymap .set (
73+ " n" ,
74+ " <C-k>" ,
75+ vim .lsp .buf .signature_help ,
76+ vim .tbl_extend (" force" , opts , { desc = " LSP signature help" })
77+ )
78+ vim .keymap .set (
79+ " n" ,
80+ " <space>wa" ,
81+ vim .lsp .buf .add_workspace_folder ,
82+ vim .tbl_extend (" force" , opts , { desc = " Add workspace folder" })
83+ )
84+ vim .keymap .set (
85+ " n" ,
86+ " <space>wr" ,
87+ vim .lsp .buf .remove_workspace_folder ,
88+ vim .tbl_extend (" force" , opts , { desc = " Remove workspace folder" })
89+ )
6090 vim .keymap .set (" n" , " <space>wl" , function ()
6191 print (vim .inspect (vim .lsp .buf .list_workspace_folders ()))
62- end , opts )
63- vim .keymap .set (" n" , " <space>D" , vim .lsp .buf .type_definition , opts )
64- vim .keymap .set (" n" , " <space>rn" , vim .lsp .buf .rename , opts )
65- vim .keymap .set (" n" , " <space>ca" , vim .lsp .buf .code_action , opts )
66- vim .keymap .set (" n" , " gr" , vim .lsp .buf .references , opts )
92+ end , vim .tbl_extend (" force" , opts , { desc = " List workspace folders" }))
93+ vim .keymap .set (
94+ " n" ,
95+ " <space>D" ,
96+ vim .lsp .buf .type_definition ,
97+ vim .tbl_extend (" force" , opts , { desc = " LSP type definition" })
98+ )
99+ vim .keymap .set (" n" , " <space>rn" , vim .lsp .buf .rename , vim .tbl_extend (" force" , opts , { desc = " LSP rename" }))
100+ vim .keymap .set (
101+ " n" ,
102+ " <space>ca" ,
103+ vim .lsp .buf .code_action ,
104+ vim .tbl_extend (" force" , opts , { desc = " LSP code action" })
105+ )
106+ vim .keymap .set (" n" , " gr" , vim .lsp .buf .references , vim .tbl_extend (" force" , opts , { desc = " LSP references" }))
67107 vim .keymap .set (" n" , " <space>f" , function ()
68108 vim .lsp .buf .format ({ async = true })
69- end , opts )
109+ end , vim . tbl_extend ( " force " , opts , { desc = " Format buffer " }) )
70110 end ,
71111})
0 commit comments