summaryrefslogtreecommitdiff
path: root/lua/lsp.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lsp.lua')
-rw-r--r--lua/lsp.lua39
1 files changed, 18 insertions, 21 deletions
diff --git a/lua/lsp.lua b/lua/lsp.lua
index 7509593..257f5a3 100644
--- a/lua/lsp.lua
+++ b/lua/lsp.lua
@@ -6,26 +6,19 @@ local on_attach = function(client, bufnr)
6 buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc') 6 buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
7 7
8 -- Mappings. 8 -- Mappings.
9 local opts = { noremap=true, silent=true } 9 local bufopts = { noremap=true, silent=true, buffer=bufnr }
10 buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts) 10 vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
11 buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts) 11 vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
12 buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts) 12 vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
13 buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts) 13 vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
14 buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts) 14 vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
15 buf_set_keymap('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
16 buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
17 buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
18 buf_set_keymap('n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
19 buf_set_keymap('n', '[g', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
20 buf_set_keymap('n', ']g', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
21 buf_set_keymap('n', '<leader>q', '<cmd>lua vim.diagnostic.set_qflist()<CR>', opts)
22 15
23 -- Set some keybinds conditional on server capabilities 16 local opts = { noremap=true, silent=true }
24 if client.server_capabilities.document_formatting then 17 vim.keymap.set('n', '<space>d', vim.diagnostic.open_float, opts)
25 buf_set_keymap("n", "<leader>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts) 18 vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
26 elseif client.server_capabilities.document_range_formatting then 19 vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
27 buf_set_keymap("n", "<leader>f", "<cmd>lua vim.lsp.buf.range_formatting()<CR>", opts) 20 vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
28 end 21 vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
29end 22end
30 23
31local servers = { "hls", "rnix", "bashls" } 24local servers = { "hls", "rnix", "bashls" }
@@ -35,11 +28,13 @@ for _, lsp in ipairs(servers) do
35 } 28 }
36end 29end
37 30
38local capabilities = vim.lsp.protocol.make_client_capabilities() 31local capabilities = require('cmp_nvim_lsp')
32 .update_capabilities(vim.lsp.protocol.make_client_capabilities())
33
39capabilities.textDocument.completion.completionItem.snippetSupport = true 34capabilities.textDocument.completion.completionItem.snippetSupport = true
40 35
41nvim_lsp.rust_analyzer.setup { 36nvim_lsp.rust_analyzer.setup {
42 capabilities = capabilities, 37 on_attach = on_attach,
43 settings = { 38 settings = {
44 ["rust-analyzer"] = { 39 ["rust-analyzer"] = {
45 procMacro = { 40 procMacro = {
@@ -53,6 +48,8 @@ nvim_lsp.rust_analyzer.setup {
53} 48}
54 49
55nvim_lsp.ccls.setup { 50nvim_lsp.ccls.setup {
51 capabilities = capabilities,
52 on_attach = on_attach,
56 init_options = { 53 init_options = {
57 index = { 54 index = {
58 threads = 0; 55 threads = 0;