diff options
Diffstat (limited to 'lua/lsp.lua')
-rw-r--r-- | lua/lsp.lua | 39 |
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) |
29 | end | 22 | end |
30 | 23 | ||
31 | local servers = { "hls", "rnix", "bashls" } | 24 | local servers = { "hls", "rnix", "bashls" } |
@@ -35,11 +28,13 @@ for _, lsp in ipairs(servers) do | |||
35 | } | 28 | } |
36 | end | 29 | end |
37 | 30 | ||
38 | local capabilities = vim.lsp.protocol.make_client_capabilities() | 31 | local capabilities = require('cmp_nvim_lsp') |
32 | .update_capabilities(vim.lsp.protocol.make_client_capabilities()) | ||
33 | |||
39 | capabilities.textDocument.completion.completionItem.snippetSupport = true | 34 | capabilities.textDocument.completion.completionItem.snippetSupport = true |
40 | 35 | ||
41 | nvim_lsp.rust_analyzer.setup { | 36 | nvim_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 | ||
55 | nvim_lsp.ccls.setup { | 50 | nvim_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; |