diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-10-30 19:01:51 +0100 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-10-30 19:01:51 +0100 |
| commit | 8350aa04f51882f11bd40a51eacd4a0c47bafc02 (patch) | |
| tree | 69e94b2e26ca370108c476eade15150c34b307d1 /config/nvim | |
| parent | 1cb7eb48c4e81626d3df6736fd0e2a866674def5 (diff) | |
| parent | 2b09251962f4b80eeee1c6e11bde8d29536915e6 (diff) | |
Merge branch 'main' of git.sr.ht:~rbdr/dotfiles
Diffstat (limited to 'config/nvim')
| -rw-r--r-- | config/nvim/colors/tranquil-light.vim | 160 | ||||
| -rw-r--r-- | config/nvim/init.lua | 6 | ||||
| -rw-r--r-- | config/nvim/lazy-lock.json | 26 | ||||
| -rw-r--r-- | config/nvim/lua/lsp.lua | 80 | ||||
| -rw-r--r-- | config/nvim/lua/plugins.lua | 6 | ||||
| -rw-r--r-- | config/nvim/lua/treesitter_config.lua | 1 |
6 files changed, 242 insertions, 37 deletions
diff --git a/config/nvim/colors/tranquil-light.vim b/config/nvim/colors/tranquil-light.vim new file mode 100644 index 0000000..4046a97 --- /dev/null +++ b/config/nvim/colors/tranquil-light.vim @@ -0,0 +1,160 @@ +" Vim color scheme +" +" Name: tranquil-light.vim +" Maintainer: Rubén Beltrán del Río <ben@nsovocal.com> +" Last Change: 05 Mar 2025 +" License: public domain +" Version: 1.1.0 +" +" 256 color scheme using tranquil systems palette in light mode + +set background=light +hi clear +if exists("syntax_on") + syntax reset +endif + +let g:colors_name = "tranquil-light" + +" Variables & Constants +hi @variable guifg=#0F261F +hi link @lsp.type.unresolvedReference.rust DiagnosticUnderlineError +hi Constant guifg=#0000F1 gui=NONE,nocombine cterm=NONE,nocombine + +" Types & Structs +hi Structure guifg=#0000F1 +hi Type guifg=#0000F1 gui=bold cterm=bold +hi Typedef guifg=#80FFCC +hi Function guifg=#FF5EC4 + +" Functions and Macros +hi link @lsp.type.macro.rust Macro +hi link @function.macro.rust Macro +hi Macro guifg=#23C17C gui=bold cterm=bold +hi Include guifg=#23C17C gui=none cterm=none +hi Define guifg=#23C17C gui=italic cterm=italic +hi PreProc guifg=#23C17C +hi PreCondit guifg=#23C17C gui=bold cterm=bold + +" Language +hi Comment guifg=#0F261F guibg=#FFB4F0 +hi SpecialComment guifg=#0F261F gui=bold cterm=bold +hi Todo guifg=#0F261F guibg=bg gui=bold cterm=bold +hi Delimiter guifg=#90A6A2 +hi Identifier guifg=#4F8FE6 +hi Statement guifg=#6F807C gui=bold cterm=bold +hi Keyword guifg=#6F807C gui=bold,italic cterm=bold,italic +hi Repeat guifg=#6F807C gui=bold cterm=bold +hi Exception guifg=#6F807C gui=bold cterm=bold +hi Operator guifg=#FA2B00 +hi Special guifg=#FA2B00 gui=italic cterm=italic +hi SpecialChar guifg=#FA2B00 gui=bold cterm=bold +hi Label guifg=#6F807C gui=none cterm=none +hi StorageClass guifg=#6F807C gui=italic cterm=italic + +" Text +hi Normal guifg=#0F261F guibg=NONE ctermbg=NONE +hi Underlined guifg=#B5D1CC gui=underline cterm=underline +hi Ignore guifg=#B5D1CC guibg=bg +hi Error guifg=#FFFFFF guibg=#FA2B00 +hi Debug guifg=#FFB4F0 gui=bold cterm=bold + +" Specific Types +hi Boolean guifg=#19a6b0 +hi Number guifg=#19a6b0 +hi Float guifg=#19A6B0 +hi Character guifg=#23C17C guibg=#FEFEFE +hi String guifg=#23C17C guibg=#FEFEFE +hi Conditional guifg=#FA2B00 gui=bold cterm=bold + +" File Browser +hi Directory guifg=#23C17C gui=bold + +" Editor +hi Cursor guifg=#FFFFFF guibg=#0000F1 +hi CursorLine guibg=#F1F1F1 +hi CursorColumn guibg=#F1F1F1 +hi LineNr guifg=#0000F1 guibg=#FEFEFE +hi CursorLineNr guifg=#FFFFFF guibg=#0000F1 +hi NonText guifg=#90A6A2 guibg=none +hi SpecialKey guifg=#0000F1 +hi ColorColumn guifg=#FFFFFF guibg=#FA4B00 +hi WinSep guifg=#0f261F +hi SignColumn guifg=#23C17C guibg=#DAE6E3 +hi StatusLine guifg=#FFFFFF guibg=#0F261F +hi StatusLineNC guifg=#DAE6E3 guibg=#90A6A2 +hi TabLineFill guifg=#FFFFFF guibg=#0F261F +hi TabLine guifg=#FFFFFF guibg=#0F261F +hi TabLineSel guifg=#FFFFFF guibg=#23C17C +hi Tag guifg=#0F261F gui=underline cterm=underline guisp=#0000F1 +hi Title guifg=#4F8FE6 +hi VertSplit guifg=#0F261F guibg=#FFFFFF gui=bold cterm=bold + +" Editor / Search & Matching +hi IncSearch guifg=#0F261F guibg=#FFAB00 +hi CurSearch guifg=#FFFFFF guibg=#23C17C +hi Search guifg=#0F261F guibg=#FFBF6E +hi Substitute guifg=#0F261F guibg=#29BDAD +hi MatchParen guifg=#0F261F guibg=#FFAB00 gui=bold cterm=bold +hi VisualNOS guibg=#0024CC +hi Visual guibg=#0024CC guifg=#FFFFFF + +" Editor / Text Folding +hi FoldColumn guifg=#FFFFFF guibg=#0F261F +hi Folded guifg=#FFFFFF guibg=#90A6A2 + +" Diffing +hi DiffAdd guifg=#23C17C guibg=#F1F1F1 +hi DiffChange guifg=#FFFFFF guibg=#0000F1 +hi DiffDelete guifg=#FA2B00 guibg=#90A6A2 +hi DiffText gui=bold cterm=bold +hi DiffTextAdd gui=bold cterm=bold +hi link @text.diff.add DiffAdd +hi link @text.diff.delete DiffDelete + +" Editor / Messages +hi MsgArea guibg=#FFFFFF +hi OkMsg guifg=#FFFFFF guibg=#23C17C gui=bold cterm=bold +hi ErrorMsg guifg=#FFFFFF guibg=#FA2B00 gui=bold cterm=bold +hi WarningMsg guifg=#0F261F guibg=#FFAB00 gui=bold cterm=bold +hi StderrMsg guifg=#FA2B00 +hi StdoutMsg guifg=#0F261F +hi ModeMsg guifg=#FFFFFF guibg=#0000F1 +hi MoreMsg guifg=#FFFFFF guibg=#23C17C +hi Question guifg=#0F261F guibg=#80FFCC + +" Complete Menu +hi Pmenu guifg=#0F261F guibg=#80FFCC +hi PmenuSel guifg=#FFFFFF guibg=#0F261F +hi PmenuSbar guibg=#0F261F +hi PmenuThumb guifg=#80FFCC +hi WildMenu guifg=#80FFCC guibg=#0F261F + +" WhichKey +hi WhichKeyNormal guibg=#0F261F +hi WhichKeyBorder guibg=#23C17C guifg=#FFFFFF +hi WhichKeyDesc guifg=#90A6A2 +hi WhichKeyGroup guifg=#23C17C +hi WhichKeyIcon guibg=#0F261F guifg=#FA2B00 +hi WhichKeyIconAzure guibg=#0F261F guifg=#FFB4F0 +hi WhichKeyIconBlue guibg=#0F261F guifg=#4F8FE6 +hi WhichKeyIconCyan guibg=#0F261F guifg=#80FFCC +hi WhichKeyIconGreen guibg=#0F261F guifg=#23C17C +hi WhichKeyIconGrey guibg=#0F261F guifg=#90A6A2 +hi WhichKeyIconOrange guibg=#0F261F guifg=#FFCFC4 +hi WhichKeyIconPurple guibg=#0F261F guifg=#FF616B +hi WhichKeyIconRed guibg=#0F261F guifg=#FA2B00 +hi WhichKeyIconYellow guibg=#0F261F guifg=#FAED8F +hi WhichKeySeparator guifg=#B5D1CC +hi WhichKeyTitle guifg=#23C17C + +" LSP Related +hi LspInlayHint guifg=#90A6A2 +hi DiagnosticError guifg=#FFFFFF guibg=#FA2B00 +hi DiagnosticWarn guifg=#0F261F guibg=#FAED8F +hi DiagnosticInfo guifg=#FFFFFF guibg=#4F8FE6 +hi DiagnosticHint guifg=#0F261F guibg=#FFB4F0 +hi DiagnosticUnderlineError guifg=#0F261F guisp=#FA2B00 gui=undercurl,italic cterm=undercurl,italic + +" FZF +hi @fzf.hlplus guifg=#FFFFFF diff --git a/config/nvim/init.lua b/config/nvim/init.lua index f614402..8bf4824 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -10,7 +10,7 @@ vim.opt.colorcolumn='80,150' -- Show color columns -- Color vim.opt.termguicolors = true -vim.cmd.color('tranquil') +vim.cmd.color('tranquil-light') -- Tab Style (Always override with editorconfig) vim.opt.tabstop = 2 -- 2 Spaces per tab @@ -29,9 +29,11 @@ vim.opt.smartcase = true -- Unless we use both cases in searc vim.opt.wildmode = 'list:longest,list:full' -- Autocomplete common matching string -- Folding Behavior -vim.opt.foldmethod = 'syntax' -- Use syntax highlight to define folds +vim.opt.foldmethod = 'expr' -- Use treesitter for folds +vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()" vim.opt.foldnestmax = 10 -- Max 10 folds vim.opt.foldlevelstart = 99 -- Start with all folds open +vim.opt.foldcolumn = "auto" -- Relative Number Behavior vim.api.nvim_create_autocmd({'FocusLost', 'InsertEnter'}, { diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index bef9479..9d6f765 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": "a63d28a9aa59c20a503ce38608fb6bc7cb3842f4" }, + "fzf-lua": { "branch": "main", "commit": "c102a4eeb10a04ed7e69ce80918923c4175c19d8" }, "gemini.vim": { "branch": "master", "commit": "c9efb59c97b71c28d4678c79fd21fbdd3a69d196" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, + "lazydev.nvim": { "branch": "main", "commit": "e28ce52fc7ff79fcb76f0e79ee6fb6182fca90b9" }, "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": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, + "nvim-dap": { "branch": "master", "commit": "6782b097af2417a4c3e33849b0a26ae2188bd7ea" }, + "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": "ac98db2f9f06a56498ec890a96928774eae412c3" }, "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": "7e1cd7703ff2924d7038476dcbc04b950203b902" }, "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": "b4177e3eaf15fe5eb8357ebac2286d488be1ed00" } } 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', |