aboutsummaryrefslogtreecommitdiff
path: root/config/nvim
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2023-09-24 22:30:22 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2023-09-24 22:30:22 +0200
commit73a2d9946ff469afa1a1a30edb1aa350032bb44c (patch)
tree55df5bcac6c6b3a9dcccdf70f48ca7fdc17dfca9 /config/nvim
parent089ad2dd938f9caabf21bfbf52179dcdf4a8c6f2 (diff)
Start replacing CoC with neovim's LSP support
Diffstat (limited to 'config/nvim')
-rw-r--r--config/nvim/init.lua21
-rw-r--r--config/nvim/lua/dap_config.lua6
-rw-r--r--config/nvim/lua/lsp.lua60
-rw-r--r--config/nvim/lua/plugins.lua10
4 files changed, 72 insertions, 25 deletions
diff --git a/config/nvim/init.lua b/config/nvim/init.lua
index 9395a00..1b5fda9 100644
--- a/config/nvim/init.lua
+++ b/config/nvim/init.lua
@@ -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')
diff --git a/config/nvim/lua/dap_config.lua b/config/nvim/lua/dap_config.lua
index 446315a..2131958 100644
--- a/config/nvim/lua/dap_config.lua
+++ b/config/nvim/lua/dap_config.lua
@@ -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
index 0000000..eb8b98f
--- /dev/null
+++ b/config/nvim/lua/lsp.lua
@@ -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,
+})
diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua
index 971c441..c4e313a 100644
--- a/config/nvim/lua/plugins.lua
+++ b/config/nvim/lua/plugins.lua
@@ -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()