aboutsummaryrefslogtreecommitdiff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/nvim/lazy-lock.json24
-rw-r--r--config/nvim/lua/lsp.lua112
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)