aboutsummaryrefslogtreecommitdiff
path: root/config/nvim/lua
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-10-30 19:01:51 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-10-30 19:01:51 +0100
commit8350aa04f51882f11bd40a51eacd4a0c47bafc02 (patch)
tree69e94b2e26ca370108c476eade15150c34b307d1 /config/nvim/lua
parent1cb7eb48c4e81626d3df6736fd0e2a866674def5 (diff)
parent2b09251962f4b80eeee1c6e11bde8d29536915e6 (diff)
Merge branch 'main' of git.sr.ht:~rbdr/dotfiles
Diffstat (limited to 'config/nvim/lua')
-rw-r--r--config/nvim/lua/lsp.lua80
-rw-r--r--config/nvim/lua/plugins.lua6
-rw-r--r--config/nvim/lua/treesitter_config.lua1
3 files changed, 65 insertions, 22 deletions
diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua
index 7dfb050..6c69119 100644
--- a/config/nvim/lua/lsp.lua
+++ b/config/nvim/lua/lsp.lua
@@ -1,15 +1,37 @@
-local lspconfig = require('lspconfig')
local coq = require('coq')
-local capabilities = vim.lsp.protocol.make_client_capabilities()
-capabilities.textDocument.completion.completionItem.snippetSupport = true
-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('ts_ls', coq.lsp_ensure_capabilities({
+ cmd = { 'typescript-language-server', '--stdio' },
+ filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },
+ root_markers = { 'package.json', 'tsconfig.json', 'jsconfig.json' }
+}))
+vim.lsp.enable('ts_ls')
+
+vim.lsp.config('eslint', coq.lsp_ensure_capabilities({
+ cmd = { 'vscode-eslint-language-server', '--stdio' },
+ filetypes = { 'javascript', 'javascriptreact', 'typescript', 'typescriptreact' },
+ root_markers = { '.eslintrc', '.eslintrc.js', '.eslintrc.json', 'package.json' }
+}))
+vim.lsp.enable('eslint')
+
+vim.lsp.config('svelte', coq.lsp_ensure_capabilities({
+ cmd = { 'svelteserver', '--stdio' },
+ filetypes = { 'svelte' },
+ root_markers = { 'package.json', 'svelte.config.js' }
+}))
+vim.lsp.enable('svelte')
+
+vim.lsp.config('pyright', coq.lsp_ensure_capabilities({
+ cmd = { 'pyright-langserver', '--stdio' },
+ filetypes = { 'python' },
+ root_markers = { 'pyproject.toml', 'setup.py', 'requirements.txt' }
+}))
+vim.lsp.enable('pyright')
+
+vim.lsp.config('rust_analyzer', coq.lsp_ensure_capabilities({
+ cmd = { 'rust-analyzer' },
+ filetypes = { 'rust' },
+ root_markers = { 'Cargo.toml', 'rust-project.json' },
settings = {
['rust-analyzer'] = {
imports = {
@@ -27,18 +49,39 @@ lspconfig.rust_analyzer.setup(coq.lsp_ensure_capabilities({
enable = true
},
checkOnSave = {
+ enable = true,
command = "clippy"
}
},
},
- on_attach = function(client, bufnr)
- vim.lsp.inlay_hint.enable(true, { bufnr = bufnr })
- end
}))
-lspconfig.lua_ls.setup(coq.lsp_ensure_capabilities({}))
+vim.lsp.enable('rust_analyzer')
--- Global mappings.
--- See `:help vim.diagnostic.*` for documentation on any of the below functions
+vim.lsp.config('lua_ls', coq.lsp_ensure_capabilities({
+ cmd = { 'lua-language-server' },
+ filetypes = { 'lua' },
+ root_markers = { '.luarc.json', '.luarc.jsonc', '.luacheckrc', 'stylua.toml', 'selene.toml' },
+}))
+vim.lsp.enable('lua_ls')
+
+vim.lsp.config('gleam', coq.lsp_ensure_capabilities({
+ cmd = { 'gleam', 'lsp' },
+ filetypes = { 'gleam' },
+ root_markers = { 'gleam.toml' },
+}))
+vim.lsp.enable('gleam')
+
+-- Enable inlay hints for Rust when LSP attaches
+vim.api.nvim_create_autocmd('LspAttach', {
+ callback = function(args)
+ local client = vim.lsp.get_client_by_id(args.data.client_id)
+ if client and client.name == 'rust_analyzer' then
+ vim.lsp.inlay_hint.enable(true, { bufnr = args.buf })
+ end
+ 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 +94,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)
diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua
index 882c76d..ce637e9 100644
--- a/config/nvim/lua/plugins.lua
+++ b/config/nvim/lua/plugins.lua
@@ -28,9 +28,9 @@ require('lazy').setup({
['fg'] = {'fg', 'Normal'},
['bg'] = {'bg', 'Normal'},
['hl'] = {'fg', 'Comment'},
- ['fg+'] = {'fg', 'CursorLine'},
- ['bg+'] = {'bg', 'CursorLine'},
- ['hl+'] = {'fg', 'Statement'},
+ ['fg+'] = {'fg', 'Type'},
+ ['bg+'] = {'bg', 'Comment'},
+ ['hl+'] = {'fg', '@fzf.hlplus'},
['info'] = {'fg', 'PreProc'},
['prompt'] = {'fg', 'Conditional'},
['pointer'] = {'fg', 'Exception'},
diff --git a/config/nvim/lua/treesitter_config.lua b/config/nvim/lua/treesitter_config.lua
index ded65ac..16986d6 100644
--- a/config/nvim/lua/treesitter_config.lua
+++ b/config/nvim/lua/treesitter_config.lua
@@ -8,6 +8,7 @@ require'nvim-treesitter.configs'.setup {
'diff',
'dockerfile',
'gitcommit',
+ 'gleam',
'graphql',
'html',
'htmldjango',