]> git.r.bdr.sh - rbdr/dotfiles/commitdiff
Start replacing CoC with neovim's LSP support
authorRuben Beltran del Rio <redacted>
Sun, 24 Sep 2023 20:30:22 +0000 (22:30 +0200)
committerRuben Beltran del Rio <redacted>
Sun, 24 Sep 2023 20:30:22 +0000 (22:30 +0200)
config/nvim/init.lua
config/nvim/lua/dap_config.lua
config/nvim/lua/lsp.lua [new file with mode: 0644]
config/nvim/lua/plugins.lua

index 9395a00388475a258f137cd21a4652a049006a14..1b5fda92408d9fae3efa156fd29837962822f035 100644 (file)
@@ -84,24 +84,7 @@ vim.keymap.set("n", "<c-P>",
 -- Svelte Config
 vim.g.vim_svelte_plugin_use_typescript = true
 
--- CoC
-vim.keymap.set('i', '<TAB>', 'pumvisible() ? "\\<C-n>" : "\\<TAB>"', {expr = true, silent = true})
-vim.keymap.set('i', '<S-TAB>', 'pumvisible() ? "\\<C-p>" : "\\<C-h>"', {expr = true, silent = true})
-vim.keymap.set('i', '<S-TAB>', 'pumvisible() ? "\\<C-p>" : "\\<C-h>"', {expr = true, silent = true})
-vim.keymap.set('i', '<C-Space>', 'coc#refresh()', {expr = true, silent = true})
-vim.keymap.set('n', 'K', ':call CocActionAsync("doHover")<CR>', {silent = true})
-
-vim.keymap.set('n', '[g', '<Plug>(coc-diagnostic-prev)', {silent = true})
-vim.keymap.set('n', ']g', '<Plug>(coc-diagnostic-next)', {silent = true})
-
-vim.keymap.set('n', 'gd', '<Plug>(coc-definition)', {silent = true})
-vim.keymap.set('n', 'gy', '<Plug>(coc-type-definition)', {silent = true})
-vim.keymap.set('n', 'gi', '<Plug>(coc-implementation)', {silent = true})
-vim.keymap.set('n', 'gr', '<Plug>(coc-references)', {silent = true})
-
-vim.keymap.set('n', '<leader>d', function()
-  require("dapui").toggle()
-end)
-
 -- Plugins
 require('plugins')
+require('lsp')
+require('dap_config')
index 446315a7a4f3e8c8f7ff6b026dfa36be350c135b..2131958ec6613ebbc93fa0729ec4ffdb13df8b0c 100644 (file)
@@ -1,4 +1,9 @@
 local dap = require('dap')
+require("dapui").setup()
+
+vim.keymap.set('n', '<leader>d', function()
+  require("dapui").toggle()
+end)
 
 dap.adapters.node2 = {
   type = 'executable',
@@ -110,3 +115,4 @@ dap.configurations.python = {
 require('neodev').setup({
   library = { plugins = { "nvim-dap-ui" }, types = true }
 })
+
diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua
new file mode 100644 (file)
index 0000000..eb8b98f
--- /dev/null
@@ -0,0 +1,60 @@
+local lspconfig = require('lspconfig')
+local capabilities = vim.lsp.protocol.make_client_capabilities()
+capabilities.textDocument.completion.completionItem.snippetSupport = true
+
+lspconfig.tsserver.setup {}
+lspconfig.eslint.setup{}
+lspconfig.svelte.setup{}
+lspconfig.pyright.setup {}
+lspconfig.dartls.setup{}
+lspconfig.rust_analyzer.setup {
+  -- Server-specific settings. See `:help lspconfig-setup`
+  settings = {
+    ['rust-analyzer'] = {},
+  },
+}
+lspconfig.cssls.setup {
+  capabilities = capabilities,
+}
+lspconfig.html.setup {
+  capabilities = capabilities,
+}
+lspconfig.lua_ls.setup{}
+
+-- Global mappings.
+-- See `:help vim.diagnostic.*` for documentation on any of the below functions
+vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
+vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
+vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
+vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
+
+-- Use LspAttach autocommand to only map the following keys
+-- after the language server attaches to the current buffer
+vim.api.nvim_create_autocmd('LspAttach', {
+  group = vim.api.nvim_create_augroup('UserLspConfig', {}),
+  callback = function(ev)
+    -- Enable completion triggered by <c-x><c-o>
+    vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
+
+    -- Buffer local mappings.
+    -- See `:help vim.lsp.*` for documentation on any of the below functions
+    local opts = { buffer = ev.buf }
+    vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
+    vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
+    vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
+    vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
+    vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
+    vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
+    vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
+    vim.keymap.set('n', '<space>wl', function()
+      print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+    end, opts)
+    vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
+    vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
+    vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
+    vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
+    vim.keymap.set('n', '<space>f', function()
+      vim.lsp.buf.format { async = true }
+    end, opts)
+  end,
+})
index 971c441e52872eda3324a0ec52cbf448bc908c11..c4e313a80590f4affba4becebfb36487ac1add11 100644 (file)
@@ -61,8 +61,6 @@ require('lazy').setup({
   'ziglang/zig.vim',
 
   -- Debugging
-  'neovim/nvim-lspconfig',
-  'folke/neodev.nvim',
   'mfussenegger/nvim-dap',
   'rcarriga/nvim-dap-ui',
 
@@ -71,12 +69,12 @@ require('lazy').setup({
   'rstacruz/vim-closer',
   'michaeljsmith/vim-indent-object',
 
+  -- LSP
+  'neovim/nvim-lspconfig',
+  'folke/neodev.nvim',
+
   -- Tools
-  {'neoclide/coc.nvim', branch='release'},
   'vim-scripts/LargeFile',
   'tpope/vim-fugitive',
   'milkypostman/vim-togglelist'
 })
-
-require('dap_config')
-require("dapui").setup()