diff options
Diffstat (limited to 'config')
| -rw-r--r-- | config/nvim/lazy-lock.json | 24 | ||||
| -rw-r--r-- | config/nvim/lua/lsp.lua | 112 |
2 files changed, 106 insertions, 30 deletions
diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index bef9479..3164297 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,27 +1,27 @@ { "LargeFile": { "branch": "master", "commit": "3941a37b2b0288524300348a39521a46539bf9f6" }, - "coq_nvim": { "branch": "coq", "commit": "8ff6e8a9983b537b94be65c18d27710810c764c9" }, - "fzf-lua": { "branch": "main", "commit": "fd6588ee052e150eb61f578fa8c40648def5b334" }, + "coq_nvim": { "branch": "coq", "commit": "d2aeb3221cb46bfd1c51afd1b247d092c52ec0d6" }, + "fzf-lua": { "branch": "main", "commit": "7c21f30f6182ca2463681c0f287d032b48882d4f" }, "gemini.vim": { "branch": "master", "commit": "c9efb59c97b71c28d4678c79fd21fbdd3a69d196" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lazydev.nvim": { "branch": "main", "commit": "258d2a5ef4a3e3d6d9ba9da72c9725c53e9afcbd" }, "neogen": { "branch": "main", "commit": "d7f9461727751fb07f82011051338a9aba07581d" }, "nota.nvim": { "branch": "main", "commit": "503bfaa93968986a9df5376c4543207c70dd2a07" }, - "nvim-autopairs": { "branch": "master", "commit": "2647cce4cb64fb35c212146663384e05ae126bdf" }, - "nvim-dap": { "branch": "master", "commit": "2edd6375692d9ac1053d50acfe415c1eb2ba92d0" }, - "nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-dap": { "branch": "master", "commit": "7367cec8e8f7a0b1e4566af9a7ef5959d11206a7" }, + "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, "nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" }, - "nvim-lspconfig": { "branch": "master", "commit": "69a1624aff5dc30dddd0c59d99a947b63c80bf2a" }, + "nvim-lspconfig": { "branch": "master", "commit": "db8fef885009fdec0daeff3e5dda92e1f539611e" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-endwise": { "branch": "master", "commit": "d6cbb83307d516ec076d17c9a33d704ef626ee8c" }, - "oil.nvim": { "branch": "master", "commit": "08c2bce8b00fd780fb7999dbffdf7cd174e896fb" }, + "nvim-treesitter-endwise": { "branch": "master", "commit": "a61a9de7965324d4019fb1637b66bfacdcb01f51" }, + "oil.nvim": { "branch": "master", "commit": "919e155fdf38e9148cdb5304faaaf53c20d703ea" }, "oleoboard.nvim": { "branch": "main", "commit": "3652b39db3a8faca3fb767ace799479124bc79f3" }, "snes-syntax-vim": { "branch": "master", "commit": "a6a699c8905f7b6119bf91e44f960667d9f03d59" }, "tree-sitter-api-notation": { "branch": "main", "commit": "3113c6077d9ed1e662a891714ac00e1ee3bb7657" }, - "undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" }, - "vim-fugitive": { "branch": "master", "commit": "593f831d6f6d779cbabb70a4d1e6b1b1936a88af" }, + "undotree": { "branch": "master", "commit": "0f1c9816975b5d7f87d5003a19c53c6fd2ff6f7f" }, + "vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" }, "vim-indent-object": { "branch": "master", "commit": "8ab36d5ec2a3a60468437a95e142ce994df598c6" }, "vim-togglelist": { "branch": "master", "commit": "48f0d30292efdf20edc883e61b121e6123e03df7" }, - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } + "which-key.nvim": { "branch": "main", "commit": "904308e6885bbb7b60714c80ab3daf0c071c1492" } } diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua index 7dfb050..7434504 100644 --- a/config/nvim/lua/lsp.lua +++ b/config/nvim/lua/lsp.lua @@ -1,15 +1,45 @@ -local lspconfig = require('lspconfig') local coq = require('coq') + +-- Prepare capabilities with COQ support local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities.textDocument.completion.completionItem.snippetSupport = true +capabilities = coq.lsp_ensure_capabilities(capabilities) + +-- Configure each LSP server +vim.lsp.config('ts_ls', { + cmd = { 'typescript-language-server', '--stdio' }, + root_markers = { 'package.json', 'tsconfig.json', 'jsconfig.json' }, + capabilities = capabilities, +}) + +vim.lsp.config('eslint', { + cmd = { 'vscode-eslint-language-server', '--stdio' }, + root_markers = { '.eslintrc', '.eslintrc.js', '.eslintrc.json', 'package.json' }, + capabilities = capabilities, +}) + +vim.lsp.config('svelte', { + cmd = { 'svelteserver', '--stdio' }, + root_markers = { 'package.json', 'svelte.config.js' }, + capabilities = capabilities, +}) + +vim.lsp.config('pyright', { + cmd = { 'pyright-langserver', '--stdio' }, + root_markers = { 'pyproject.toml', 'setup.py', 'requirements.txt' }, + capabilities = capabilities, +}) -lspconfig.ts_ls.setup(coq.lsp_ensure_capabilities({})) -lspconfig.eslint.setup(coq.lsp_ensure_capabilities({})) -lspconfig.svelte.setup(coq.lsp_ensure_capabilities({})) -lspconfig.pyright.setup(coq.lsp_ensure_capabilities({})) -lspconfig.dartls.setup(coq.lsp_ensure_capabilities({})) -lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities({ - -- Server-specific settings. See `:help lspconfig-setup` +vim.lsp.config('dartls', { + cmd = { 'dart', 'language-server', '--protocol=lsp' }, + root_markers = { 'pubspec.yaml' }, + capabilities = capabilities, +}) + +vim.lsp.config('rust_analyzer', { + cmd = { 'rust-analyzer' }, + root_markers = { 'Cargo.toml', 'rust-project.json' }, + capabilities = capabilities, settings = { ['rust-analyzer'] = { imports = { @@ -31,14 +61,61 @@ lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities({ } }, }, - on_attach = function(client, bufnr) - vim.lsp.inlay_hint.enable(true, { bufnr = bufnr }) - end -})) -lspconfig.lua_ls.setup(coq.lsp_ensure_capabilities({})) +}) + +vim.lsp.config('lua_ls', { + cmd = { 'lua-language-server' }, + root_markers = { '.luarc.json', '.luarc.jsonc', '.luacheckrc', 'stylua.toml', 'selene.toml' }, + capabilities = capabilities, +}) + +-- Auto-enable LSP servers based on filetype +vim.api.nvim_create_autocmd('FileType', { + pattern = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' }, + callback = function() + vim.lsp.enable('ts_ls') + vim.lsp.enable('eslint') + end, +}) --- Global mappings. --- See `:help vim.diagnostic.*` for documentation on any of the below functions +vim.api.nvim_create_autocmd('FileType', { + pattern = 'svelte', + callback = function() + vim.lsp.enable('svelte') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'python', + callback = function() + vim.lsp.enable('pyright') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'dart', + callback = function() + vim.lsp.enable('dartls') + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'rust', + callback = function() + vim.lsp.enable('rust_analyzer') + -- Enable inlay hints for Rust + vim.lsp.inlay_hint.enable(true, { bufnr = 0 }) + end, +}) + +vim.api.nvim_create_autocmd('FileType', { + pattern = 'lua', + callback = function() + vim.lsp.enable('lua_ls') + end, +}) + +-- Global mappings 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) @@ -51,9 +128,8 @@ vim.api.nvim_create_autocmd('LspAttach', { 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 + + -- Buffer local mappings 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) |