diff --git a/nvim/README.md b/nvim/README.md index d881e1c..d1d2efe 100644 --- a/nvim/README.md +++ b/nvim/README.md @@ -158,7 +158,7 @@ Once installed, launch the desktop app with `neovide` from a terminal — if tha ## Look & feel -- **Theme**: [`vscode.nvim`](https://github.com/Mofiqul/vscode.nvim) (dark variant, VS Code Dark+ palette), on a near-black `#090909` background, with custom tinted backgrounds for error/warn/info/hint diagnostic virtual lines. lualine uses the plugin's own `vscode` theme. +- **Theme**: [`vscode.nvim`](https://github.com/Mofiqul/vscode.nvim) (dark variant, VS Code Dark+ palette), on a near-black `#090909` background (explorer, tabs, statusline and popups use near-black shades too, not VS Code's grays), with macros in Visual Studio's muted purple (`#BEB7FF`) and custom tinted backgrounds for error/warn/info/hint diagnostic virtual lines. lualine uses the plugin's own `vscode` theme. - **Cursor animation**: an animated cursor trail in both frontends, via different mechanisms — see [Terminal vs. desktop (Neovide)](#terminal-vs-desktop-neovide) for which plugin does what and why. - **Dashboard**: `alpha-nvim` start screen with quick actions — find file, recent files, live grep, new file, edit config, quit. - **Statusline**: `lualine`, styled with true Powerline arrow separators (the seamless, edge-to-edge kind — between sections, a thinner version between components within a section). Left to right: diff --git a/nvim/config/nvim/lua/plugins/colorscheme.lua b/nvim/config/nvim/lua/plugins/colorscheme.lua index 6bac5a9..73619e1 100644 --- a/nvim/config/nvim/lua/plugins/colorscheme.lua +++ b/nvim/config/nvim/lua/plugins/colorscheme.lua @@ -30,17 +30,34 @@ return { -- Neovide doesn't use this option at all -- see -- vim.g.neovide_opacity in init.lua for its equivalent. transparent = not vim.g.neovide, - -- Near-black background instead of VS Code's #1F1F1F. (With - -- `transparent` on, vscode.nvim forces vscBack to NONE, so this - -- shows in Neovide; in a terminal the terminal's own background - -- shows instead -- set that to #090909 to match.) The cursor-line - -- shade and active-tab background are nudged to fit it. + -- Near-black surfaces instead of VS Code's grays (#1F1F1F editor, + -- #252526/#2D2D2D sidebar, tabs, statusline and popups). With + -- `transparent` on, vscode.nvim forces vscBack to NONE, so the + -- #090909 shows in Neovide; in a terminal the terminal's own + -- background shows instead -- set that to #090909 to match. + -- Overriding the palette (rather than individual highlight + -- groups) means every plugin the theme styles -- the explorer, + -- tabs, statusline, popups, messages -- picks the change up. color_overrides = { vscBack = "#090909", - vscCursorDarkDark = "#1a1a1a", + vscCursorDarkDark = "#1a1a1a", -- cursor line, explorer cursor line + vscLeftDark = "#111111", -- sidebars, messages + vscLeftMid = "#1a1a1a", + vscTabOther = "#111111", -- inactive tabs vscTabCurrent = vim.g.neovide and "#090909" or "NONE", + vscTabOutside = vim.g.neovide and "#090909" or "NONE", -- tab bar fill + vscPopupBack = "#090909", -- floating windows, completion menu + vscPopupHighlightGray = "#1a1a1a", -- popup scrollbar track }, group_overrides = { + -- Macros: Visual Studio's muted purple. clangd reports macro + -- usages as semantic tokens (@lsp.type.macro, which vscode.nvim + -- links to the constant blue); the other two cover treesitter + -- when no language server is attached. + ["@lsp.type.macro"] = { fg = "#BEB7FF" }, + ["@constant.macro"] = { fg = "#BEB7FF" }, + ["@function.macro"] = { fg = "#BEB7FF" }, + -- Tinted backgrounds behind diagnostic virtual text/lines. -- vscode.nvim's own Hint color is the same blue as Info, so -- hints use the palette's teal to match the dark-teal tint. diff --git a/nvim/config/nvim/lua/plugins/lualine.lua b/nvim/config/nvim/lua/plugins/lualine.lua index 3222813..be8eb29 100644 --- a/nvim/config/nvim/lua/plugins/lualine.lua +++ b/nvim/config/nvim/lua/plugins/lualine.lua @@ -4,12 +4,24 @@ return { "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, config = function() + -- The plugin's lualine theme paints the statusline in VS Code + -- grays (#262626 / #373737) outside transparent mode; swap those + -- for the near-black shades used in colorscheme.lua. + local vscode_theme = require("lualine.themes.vscode") + local near_black = { ["#262626"] = "#090909", ["#373737"] = "#1a1a1a" } + for _, mode in pairs(vscode_theme) do + for _, section in pairs(mode) do + if near_black[section.bg] then + section.bg = near_black[section.bg] + end + end + end + require("lualine").setup({ options = { -- vscode.nvim ships a hand-built lualine theme, so use it - -- instead of "auto" (which would derive colors from the - -- active colorscheme's highlight groups). - theme = "vscode", + -- (patched above) instead of "auto". + theme = vscode_theme, -- Powerline private-use-area glyphs (E0B0-E0B3). This needs -- the terminal's font actually set to the PATCHED family -- (e.g. "JetBrainsMono Nerd Font" / "CaskaydiaCove Nerd