diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 7da2ddb..9a31cfe 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -7,24 +7,24 @@ "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, "cmp-vsnip": { "branch": "main", "commit": "989a8a73c44e926199bfd05fa7a516d51f2d2752" }, "dashboard-nvim": { "branch": "master", "commit": "f787e3462c2ee2b6117b17c1aa4ddf66cb6f57fe" }, - "everforest-nvim": { "branch": "main", "commit": "d235ca0aa6a29546e661a020e2618612acbbffbe" }, - "gitsigns.nvim": { "branch": "main", "commit": "dd3f588bacbeb041be6facf1742e42097f62165d" }, + "gitsigns.nvim": { "branch": "main", "commit": "31d6fb2d618bca1482b9f274751ead5f03461408" }, "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, - "lualine.nvim": { "branch": "master", "commit": "131a558e13f9f28b15cd235557150ccb23f89286" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" }, - "mason.nvim": { "branch": "main", "commit": "8e921c2b68571e978db5d4d3fef9c9a7f8755473" }, - "nvim-cmp": { "branch": "main", "commit": "a1d504892f2bc56c2e79b65c6faded2fd21f3eca" }, - "nvim-tree.lua": { "branch": "master", "commit": "07f541fcaa4a5ae019598240362449ab7e9812b3" }, - "nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" }, - "nvim-web-devicons": { "branch": "master", "commit": "2795c26c916bb3c57dde308b82be51971fa92747" }, + "lualine.nvim": { "branch": "master", "commit": "221ce6b2d999187044529f49da6554a92f740a96" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "67029ccdac1ef8941e13b826417bc0ffac24cc86" }, + "mason.nvim": { "branch": "main", "commit": "2a6940af80375532e5e9e7c1f2fc6319a1b7a69d" }, + "nvim-cmp": { "branch": "main", "commit": "2ffe79f1f021def8dd1fcd81deb16f1bb0d989f3" }, + "nvim-tree.lua": { "branch": "master", "commit": "b2aadda94b107480c48e548d6db51c6840b7b33c" }, + "nvim-treesitter": { "branch": "main", "commit": "7b6cc8949f9999c5ed91436cbe24aa5f99c42025" }, + "nvim-web-devicons": { "branch": "master", "commit": "2ae6958df7ced50baac5035cec0c15799eedfbf7" }, "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "rustaceanvim": { "branch": "master", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" }, + "rustaceanvim": { "branch": "main", "commit": "e9c5aaba16fead831379d5f44617547a90b913c7" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, "vim-floaterm": { "branch": "master", "commit": "bb4ba7952e906408e1f83b215f55ffe57efcade6" }, "vim-vsnip": { "branch": "master", "commit": "9bcfabea653abdcdac584283b5097c3f8760abaa" }, - "vimtex": { "branch": "master", "commit": "182ad387e3f3107699483606c9a2b6648f8437b2" }, + "vimtex": { "branch": "master", "commit": "154eca8f68a5ad54eb12308bb378e88bdd0dfb3e" }, "vimwiki": { "branch": "dev", "commit": "a54a3002e229c4b43d69ced170ff77663a5b2c40" }, + "vscode.nvim": { "branch": "main", "commit": "aa1102a7e15195c9cca22730b09224a7f7745ba8" }, "which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" } } diff --git a/nvim/.config/nvim/lua/lazy-setup.lua b/nvim/.config/nvim/lua/lazy-setup.lua index c888190..98ec3b3 100644 --- a/nvim/.config/nvim/lua/lazy-setup.lua +++ b/nvim/.config/nvim/lua/lazy-setup.lua @@ -22,7 +22,7 @@ require("lazy").setup({ { import = "plugins" }, }, install = { - colorscheme = { "everforest" }, + colorscheme = { "vscode" }, }, checker = { enabled = true, diff --git a/nvim/.config/nvim/lua/plugins/colorscheme.lua b/nvim/.config/nvim/lua/plugins/colorscheme.lua index 47d88b0..1810f45 100644 --- a/nvim/.config/nvim/lua/plugins/colorscheme.lua +++ b/nvim/.config/nvim/lua/plugins/colorscheme.lua @@ -1,10 +1,44 @@ +-- Cursor Dark. +-- +-- Cursor's default theme is VS Code Dark Modern lineage, so vscode.nvim already +-- ships the exact token colors (#569CD6 keywords, #CE9178 strings, #6A9955 +-- comments, #4EC9B0 types). Only the chrome and the :terminal palette need +-- pinning so Neovim matches kitty/tmux/fish. return { { - "neanias/everforest-nvim", + "Mofiqul/vscode.nvim", + lazy = false, priority = 1000, config = function() - require("everforest").setup({}) - vim.cmd([[colorscheme everforest]]) + vim.o.background = "dark" + + require("vscode").setup({ + -- The editor background is pinned to kitty's #181818 instead of Cursor's + -- #1F1F1F: kitty only leaves a cell transparent when it uses the default + -- background, so matching it keeps background_opacity working in nvim. + color_overrides = { + vscBack = "#181818", + vscTabCurrent = "#1F1F1F", + vscTabOther = "#181818", + vscTabOutside = "#181818", + vscLeftDark = "#181818", + }, + }) + + vim.cmd.colorscheme("vscode") + + -- :terminal gets the same 16 colors as kitty and tmux. vscode.nvim would + -- otherwise map them onto the syntax palette, which makes green the + -- comment green (#6A9955) and looks nothing like the shell. + local palette = { + [0] = "#000000", "#cd3131", "#0dbc79", "#e5e510", + "#2472c8", "#bc3fbc", "#11a8cd", "#e5e5e5", + "#666666", "#f14c4c", "#23d18b", "#f5f543", + "#3b8eea", "#d670d6", "#29b8db", "#e5e5e5", + } + for i, color in pairs(palette) do + vim.g["terminal_color_" .. i] = color + end end, }, } diff --git a/nvim/.config/nvim/lua/plugins/treesitter.lua b/nvim/.config/nvim/lua/plugins/treesitter.lua index dd2cb45..a83d2de 100644 --- a/nvim/.config/nvim/lua/plugins/treesitter.lua +++ b/nvim/.config/nvim/lua/plugins/treesitter.lua @@ -1,17 +1,31 @@ return { { "nvim-treesitter/nvim-treesitter", + branch = "main", + lazy = false, build = ":TSUpdate", config = function() - require("nvim-treesitter").setup { - ensure_installed = { "bash", "c", "cpp", "javascript", "json", "python", "css", "rust", "lua", "markdown", "markdown_inline" }, - auto_install = true, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - indent = { enable = true }, + local ts = require("nvim-treesitter") + ts.setup() + + local ensure = { + "bash", "c", "cpp", "javascript", "json", "python", + "css", "rust", "lua", "markdown", "markdown_inline", + "php", "html", "terraform", } + ts.install(ensure) + + vim.api.nvim_create_autocmd("FileType", { + pattern = { + "bash", "sh", "c", "cpp", "javascript", "json", "python", + "css", "rust", "lua", "markdown", + "php", "html", "terraform", + }, + callback = function() + pcall(vim.treesitter.start) + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end, + }) end, }, } diff --git a/nvim/.config/nvim/lua/plugins/ui.lua b/nvim/.config/nvim/lua/plugins/ui.lua index ef4743a..4165bf8 100644 --- a/nvim/.config/nvim/lua/plugins/ui.lua +++ b/nvim/.config/nvim/lua/plugins/ui.lua @@ -111,11 +111,37 @@ return { -- Status line { "nvim-lualine/lualine.nvim", - dependencies = { "nvim-tree/nvim-web-devicons", "neanias/everforest-nvim" }, + dependencies = { "nvim-tree/nvim-web-devicons", "Mofiqul/vscode.nvim" }, config = function() + -- Cursor Dark, deliberately mirroring the tmux status bar: same #181818 + -- bar, same #2b2b2b raised segments, mode colour from the shared palette. + local bar, raised, text, dim = "#181818", "#2b2b2b", "#cccccc", "#9d9d9d" + + local function mode(bg, fg) + return { + a = { bg = bg, fg = fg or "#ffffff", gui = "bold" }, + b = { bg = raised, fg = text }, + c = { bg = bar, fg = dim }, + } + end + + local cursor_dark = { + normal = mode("#2472c8"), + insert = mode("#0dbc79"), + visual = mode("#bc3fbc"), + replace = mode("#cd3131"), + -- dark text on yellow; white would be unreadable here + command = mode("#e5e510", "#181818"), + inactive = { + a = { bg = bar, fg = "#666666" }, + b = { bg = bar, fg = "#666666" }, + c = { bg = bar, fg = "#666666" }, + }, + } + require('lualine').setup { options = { - theme = 'everforest', + theme = cursor_dark, component_separators = { left = '', right = '' }, section_separators = { left = '', right = '' }, }