From 7610f245821e98232e7ee8dcbf3364725807187d Mon Sep 17 00:00:00 2001 From: not Date: Sat, 3 Dec 2022 11:10:00 -0500 Subject: [PATCH 01/47] create license closes #106 --- license | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 license diff --git a/license b/license new file mode 100644 index 0000000..590df78 --- /dev/null +++ b/license @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Rosé Pine + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From 1837586b7dbb7c34486e17bdb966a2e19cf63c3b Mon Sep 17 00:00:00 2001 From: Zakhary Kaplan Date: Tue, 27 Dec 2022 12:23:58 -0500 Subject: [PATCH 02/47] fix: indent-blankline missing hlGroups (#108) --- lua/rose-pine/theme.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index c262f1a..7a99908 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -376,6 +376,8 @@ function M.get(config) -- luka-reineke/indent-blankline.nvim IndentBlanklineChar = { fg = p.muted }, + IndentBlanklineSpaceChar = { fg = p.muted }, + IndentBlanklineSpaceCharBlankline = { fg = p.muted }, -- hrsh7th/nvim-cmp CmpItemAbbr = { fg = p.subtle }, From 8e800a99993a318f42af260f522a293b49c5adf7 Mon Sep 17 00:00:00 2001 From: Arkady Rost Date: Tue, 3 Jan 2023 18:47:51 +0000 Subject: [PATCH 03/47] Fixed Telescope background in case when config.disable_background = true and (#110) config.disable_float_background = false Co-authored-by: Arkady Rost --- lua/rose-pine/theme.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 7a99908..3a78242 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -465,10 +465,10 @@ function M.get(config) PounceMatch = { link = 'Search' }, -- nvim-telescope/telescope.nvim - TelescopeBorder = { fg = groups.border }, + TelescopeBorder = { fg = groups.border, bg = styles.float_background }, TelescopeMatching = { fg = p.rose }, - TelescopeNormal = { fg = p.subtle }, - TelescopePromptNormal = { fg = p.text }, + TelescopeNormal = { fg = p.subtle, bg = styles.float_background }, + TelescopePromptNormal = { fg = p.text, bg = styles.float_background }, TelescopePromptPrefix = { fg = p.subtle }, TelescopeSelection = { fg = p.text, bg = p.overlay }, TelescopeSelectionCaret = { fg = p.rose, bg = p.overlay }, From c89d336f5a2dafac860b0afc8823de833152a00d Mon Sep 17 00:00:00 2001 From: mvllow Date: Fri, 13 Jan 2023 13:55:27 -0500 Subject: [PATCH 04/47] ci: add issue templates Thanks to https://github.com/folke/lazy.nvim for the inspiration! --- .github/ISSUE_TEMPLATE/bug_report.yml | 80 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.yml | 29 ++++++++ 2 files changed, 109 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..178ab92 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,80 @@ +name: Bug Report +description: File a bug/issue +title: "bug: " +labels: [bug] +body: + - type: markdown + attributes: + value: | + **Before** reporting an issue, make sure to read the [documentation](https://github.com/rose-pine/neovim) and search [existing issues](https://github.com/rose-pine/neovim/issues). Usage questions such as ***"How do I...?"*** belong in [Discussions](https://github.com/rose-pine/neovim/discussions) and will be closed. + - type: input + attributes: + label: "Neovim version (nvim -v)" + placeholder: "0.8.0 commit db1b0ee3b30f" + validations: + required: true + - type: input + attributes: + label: "Terminal" + placeholder: "Kitty" + validations: + required: true + - type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. Please include any related errors you see in Neovim. + validations: + required: true + - type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. + 2. + 3. + validations: + required: true + - type: textarea + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: true + - type: textarea + attributes: + label: Repro + description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua` + value: | + -- DO NOT change the paths and do not remove the colorscheme + local root = vim.fn.fnamemodify("./.repro", ":p") + + -- Set stdpaths to use .repro + for _, name in ipairs({ "config", "data", "state", "cache" }) do + vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name + end + + -- Bootstrap lazy.nvim + local lazypath = root .. "/plugins/lazy.nvim" + if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, }) + end + vim.opt.runtimepath:prepend(lazypath) + + -- Install plugins + local plugins = { + "rose-pine/neovim.nvim", + config = function() + -- Add relevant Rosé Pine config below + require("rose-pine").setup({}) + end + } + require("lazy").setup(plugins, { + root = root .. "/plugins", + }) + + vim.cmd.colorscheme("rose-pine") + -- Add anything else here + render: Lua + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..2b45cdb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,29 @@ +name: Feature Request +description: Suggest a new feature +title: "feature: " +labels: [enhancement] +body: + - type: textarea + validations: + required: true + attributes: + label: Is your feature request related to a problem? Please describe. + description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + - type: textarea + validations: + required: true + attributes: + label: Describe the solution you'd like + description: A clear and concise description of what you want to happen. + - type: textarea + validations: + required: true + attributes: + label: Describe alternatives you've considered + description: A clear and concise description of any alternative solutions or features you've considered. + - type: textarea + validations: + required: false + attributes: + label: Additional context + description: Add any other context or screenshots about the feature request here. From 02604c92b9fe5e01b9adcd746f274c837a5a673c Mon Sep 17 00:00:00 2001 From: mvllow Date: Fri, 13 Jan 2023 13:58:29 -0500 Subject: [PATCH 05/47] ci: fix template formatting --- .github/ISSUE_TEMPLATE/bug_report.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 178ab92..6a475c5 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -64,10 +64,10 @@ body: -- Install plugins local plugins = { "rose-pine/neovim.nvim", - config = function() + config = function() -- Add relevant Rosé Pine config below - require("rose-pine").setup({}) - end + require("rose-pine").setup({}) + end } require("lazy").setup(plugins, { root = root .. "/plugins", From f967508a5075e19287b2370135dd35fa356db678 Mon Sep 17 00:00:00 2001 From: mvllow Date: Fri, 13 Jan 2023 14:11:12 -0500 Subject: [PATCH 06/47] chore: update editorconfig --- .editorconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index 7fc8038..283165a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,6 +7,6 @@ indent_style = tab insert_final_newline = true trim_trailing_whitespace = true -[*.lua] -indent_size = 3 -indent_style = tab +[*.{yaml,yml}] +indent_size = 2 +indent_style = space From e3895d8e76c63d10975b56249445bdc58197f6c3 Mon Sep 17 00:00:00 2001 From: mvllow Date: Mon, 16 Jan 2023 23:42:14 -0500 Subject: [PATCH 07/47] fix: decouple `StatusLine` background from floats --- lua/rose-pine/theme.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 3a78242..edda7d6 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -70,7 +70,7 @@ function M.get(config) SpellLocal = { sp = p.subtle, style = 'undercurl' }, SpellRare = { sp = p.subtle, style = 'undercurl' }, SignColumn = { fg = p.text, bg = styles.background }, - StatusLine = { fg = p.subtle, bg = styles.float_background }, + StatusLine = { fg = p.subtle, bg = p.surface }, StatusLineNC = { fg = p.muted, bg = styles.background }, StatusLineTerm = { link = 'StatusLine' }, StatusLineTermNC = { link = 'StatusLineNC' }, From 075ed20832863f9635674a6217eb4dcdb8caad12 Mon Sep 17 00:00:00 2001 From: not Date: Tue, 17 Jan 2023 21:07:28 -0500 Subject: [PATCH 08/47] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 6a475c5..c0c3f56 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -63,7 +63,10 @@ body: -- Install plugins local plugins = { - "rose-pine/neovim.nvim", + "rose-pine/neovim", + name = "rose-pine", + lazy = false, + priority = 1000, config = function() -- Add relevant Rosé Pine config below require("rose-pine").setup({}) From 845a6ad5443e3559dde42910c4523a5835c9233b Mon Sep 17 00:00:00 2001 From: not Date: Tue, 17 Jan 2023 21:09:31 -0500 Subject: [PATCH 09/47] Update readme.md --- readme.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/readme.md b/readme.md index 973625b..af2c78a 100644 --- a/readme.md +++ b/readme.md @@ -13,6 +13,21 @@ ## Usage +> With [lazy.nvim](https://github.com/folke/lazy.nvim) + +```lua +{ + 'rose-pine/neovim', + name = 'rose-pine', + lazy = false, + priority = 1000, + config = function() + require("rose-pine").setup() + vim.cmd('colorscheme rose-pine') + end +} +``` + > With [packer.nvim](https://github.com/wbthomason/packer.nvim) ```lua @@ -20,6 +35,7 @@ use({ 'rose-pine/neovim', as = 'rose-pine', config = function() + require("rose-pine").setup() vim.cmd('colorscheme rose-pine') end }) From 4eac261d575d4662c4c4ee12e3ea44571d75f095 Mon Sep 17 00:00:00 2001 From: not Date: Wed, 22 Feb 2023 13:25:36 -0600 Subject: [PATCH 10/47] Merge canary (#114) * feat!: use new highlight api * feat: support custom highlight blending Example: ``` { highlight_groups = { StatusLine = { bg = 'love', blend = 10 } } } ``` * refactor: move config into separate file * wip: update semantic tokens * ci: add issue templates Thanks to https://github.com/folke/lazy.nvim for the inspiration! * ci: fix template formatting * chore: update editorconfig * fix: decouple more backgrounds from floats * change `@tag.attribute` to iris * add cursor highlights Closes #121 * match link underline colour * improve `dim_nc_background` behaviour ref #123 * feat: expose each variant as individual theme ref #98 * feat: update tokens ref #107 * feat: distinguish between `CmpItemKind`'s --- .github/ISSUE_TEMPLATE/bug_report.yml | 2 - colors/rose-pine-dawn.lua | 1 + colors/rose-pine-main.lua | 1 + colors/rose-pine-moon.lua | 1 + lua/rose-pine.lua | 85 +-- lua/rose-pine/config.lua | 100 +++ lua/rose-pine/palette.lua | 22 +- lua/rose-pine/theme.lua | 944 +++++++++++++------------- lua/rose-pine/util.lua | 28 +- readme.md | 10 +- 10 files changed, 606 insertions(+), 588 deletions(-) create mode 100644 colors/rose-pine-dawn.lua create mode 100644 colors/rose-pine-main.lua create mode 100644 colors/rose-pine-moon.lua create mode 100644 lua/rose-pine/config.lua diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c0c3f56..b7603ef 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -65,8 +65,6 @@ body: local plugins = { "rose-pine/neovim", name = "rose-pine", - lazy = false, - priority = 1000, config = function() -- Add relevant Rosé Pine config below require("rose-pine").setup({}) diff --git a/colors/rose-pine-dawn.lua b/colors/rose-pine-dawn.lua new file mode 100644 index 0000000..b4482c0 --- /dev/null +++ b/colors/rose-pine-dawn.lua @@ -0,0 +1 @@ +require('rose-pine').colorscheme({ variant = 'dawn' }) diff --git a/colors/rose-pine-main.lua b/colors/rose-pine-main.lua new file mode 100644 index 0000000..6951634 --- /dev/null +++ b/colors/rose-pine-main.lua @@ -0,0 +1 @@ +require('rose-pine').colorscheme({ variant = 'main' }) diff --git a/colors/rose-pine-moon.lua b/colors/rose-pine-moon.lua new file mode 100644 index 0000000..57e6a68 --- /dev/null +++ b/colors/rose-pine-moon.lua @@ -0,0 +1 @@ +require('rose-pine').colorscheme({ variant = 'moon' }) diff --git a/lua/rose-pine.lua b/lua/rose-pine.lua index ca82387..bbfadb1 100644 --- a/lua/rose-pine.lua +++ b/lua/rose-pine.lua @@ -1,70 +1,12 @@ -local util = require('rose-pine.util') - +local config = require('rose-pine.config') local M = {} -local config = { - bold_vert_split = false, - dark_variant = 'main', - dim_nc_background = false, - disable_background = false, - disable_float_background = false, - disable_italics = false, - - groups = { - background = 'base', - panel = 'surface', - border = 'highlight_med', - comment = 'muted', - link = 'iris', - punctuation = 'muted', - - error = 'love', - hint = 'iris', - info = 'foam', - warn = 'gold', - - git_add = 'foam', - git_change = 'rose', - git_delete = 'love', - git_dirty = 'rose', - git_ignore = 'muted', - git_merge = 'iris', - git_rename = 'pine', - git_stage = 'iris', - git_text = 'rose', - - headings = { - h1 = 'iris', - h2 = 'foam', - h3 = 'rose', - h4 = 'gold', - h5 = 'pine', - h6 = 'foam', - }, - }, - highlight_groups = {}, -} - -function M.setup(opts) - opts = opts or {} - vim.g.rose_pine_variant = opts.dark_variant or 'main' - - if opts.groups and type(opts.groups.headings) == 'string' then - opts.groups.headings = { - h1 = opts.groups.headings, - h2 = opts.groups.headings, - h3 = opts.groups.headings, - h4 = opts.groups.headings, - h5 = opts.groups.headings, - h6 = opts.groups.headings, - } +---@param options Config|nil +function M.colorscheme(options) + if options then + config.extend(options) end - config.user_variant = opts.dark_variant or nil - config = vim.tbl_deep_extend('force', config, opts) -end - -function M.colorscheme() if vim.g.colors_name then vim.cmd('hi clear') end @@ -72,20 +14,9 @@ function M.colorscheme() vim.opt.termguicolors = true vim.g.colors_name = 'rose-pine' - local theme = require('rose-pine.theme').get(config) - - -- Set theme highlights - for group, color in pairs(theme) do - -- Skip highlight group if user overrides - if config.highlight_groups[group] == nil then - util.highlight(group, color) - end - end - - -- Set user highlights - for group, color in pairs(config.highlight_groups) do - util.highlight(group, color) - end + require('rose-pine.theme')._load(config.options) end +M.setup = config.setup + return M diff --git a/lua/rose-pine/config.lua b/lua/rose-pine/config.lua new file mode 100644 index 0000000..c5a935e --- /dev/null +++ b/lua/rose-pine/config.lua @@ -0,0 +1,100 @@ +local M = {} + +---@class Groups +---@field background string +---@field panel string +---@field border string +---@field comment string +---@field link string +---@field punctuation string +---@field error string +---@field hint string +---@field info string +---@field warn string +---@field git_add string +---@field git_change string +---@field git_delete string +---@field git_dirty string +---@field git_ignore string +---@field git_merge string +---@field git_rename string +---@field git_stage string +---@field git_text string +---@field headings Headings|string + +---@class Headings +---@field h1 string +---@field h2 string +---@field h3 string +---@field h4 string +---@field h5 string +---@field h6 string + +---@class Config +---@field variant 'auto'|'main'|'moon'|'dawn' +---@field dark_variant 'main'|'moon'|'dawn' +---@field bold_vert_split boolean +---@field dim_nc_background boolean +---@field disable_background boolean +---@field disable_float_background boolean +---@field disable_italics boolean +---@field groups Groups +---@field highlight_groups table +local defaults = { + variant = 'auto', + dark_variant = 'main', + bold_vert_split = false, + dim_nc_background = false, + disable_background = false, + disable_float_background = false, + disable_italics = false, + highlight_groups = {}, + + groups = { + background = 'base', + panel = 'surface', + border = 'highlight_med', + comment = 'muted', + link = 'iris', + punctuation = 'muted', + error = 'love', + hint = 'iris', + info = 'foam', + warn = 'gold', + git_add = 'foam', + git_change = 'rose', + git_delete = 'love', + git_dirty = 'rose', + git_ignore = 'muted', + git_merge = 'iris', + git_rename = 'pine', + git_stage = 'iris', + git_text = 'rose', + headings = { + h1 = 'iris', + h2 = 'foam', + h3 = 'rose', + h4 = 'gold', + h5 = 'pine', + h6 = 'foam', + }, + }, +} + +---@type Config +M.options = {} + +---@param options Config|nil +function M.setup(options) + M.options = vim.tbl_deep_extend('force', {}, defaults, options or {}) +end + +---@param options Config|nil +function M.extend(options) + M.options = + vim.tbl_deep_extend('force', {}, M.options or defaults, options or {}) +end + +M.setup() + +return M diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua index d98eaec..db776f5 100644 --- a/lua/rose-pine/palette.lua +++ b/lua/rose-pine/palette.lua @@ -1,5 +1,8 @@ +local options = require('rose-pine.config').options + local variants = { main = { + nc = '#16141f', base = '#191724', surface = '#1f1d2e', overlay = '#26233a', @@ -18,6 +21,7 @@ local variants = { none = 'NONE', }, moon = { + nc = '#1f1d30', base = '#232136', surface = '#2a273f', overlay = '#393552', @@ -36,6 +40,7 @@ local variants = { none = 'NONE', }, dawn = { + nc = '#f8f0e7', base = '#faf4ed', surface = '#fffaf3', overlay = '#f2e9e1', @@ -55,12 +60,15 @@ local variants = { }, } -local palette = {} - -if vim.o.background == 'light' then - palette = variants.dawn -else - palette = variants[(vim.g.rose_pine_variant == 'moon' and 'moon') or 'main'] +if options.variant == 'main' then + return variants.main +end +if options.variant == 'moon' then + return variants.moon +end +if options.variant == 'dawn' then + return variants.dawn end -return palette +return vim.o.background == 'light' and variants.dawn + or variants[options.dark_variant or 'main'] diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index edda7d6..f065f69 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -1,523 +1,488 @@ -local blend = require('rose-pine.util').blend - local M = {} -function M.get(config) +---@param options Config +function M._load(options) + local h = require('rose-pine.util').highlight local p = require('rose-pine.palette') - local theme = {} - local groups = config.groups or {} - local styles = { - italic = (config.disable_italics and p.none) or 'italic', - vert_split = (config.bold_vert_split and groups.border) or p.none, - background = (config.disable_background and p.none) - or groups.background, - float_background = (config.disable_float_background and p.none) - or groups.panel, + local groups = options.groups or {} + local maybe = { + base = (options.disable_background and p.none) or p.base, + surface = (options.disable_float_background and p.none) or p.surface, + italic = not options.disable_italics, } - styles.nc_background = (config.dim_nc_background and groups.panel) - or styles.background + maybe.bold_vert_split = (options.bold_vert_split and groups.border) + or p.none + maybe.dim_nc_background = (options.dim_nc_background and p.nc) - theme = { - ColorColumn = { bg = p.overlay }, - Conceal = { bg = p.none }, - CurSearch = { link = 'IncSearch' }, - -- Cursor = {}, - CursorColumn = { bg = p.highlight_low }, - -- CursorIM = {}, - CursorLine = { bg = p.highlight_low }, - CursorLineNr = { fg = p.text }, - DarkenedPanel = { bg = groups.panel }, - DarkenedStatusline = { bg = groups.panel }, - DiffAdd = { bg = blend(groups.git_add, groups.background, 0.2) }, - DiffChange = { bg = p.overlay }, - DiffDelete = { bg = blend(groups.git_delete, groups.background, 0.2) }, - DiffText = { bg = blend(groups.git_text, groups.background, 0.2) }, - diffAdded = { link = 'DiffAdd' }, - diffChanged = { link = 'DiffChange' }, - diffRemoved = { link = 'DiffDelete' }, - Directory = { fg = p.foam, bg = p.none }, - -- EndOfBuffer = {}, - ErrorMsg = { fg = p.love, style = 'bold' }, - FloatBorder = { fg = groups.border }, - FloatTitle = { fg = p.muted }, - FoldColumn = { fg = p.muted }, - Folded = { fg = p.text, bg = groups.panel }, - IncSearch = { fg = p.base, bg = p.rose }, - LineNr = { fg = p.muted }, - MatchParen = { fg = p.text, bg = p.highlight_med }, - ModeMsg = { fg = p.subtle }, - MoreMsg = { fg = p.iris }, - NonText = { fg = p.muted }, - Normal = { fg = p.text, bg = styles.background }, - NormalFloat = { fg = p.text, bg = styles.float_background }, - NormalNC = { fg = p.text, bg = styles.nc_background }, - NvimInternalError = { fg = '#ffffff', bg = p.love }, - Pmenu = { fg = p.subtle, bg = styles.float_background }, - PmenuSbar = { bg = p.highlight_low }, - PmenuSel = { fg = p.text, bg = p.overlay }, - PmenuThumb = { bg = p.highlight_med }, - Question = { fg = p.gold }, - -- QuickFixLine = {}, - -- RedrawDebugNormal = {} - RedrawDebugClear = { fg = '#ffffff', bg = p.gold }, - RedrawDebugComposed = { fg = '#ffffff', bg = p.pine }, - RedrawDebugRecompose = { fg = '#ffffff', bg = p.love }, - Search = { bg = p.highlight_med }, - SpecialKey = { fg = p.foam }, - SpellBad = { sp = p.subtle, style = 'undercurl' }, - SpellCap = { sp = p.subtle, style = 'undercurl' }, - SpellLocal = { sp = p.subtle, style = 'undercurl' }, - SpellRare = { sp = p.subtle, style = 'undercurl' }, - SignColumn = { fg = p.text, bg = styles.background }, - StatusLine = { fg = p.subtle, bg = p.surface }, - StatusLineNC = { fg = p.muted, bg = styles.background }, - StatusLineTerm = { link = 'StatusLine' }, - StatusLineTermNC = { link = 'StatusLineNC' }, - TabLine = { fg = p.subtle, bg = styles.float_background }, - TabLineFill = { bg = styles.float_background }, - TabLineSel = { fg = p.text, bg = p.overlay }, - Title = { fg = p.text }, - VertSplit = { fg = groups.border, bg = styles.vert_split }, - Visual = { bg = p.highlight_med }, - -- VisualNOS = {}, - WarningMsg = { fg = p.gold }, - -- Whitespace = {}, - WildMenu = { link = 'IncSearch' }, + h('ColorColumn', { bg = p.overlay }) + h('Conceal', { bg = p.none }) + h('CurSearch', { link = 'IncSearch' }) + h('Cursor', { fg = p.text, bg = p.highlight_high }) + h('CursorColumn', { bg = p.highlight_low }) + -- CursorIM = {}, + h('CursorLine', { bg = p.highlight_low }) + h('CursorLineNr', { fg = p.text }) + h('DarkenedPanel', { bg = maybe.surface }) + h('DarkenedStatusline', { bg = maybe.surface }) + h('DiffAdd', { bg = groups.git_add, blend = 20 }) - Boolean = { fg = p.rose }, - Character = { fg = p.gold }, - Comment = { fg = groups.comment, style = styles.italic }, - Conditional = { fg = p.pine }, - Constant = { fg = p.gold }, - Debug = { fg = p.rose }, - Define = { fg = p.iris }, - Delimiter = { fg = p.subtle }, - Error = { fg = p.love }, - Exception = { fg = p.pine }, - Float = { fg = p.gold }, - Function = { fg = p.rose }, - Identifier = { fg = p.rose }, - -- Ignore = {}, - Include = { fg = p.iris }, - Keyword = { fg = p.pine }, - Label = { fg = p.foam }, - Macro = { fg = p.iris }, - Number = { fg = p.gold }, - Operator = { fg = p.subtle }, - PreCondit = { fg = p.iris }, - PreProc = { fg = p.iris }, - Repeat = { fg = p.pine }, - Special = { fg = p.rose }, - SpecialChar = { fg = p.rose }, - SpecialComment = { fg = p.iris }, - Statement = { fg = p.pine }, - StorageClass = { fg = p.foam }, - String = { fg = p.gold }, - Structure = { fg = p.foam }, - Tag = { fg = p.rose }, - Todo = { fg = p.iris }, - Type = { fg = p.foam }, - Typedef = { fg = p.foam }, - Underlined = { style = 'underline' }, + h('DiffChange', { bg = p.overlay }) + h('DiffDelete', { bg = groups.git_delete, blend = 20 }) + h('DiffText', { bg = groups.git_text, blend = 20 }) + h('diffAdded', { link = 'DiffAdd' }) + h('diffChanged', { link = 'DiffChange' }) + h('diffRemoved', { link = 'DiffDelete' }) + h('Directory', { fg = p.foam, bg = p.none }) + -- EndOfBuffer = {}, + h('ErrorMsg', { fg = p.love, bold = true }) + h('FloatBorder', { fg = groups.border }) + h('FloatTitle', { fg = p.muted }) + h('FoldColumn', { fg = p.muted }) + h('Folded', { fg = p.text, bg = maybe.surface }) + h('IncSearch', { fg = p.base, bg = p.rose }) + h('LineNr', { fg = p.muted }) + h('MatchParen', { fg = p.text, bg = p.highlight_med }) + h('ModeMsg', { fg = p.subtle }) + h('MoreMsg', { fg = p.iris }) + h('NonText', { fg = p.muted }) + h('Normal', { fg = p.text, bg = maybe.base }) + h('NormalFloat', { fg = p.text, bg = maybe.surface }) + h('NormalNC', { fg = p.text, bg = maybe.dim_nc_background }) + h('NvimInternalError', { fg = '#ffffff', bg = p.love }) + h('Pmenu', { fg = p.subtle, bg = p.surface }) + h('PmenuSbar', { bg = p.highlight_low }) + h('PmenuSel', { fg = p.text, bg = p.overlay }) + h('PmenuThumb', { bg = p.highlight_med }) + h('Question', { fg = p.gold }) + -- QuickFixLine = {}, + -- RedrawDebugNormal = {} + h('RedrawDebugClear', { fg = '#ffffff', bg = p.gold }) + h('RedrawDebugComposed', { fg = '#ffffff', bg = p.pine }) + h('RedrawDebugRecompose', { fg = '#ffffff', bg = p.love }) + h('Search', { bg = p.highlight_med }) + h('SpecialKey', { fg = p.foam }) + h('SpellBad', { sp = p.subtle, undercurl = true }) + h('SpellCap', { sp = p.subtle, undercurl = true }) + h('SpellLocal', { sp = p.subtle, undercurl = true }) + h('SpellRare', { sp = p.subtle, undercurl = true }) + h('SignColumn', { + fg = p.text, + bg = (options.dim_nc_background and p.none) or maybe.base, + }) + h('StatusLine', { fg = p.subtle, bg = p.surface }) + h('StatusLineNC', { fg = p.muted, bg = maybe.base }) + h('StatusLineTerm', { link = 'StatusLine' }) + h('StatusLineTermNC', { link = 'StatusLineNC' }) + h('TabLine', { fg = p.subtle, bg = p.surface }) + h('TabLineFill', { bg = p.surface }) + h('TabLineSel', { fg = p.text, bg = p.overlay }) + h('Title', { fg = p.text }) + h('VertSplit', { fg = groups.border, bg = maybe.bold_vert_split }) + h('Visual', { bg = p.highlight_med }) + -- VisualNOS = {}, + h('WarningMsg', { fg = p.gold }) + -- Whitespace = {}, + h('WildMenu', { link = 'IncSearch' }) - htmlArg = { fg = p.iris }, - htmlBold = { style = 'bold' }, - htmlEndTag = { fg = p.subtle }, - htmlH1 = { fg = groups.headings.h1, style = 'bold' }, - htmlH2 = { fg = groups.headings.h2, style = 'bold' }, - htmlH3 = { fg = groups.headings.h3, style = 'bold' }, - htmlH4 = { fg = groups.headings.h4, style = 'bold' }, - htmlH5 = { fg = groups.headings.h5, style = 'bold' }, - htmlItalic = { style = styles.italic }, - htmlLink = { fg = groups.link }, - htmlTag = { fg = p.subtle }, - htmlTagN = { fg = p.text }, - htmlTagName = { fg = p.foam }, + h('Boolean', { fg = p.rose }) + h('Character', { fg = p.gold }) + h('Comment', { fg = groups.comment, italic = maybe.italic }) + h('Conditional', { fg = p.pine }) + h('Constant', { fg = p.gold }) + h('Debug', { fg = p.rose }) + h('Define', { fg = p.iris }) + h('Delimiter', { fg = p.subtle }) + h('Error', { fg = p.love }) + h('Exception', { fg = p.pine }) + h('Float', { fg = p.gold }) + h('Function', { fg = p.rose }) + h('Identifier', { fg = p.rose }) + -- Ignore = {}, + h('Include', { fg = p.iris }) + h('Keyword', { fg = p.pine }) + h('Label', { fg = p.foam }) + h('Macro', { fg = p.iris }) + h('Number', { fg = p.gold }) + h('Operator', { fg = p.subtle }) + h('PreCondit', { fg = p.iris }) + h('PreProc', { fg = p.iris }) + h('Repeat', { fg = p.pine }) + h('Special', { fg = p.rose }) + h('SpecialChar', { fg = p.rose }) + h('SpecialComment', { fg = p.iris }) + h('Statement', { fg = p.pine }) + h('StorageClass', { fg = p.foam }) + h('String', { fg = p.gold }) + h('Structure', { fg = p.foam }) + h('Tag', { fg = p.rose }) + h('Todo', { fg = p.iris }) + h('Type', { fg = p.foam }) + h('Typedef', { link = 'Type' }) + h('Underlined', { underline = true }) - markdownDelimiter = { fg = p.subtle }, - markdownH1 = { fg = groups.headings.h1, style = 'bold' }, - markdownH1Delimiter = { link = 'markdownH1' }, - markdownH2 = { fg = groups.headings.h2, style = 'bold' }, - markdownH2Delimiter = { link = 'markdownH2' }, - markdownH3 = { fg = groups.headings.h3, style = 'bold' }, - markdownH3Delimiter = { link = 'markdownH3' }, - markdownH4 = { fg = groups.headings.h4, style = 'bold' }, - markdownH4Delimiter = { link = 'markdownH4' }, - markdownH5 = { fg = groups.headings.h5, style = 'bold' }, - markdownH5Delimiter = { link = 'markdownH5' }, - markdownH6 = { fg = groups.headings.h6, style = 'bold' }, - markdownH6Delimiter = { link = 'markdownH6' }, - markdownLinkText = { fg = groups.link, style = 'underline' }, - markdownUrl = { link = 'markdownLinkText' }, + h('htmlArg', { fg = p.iris }) + h('htmlBold', { bold = true }) + h('htmlEndTag', { fg = p.subtle }) + h('htmlH1', { fg = groups.headings.h1, bold = true }) + h('htmlH2', { fg = groups.headings.h2, bold = true }) + h('htmlH3', { fg = groups.headings.h3, bold = true }) + h('htmlH4', { fg = groups.headings.h4, bold = true }) + h('htmlH5', { fg = groups.headings.h5, bold = true }) + h('htmlItalic', { italic = maybe.italic }) + h('htmlLink', { fg = groups.link }) + h('htmlTag', { fg = p.subtle }) + h('htmlTagN', { fg = p.text }) + h('htmlTagName', { fg = p.foam }) - mkdCode = { fg = p.foam, style = styles.italic }, - mkdCodeDelimiter = { fg = p.rose }, - mkdCodeEnd = { fg = p.foam }, - mkdCodeStart = { fg = p.foam }, - mkdFootnotes = { fg = p.foam }, - mkdID = { fg = p.foam, style = 'underline' }, - mkdInlineURL = { fg = groups.link, style = 'underline' }, - mkdLink = { link = 'mkdInlineURL' }, - mkdLinkDef = { link = 'mkdInlineURL' }, - mkdListItemLine = { fg = p.text }, - mkdRule = { fg = p.subtle }, - mkdURL = { link = 'mkdInlineURL' }, + h('markdownDelimiter', { fg = p.subtle }) + h('markdownH1', { fg = groups.headings.h1, bold = true }) + h('markdownH1Delimiter', { link = 'markdownH1' }) + h('markdownH2', { fg = groups.headings.h2, bold = true }) + h('markdownH2Delimiter', { link = 'markdownH2' }) + h('markdownH3', { fg = groups.headings.h3, bold = true }) + h('markdownH3Delimiter', { link = 'markdownH3' }) + h('markdownH4', { fg = groups.headings.h4, bold = true }) + h('markdownH4Delimiter', { link = 'markdownH4' }) + h('markdownH5', { fg = groups.headings.h5, bold = true }) + h('markdownH5Delimiter', { link = 'markdownH5' }) + h('markdownH6', { fg = groups.headings.h6, bold = true }) + h('markdownH6Delimiter', { link = 'markdownH6' }) + h( + 'markdownLinkText', + { fg = groups.link, sp = groups.link, underline = true } + ) + h('markdownUrl', { link = 'markdownLinkText' }) - DiagnosticError = { fg = groups.error }, - DiagnosticHint = { fg = groups.hint }, - DiagnosticInfo = { fg = groups.info }, - DiagnosticWarn = { fg = groups.warn }, - DiagnosticDefaultError = { fg = groups.error }, - DiagnosticDefaultHint = { fg = groups.hint }, - DiagnosticDefaultInfo = { fg = groups.info }, - DiagnosticDefaultWarn = { fg = groups.warn }, - DiagnosticFloatingError = { fg = groups.error }, - DiagnosticFloatingHint = { fg = groups.hint }, - DiagnosticFloatingInfo = { fg = groups.info }, - DiagnosticFloatingWarn = { fg = groups.warn }, - DiagnosticSignError = { fg = groups.error }, - DiagnosticSignHint = { fg = groups.hint }, - DiagnosticSignInfo = { fg = groups.info }, - DiagnosticSignWarn = { fg = groups.warn }, - DiagnosticStatusLineError = { fg = groups.error, bg = groups.panel }, - DiagnosticStatusLineHint = { fg = groups.hint, bg = groups.panel }, - DiagnosticStatusLineInfo = { fg = groups.info, bg = groups.panel }, - DiagnosticStatusLineWarn = { fg = groups.warn, bg = groups.panel }, - DiagnosticUnderlineError = { sp = groups.error, style = 'undercurl' }, - DiagnosticUnderlineHint = { sp = groups.hint, style = 'undercurl' }, - DiagnosticUnderlineInfo = { sp = groups.info, style = 'undercurl' }, - DiagnosticUnderlineWarn = { sp = groups.warn, style = 'undercurl' }, - DiagnosticVirtualTextError = { fg = groups.error }, - DiagnosticVirtualTextHint = { fg = groups.hint }, - DiagnosticVirtualTextInfo = { fg = groups.info }, - DiagnosticVirtualTextWarn = { fg = groups.warn }, + h('mkdCode', { fg = p.foam, italic = maybe.italic }) + h('mkdCodeDelimiter', { fg = p.rose }) + h('mkdCodeEnd', { fg = p.foam }) + h('mkdCodeStart', { fg = p.foam }) + h('mkdFootnotes', { fg = p.foam }) + h('mkdID', { fg = p.foam, underline = true }) + h('mkdInlineURL', { fg = groups.link, underline = true }) + h('mkdLink', { link = 'mkdInlineURL' }) + h('mkdLinkDef', { link = 'mkdInlineURL' }) + h('mkdListItemLine', { fg = p.text }) + h('mkdRule', { fg = p.subtle }) + h('mkdURL', { link = 'mkdInlineURL' }) - -- healthcheck - healthError = { fg = groups.error }, - healthSuccess = { fg = groups.info }, - healthWarning = { fg = groups.warn }, + h('DiagnosticError', { fg = groups.error }) + h('DiagnosticHint', { fg = groups.hint }) + h('DiagnosticInfo', { fg = groups.info }) + h('DiagnosticWarn', { fg = groups.warn }) + h('DiagnosticDefaultError', { fg = groups.error }) + h('DiagnosticDefaultHint', { fg = groups.hint }) + h('DiagnosticDefaultInfo', { fg = groups.info }) + h('DiagnosticDefaultWarn', { fg = groups.warn }) + h('DiagnosticFloatingError', { fg = groups.error }) + h('DiagnosticFloatingHint', { fg = groups.hint }) + h('DiagnosticFloatingInfo', { fg = groups.info }) + h('DiagnosticFloatingWarn', { fg = groups.warn }) + h('DiagnosticSignError', { fg = groups.error }) + h('DiagnosticSignHint', { fg = groups.hint }) + h('DiagnosticSignInfo', { fg = groups.info }) + h('DiagnosticSignWarn', { fg = groups.warn }) + h('DiagnosticStatusLineError', { fg = groups.error, bg = p.surface }) + h('DiagnosticStatusLineHint', { fg = groups.hint, bg = p.surface }) + h('DiagnosticStatusLineInfo', { fg = groups.info, bg = p.surface }) + h('DiagnosticStatusLineWarn', { fg = groups.warn, bg = p.surface }) + h('DiagnosticUnderlineError', { sp = groups.error, undercurl = true }) + h('DiagnosticUnderlineHint', { sp = groups.hint, undercurl = true }) + h('DiagnosticUnderlineInfo', { sp = groups.info, undercurl = true }) + h('DiagnosticUnderlineWarn', { sp = groups.warn, undercurl = true }) + h('DiagnosticVirtualTextError', { fg = groups.error }) + h('DiagnosticVirtualTextHint', { fg = groups.hint }) + h('DiagnosticVirtualTextInfo', { fg = groups.info }) + h('DiagnosticVirtualTextWarn', { fg = groups.warn }) - -- TSAttribute = {}, - TSBoolean = { link = 'Boolean' }, - TSCharacter = { link = 'Character' }, - TSComment = { link = 'Comment' }, - TSConditional = { link = 'Conditional' }, - TSConstBuiltin = { fg = p.love }, - -- TSConstMacro = {}, - TSConstant = { fg = p.foam }, - TSConstructor = { fg = p.foam }, - -- TSEmphasis = {}, - -- TSError = {}, - -- TSException = {}, - TSField = { fg = p.foam }, - -- TSFloat = {}, - TSFuncBuiltin = { fg = p.love }, - -- TSFuncMacro = {}, - TSFunction = { fg = p.rose }, - TSInclude = { fg = p.pine }, - TSKeyword = { fg = p.pine }, - -- TSKeywordFunction = {}, - TSKeywordOperator = { fg = p.subtle }, - TSLabel = { fg = p.foam }, - -- TSLiteral = {}, - -- TSMethod = {}, - -- TSNamespace = {}, - -- TSNone = {}, - TSNumber = { link = 'Number' }, - TSOperator = { fg = p.subtle }, - TSParameter = { fg = p.iris, style = styles.italic }, - -- TSParameterReference = {}, - TSProperty = { fg = p.iris, style = styles.italic }, - TSPunctBracket = { fg = groups.punctuation }, - TSPunctDelimiter = { fg = groups.punctuation }, - TSPunctSpecial = { fg = groups.punctuation }, - -- TSRepeat = {}, - -- TSStrike = {}, - TSString = { link = 'String' }, - TSStringEscape = { fg = p.pine }, - -- TSStringRegex = {}, - TSStringSpecial = { link = 'TSString' }, - -- TSSymbol = {}, - TSTag = { fg = p.foam }, - TSTagDelimiter = { fg = p.subtle }, - TSText = { fg = p.text }, - TSTitle = { fg = groups.headings.h1, style = 'bold' }, - TSType = { link = 'Type' }, - -- TSTypeBuiltin = {}, - TSURI = { fg = groups.link }, - -- TSUnderline = {}, - TSVariable = { fg = p.text, style = styles.italic }, - TSVariableBuiltin = { fg = p.love }, + -- healthcheck + h('healthError', { fg = groups.error }) + h('healthSuccess', { fg = groups.info }) + h('healthWarning', { fg = groups.warn }) - -- Treesitter - ['@annotation'] = { link = 'PreProc' }, - ['@attribute'] = { link = 'PreProc' }, - ['@boolean'] = { link = 'Boolean' }, - ['@character'] = { link = 'Character' }, - ['@comment'] = { link = 'Comment' }, - ['@conditional'] = { link = 'Conditional' }, - ['@constant'] = { fg = p.foam }, - ['@constant.builtin'] = { fg = p.love }, - ['@constructor'] = { fg = p.foam }, - ['@field'] = { fg = p.foam }, - ['@function'] = { fg = p.rose }, - ['@function.builtin'] = { fg = p.love }, - ['@include'] = { fg = p.pine }, - ['@keyword'] = { fg = p.pine }, - ['@keyword.operator'] = { fg = p.subtle }, - ['@label'] = { fg = p.foam }, - ['@namespace'] = { link = 'Include' }, - ['@number'] = { link = 'Number' }, - ['@operator'] = { fg = p.subtle }, - ['@parameter'] = { fg = p.iris, style = styles.italic }, - ['@property'] = { fg = p.iris, style = styles.italic }, - ['@punctuation.bracket'] = { fg = groups.punctuation }, - ['@punctuation.delimiter'] = { fg = groups.punctuation }, - ['@punctuation.special'] = { fg = groups.punctuation }, - ['@string'] = { link = 'String' }, - ['@string.escape'] = { fg = p.pine }, - ['@string.special'] = { link = '@string' }, - ['@symbol'] = { link = 'Identifier' }, - ['@tag'] = { fg = p.foam }, - ['@tag.attribute'] = { link = '@property' }, - ['@tag.delimiter'] = { fg = p.subtle }, - ['@text'] = { fg = p.text }, - ['@text.strong'] = { bold = true }, - ['@text.emphasis'] = { italic = true }, - ['@text.underline'] = { underline = true }, - ['@text.strike'] = { strikethrough = true }, - ['@text.math'] = { link = 'Special' }, - ['@text.environment'] = { link = 'Macro' }, - ['@text.environment.name'] = { link = 'Type' }, - ['@text.title'] = { fg = groups.headings.h1, style = 'bold' }, - ['@text.uri'] = { fg = groups.link }, - ['@text.note'] = { link = 'SpecialComment' }, - ['@text.warning'] = { link = 'Todo' }, - ['@text.danger'] = { link = 'WarningMsg' }, - ['@todo'] = { link = 'Todo' }, - ['@type'] = { link = 'Type' }, - ['@variable'] = { fg = p.text, style = styles.italic }, - ['@variable.builtin'] = { fg = p.love }, + -- Treesitter + h('@boolean', { link = 'Boolean' }) + h('@character', { link = 'Character' }) + h('@character.special', { link = '@character' }) + h('@class', { fg = p.foam }) + h('@comment', { link = 'Comment' }) + h('@conditional', { link = 'Conditional' }) + h('@constant', { link = 'Constant' }) + h('@constant.builtin', { fg = p.love }) + h('@constant.macro', { link = '@constant' }) + h('@constructor', { fg = p.foam }) + h('@field', { fg = p.foam }) + h('@function', { link = 'Function' }) + h('@function.builtin', { fg = p.love }) + h('@function.macro', { link = '@function' }) + h('@include', { link = 'Include' }) + h('@interface', { fg = p.foam }) + h('@keyword', { link = 'Keyword' }) + h('@keyword.operator', { fg = p.subtle }) + h('@label', { link = 'Label' }) + h('@macro', { link = 'Macro' }) + h('@method', { fg = p.iris }) + h('@number', { link = 'Number' }) + h('@operator', { link = 'Operator' }) + h('@parameter', { fg = p.iris, italic = maybe.italic }) + h('@preproc', { link = 'PreProc' }) + h('@property', { fg = p.foam, italic = maybe.italic }) + h('@punctuation', { fg = groups.punctuation }) + h('@punctuation.bracket', { link = '@punctuation' }) + h('@punctuation.delimiter', { link = '@punctuation' }) + h('@punctuation.special', { link = '@punctuation' }) + h('@regexp', { link = 'String' }) + h('@repeat', { link = 'Repeat' }) + h('@storageclass', { link = 'StorageClass' }) + h('@string', { link = 'String' }) + h('@string.escape', { fg = p.pine }) + h('@string.special', { link = '@string' }) + h('@symbol', { link = 'Identifier' }) + h('@tag', { link = 'Tag' }) + h('@tag.attribute', { fg = p.iris }) + h('@tag.delimiter', { fg = p.subtle }) + h('@text', { fg = p.text }) + h('@text.strong', { bold = true }) + h('@text.emphasis', { italic = true }) + h('@text.underline', { underline = true }) + h('@text.strike', { strikethrough = true }) + h('@text.math', { link = 'Special' }) + h('@text.environment', { link = 'Macro' }) + h('@text.environment.name', { link = 'Type' }) + h('@text.title', { link = 'Title' }) + h('@text.uri', { fg = groups.link }) + h('@text.note', { link = 'SpecialComment' }) + h('@text.warning', { fg = groups.warn }) + h('@text.danger', { fg = groups.error }) + h('@todo', { link = 'Todo' }) + h('@type', { link = 'Type' }) + h('@variable', { fg = p.text, italic = maybe.italic }) + h('@variable.builtin', { fg = p.love }) - -- vim.lsp.buf.document_highlight() - LspReferenceText = { bg = p.highlight_med }, - LspReferenceRead = { bg = p.highlight_med }, - LspReferenceWrite = { bg = p.highlight_med }, + -- vim.lsp.buf.document_highlight() + h('LspReferenceText', { bg = p.highlight_med }) + h('LspReferenceRead', { bg = p.highlight_med }) + h('LspReferenceWrite', { bg = p.highlight_med }) - -- lsp-highlight-codelens - LspCodeLens = { fg = p.subtle }, -- virtual text of code lens - LspCodeLensSeparator = { fg = p.highlight_high }, -- separator between two or more code lens + -- lsp-highlight-codelens + h('LspCodeLens', { fg = p.subtle }) -- virtual text of code len + h('LspCodeLensSeparator', { fg = p.highlight_high }) -- separator between two or more code len - -- romgrk/barbar.nvim - BufferCurrent = { fg = p.text, bg = p.overlay }, - BufferCurrentIndex = { fg = p.text, bg = p.overlay }, - BufferCurrentMod = { fg = p.foam, bg = p.overlay }, - BufferCurrentSign = { fg = p.subtle, bg = p.overlay }, - BufferCurrentTarget = { fg = p.gold, bg = p.overlay }, - BufferInactive = { fg = p.subtle }, - BufferInactiveIndex = { fg = p.subtle }, - BufferInactiveMod = { fg = p.foam }, - BufferInactiveSign = { fg = p.muted }, - BufferInactiveTarget = { fg = p.gold }, - BufferTabpageFill = { fg = groups.background, bg = groups.background }, - BufferVisible = { fg = p.subtle }, - BufferVisibleIndex = { fg = p.subtle }, - BufferVisibleMod = { fg = p.foam }, - BufferVisibleSign = { fg = p.muted }, - BufferVisibleTarget = { fg = p.gold }, + -- romgrk/barbar.nvim + h('BufferCurrent', { fg = p.text, bg = p.overlay }) + h('BufferCurrentIndex', { fg = p.text, bg = p.overlay }) + h('BufferCurrentMod', { fg = p.foam, bg = p.overlay }) + h('BufferCurrentSign', { fg = p.subtle, bg = p.overlay }) + h('BufferCurrentTarget', { fg = p.gold, bg = p.overlay }) + h('BufferInactive', { fg = p.subtle }) + h('BufferInactiveIndex', { fg = p.subtle }) + h('BufferInactiveMod', { fg = p.foam }) + h('BufferInactiveSign', { fg = p.muted }) + h('BufferInactiveTarget', { fg = p.gold }) + h('BufferTabpageFill', { fg = p.base, bg = p.base }) + h('BufferVisible', { fg = p.subtle }) + h('BufferVisibleIndex', { fg = p.subtle }) + h('BufferVisibleMod', { fg = p.foam }) + h('BufferVisibleSign', { fg = p.muted }) + h('BufferVisibleTarget', { fg = p.gold }) - -- lewis6991/gitsigns.nvim - GitSignsAdd = { fg = groups.git_add }, - GitSignsChange = { fg = groups.git_change }, - GitSignsDelete = { fg = groups.git_delete }, - SignAdd = { link = 'GitSignsAdd' }, - SignChange = { link = 'GitSignsChange' }, - SignDelete = { link = 'GitSignsDelete' }, + -- lewis6991/gitsigns.nvim + h('GitSignsAdd', { fg = groups.git_add }) + h('GitSignsChange', { fg = groups.git_change }) + h('GitSignsDelete', { fg = groups.git_delete }) + h('SignAdd', { link = 'GitSignsAdd' }) + h('SignChange', { link = 'GitSignsChange' }) + h('SignDelete', { link = 'GitSignsDelete' }) - -- mvllow/modes.nvim - ModesCopy = { bg = p.gold }, - ModesDelete = { bg = p.love }, - ModesInsert = { bg = p.foam }, - ModesVisual = { bg = p.iris }, + -- mvllow/modes.nvim + h('ModesCopy', { bg = p.gold }) + h('ModesDelete', { bg = p.love }) + h('ModesInsert', { bg = p.foam }) + h('ModesVisual', { bg = p.iris }) - -- kyazdani42/nvim-tree.lua - NvimTreeEmptyFolderName = { fg = p.muted }, - NvimTreeFileDeleted = { fg = p.love }, - NvimTreeFileDirty = { fg = p.rose }, - NvimTreeFileMerge = { fg = p.iris }, - NvimTreeFileNew = { fg = p.foam }, - NvimTreeFileRenamed = { fg = p.pine }, - NvimTreeFileStaged = { fg = p.iris }, - NvimTreeFolderIcon = { fg = p.subtle }, - NvimTreeFolderName = { fg = p.foam }, - NvimTreeGitDeleted = { fg = groups.git_delete }, - NvimTreeGitDirty = { fg = groups.git_dirty }, - NvimTreeGitIgnored = { fg = groups.git_ignore }, - NvimTreeGitMerge = { fg = groups.git_merge }, - NvimTreeGitNew = { fg = groups.git_add }, - NvimTreeGitRenamed = { fg = groups.git_rename }, - NvimTreeGitStaged = { fg = groups.git_stage }, - NvimTreeImageFile = { fg = p.text }, - NvimTreeNormal = { fg = p.text }, - NvimTreeOpenedFile = { fg = p.text, bg = p.highlight_med }, - NvimTreeOpenedFolderName = { link = 'NvimTreeFolderName' }, - NvimTreeRootFolder = { fg = p.iris }, - NvimTreeSpecialFile = { link = 'NvimTreeNormal' }, - NvimTreeWindowPicker = { fg = groups.background, bg = p.iris }, + -- kyazdani42/nvim-tree.lua + h('NvimTreeEmptyFolderName', { fg = p.muted }) + h('NvimTreeFileDeleted', { fg = p.love }) + h('NvimTreeFileDirty', { fg = p.rose }) + h('NvimTreeFileMerge', { fg = p.iris }) + h('NvimTreeFileNew', { fg = p.foam }) + h('NvimTreeFileRenamed', { fg = p.pine }) + h('NvimTreeFileStaged', { fg = p.iris }) + h('NvimTreeFolderIcon', { fg = p.subtle }) + h('NvimTreeFolderName', { fg = p.foam }) + h('NvimTreeGitDeleted', { fg = groups.git_delete }) + h('NvimTreeGitDirty', { fg = groups.git_dirty }) + h('NvimTreeGitIgnored', { fg = groups.git_ignore }) + h('NvimTreeGitMerge', { fg = groups.git_merge }) + h('NvimTreeGitNew', { fg = groups.git_add }) + h('NvimTreeGitRenamed', { fg = groups.git_rename }) + h('NvimTreeGitStaged', { fg = groups.git_stage }) + h('NvimTreeImageFile', { fg = p.text }) + h('NvimTreeNormal', { fg = p.text }) + h('NvimTreeOpenedFile', { fg = p.text, bg = p.highlight_med }) + h('NvimTreeOpenedFolderName', { link = 'NvimTreeFolderName' }) + h('NvimTreeRootFolder', { fg = p.iris }) + h('NvimTreeSpecialFile', { link = 'NvimTreeNormal' }) + h('NvimTreeWindowPicker', { fg = p.love, bg = p.love, blend = 10 }) - -- folke/which-key.nvim - WhichKey = { fg = p.iris }, - WhichKeyGroup = { fg = p.foam }, - WhichKeySeparator = { fg = p.subtle }, - WhichKeyDesc = { fg = p.gold }, - WhichKeyFloat = { bg = groups.panel }, - WhichKeyValue = { fg = p.rose }, + -- folke/which-key.nvim + h('WhichKey', { fg = p.iris }) + h('WhichKeyGroup', { fg = p.foam }) + h('WhichKeySeparator', { fg = p.subtle }) + h('WhichKeyDesc', { fg = p.gold }) + h('WhichKeyFloat', { bg = maybe.surface }) + h('WhichKeyValue', { fg = p.rose }) - -- luka-reineke/indent-blankline.nvim - IndentBlanklineChar = { fg = p.muted }, - IndentBlanklineSpaceChar = { fg = p.muted }, - IndentBlanklineSpaceCharBlankline = { fg = p.muted }, + -- luka-reineke/indent-blankline.nvim + h('IndentBlanklineChar', { fg = p.muted }) + h('IndentBlanklineSpaceChar', { fg = p.muted }) + h('IndentBlanklineSpaceCharBlankline', { fg = p.muted }) - -- hrsh7th/nvim-cmp - CmpItemAbbr = { fg = p.subtle }, - CmpItemAbbrDeprecated = { fg = p.subtle, style = 'strikethrough' }, - CmpItemAbbrMatch = { fg = p.text, style = 'bold' }, - CmpItemAbbrMatchFuzzy = { fg = p.text, style = 'bold' }, - CmpItemKind = { fg = p.iris }, - CmpItemKindClass = { fg = p.gold }, - CmpItemKindFunction = { fg = p.iris }, - CmpItemKindInterface = { fg = p.gold }, - CmpItemKindMethod = { fg = p.iris }, - CmpItemKindSnippet = { fg = p.iris }, - CmpItemKindVariable = { fg = p.foam }, + -- hrsh7th/nvim-cmp + h('CmpItemAbbr', { fg = p.subtle }) + h('CmpItemAbbrDeprecated', { fg = p.subtle, strikethrough = true }) + h('CmpItemAbbrMatch', { fg = p.text, bold = true }) + h('CmpItemAbbrMatchFuzzy', { fg = p.text, bold = true }) + h('CmpItemKind', { fg = p.subtle }) + h('CmpItemKindClass', { fg = p.pine }) + h('CmpItemKindFunction', { fg = p.rose }) + h('CmpItemKindInterface', { fg = p.foam }) + h('CmpItemKindMethod', { fg = p.iris }) + h('CmpItemKindSnippet', { fg = p.gold }) + h('CmpItemKindVariable', { fg = p.text }) - -- TimUntersberger/neogit - NeogitDiffAddHighlight = { fg = p.foam, bg = p.highlight_med }, - NeogitDiffContextHighlight = { bg = p.highlight_low }, - NeogitDiffDeleteHighlight = { fg = p.love, bg = p.highlight_med }, - NeogitHunkHeader = { bg = p.highlight_low }, - NeogitHunkHeaderHighlight = { bg = p.highlight_low }, + -- TimUntersberger/neogit + h('NeogitDiffAddHighlight', { fg = p.foam, bg = p.highlight_med }) + h('NeogitDiffContextHighlight', { bg = p.highlight_low }) + h('NeogitDiffDeleteHighlight', { fg = p.love, bg = p.highlight_med }) + h('NeogitHunkHeader', { bg = p.highlight_low }) + h('NeogitHunkHeaderHighlight', { bg = p.highlight_low }) - -- vimwiki/vimwiki - VimwikiHR = { fg = p.subtle }, - VimwikiHeader1 = { fg = groups.headings.h1, style = 'bold' }, - VimwikiHeader2 = { fg = groups.headings.h2, style = 'bold' }, - VimwikiHeader3 = { fg = groups.headings.h3, style = 'bold' }, - VimwikiHeader4 = { fg = groups.headings.h4, style = 'bold' }, - VimwikiHeader5 = { fg = groups.headings.h5, style = 'bold' }, - VimwikiHeader6 = { fg = groups.headings.h6, style = 'bold' }, - VimwikiHeaderChar = { fg = p.pine }, - VimwikiLink = { fg = groups.link, style = 'underline' }, - VimwikiList = { fg = p.iris }, - VimwikiNoExistsLink = { fg = p.love }, + -- vimwiki/vimwiki + h('VimwikiHR', { fg = p.subtle }) + h('VimwikiHeader1', { fg = groups.headings.h1, bold = true }) + h('VimwikiHeader2', { fg = groups.headings.h2, bold = true }) + h('VimwikiHeader3', { fg = groups.headings.h3, bold = true }) + h('VimwikiHeader4', { fg = groups.headings.h4, bold = true }) + h('VimwikiHeader5', { fg = groups.headings.h5, bold = true }) + h('VimwikiHeader6', { fg = groups.headings.h6, bold = true }) + h('VimwikiHeaderChar', { fg = p.pine }) + h('VimwikiLink', { fg = groups.link, underline = true }) + h('VimwikiList', { fg = p.iris }) + h('VimwikiNoExistsLink', { fg = p.love }) - -- nvim-neorg/neorg - NeorgHeading1Prefix = { fg = groups.headings.h1, style = 'bold' }, - NeorgHeading1Title = { link = 'NeorgHeading1Prefix' }, - NeorgHeading2Prefix = { fg = groups.headings.h2, style = 'bold' }, - NeorgHeading2Title = { link = 'NeorgHeading2Prefix' }, - NeorgHeading3Prefix = { fg = groups.headings.h3, style = 'bold' }, - NeorgHeading3Title = { link = 'NeorgHeading3Prefix' }, - NeorgHeading4Prefix = { fg = groups.headings.h4, style = 'bold' }, - NeorgHeading4Title = { link = 'NeorgHeading4Prefix' }, - NeorgHeading5Prefix = { fg = groups.headings.h5, style = 'bold' }, - NeorgHeading5Title = { link = 'NeorgHeading5Prefix' }, - NeorgHeading6Prefix = { fg = groups.headings.h6, style = 'bold' }, - NeorgHeading6Title = { link = 'NeorgHeading6Prefix' }, - NeorgMarkerTitle = { fg = p.text, style = 'bold' }, + -- nvim-neorg/neorg + h('NeorgHeading1Prefix', { fg = groups.headings.h1, bold = true }) + h('NeorgHeading1Title', { link = 'NeorgHeading1Prefix' }) + h('NeorgHeading2Prefix', { fg = groups.headings.h2, bold = true }) + h('NeorgHeading2Title', { link = 'NeorgHeading2Prefix' }) + h('NeorgHeading3Prefix', { fg = groups.headings.h3, bold = true }) + h('NeorgHeading3Title', { link = 'NeorgHeading3Prefix' }) + h('NeorgHeading4Prefix', { fg = groups.headings.h4, bold = true }) + h('NeorgHeading4Title', { link = 'NeorgHeading4Prefix' }) + h('NeorgHeading5Prefix', { fg = groups.headings.h5, bold = true }) + h('NeorgHeading5Title', { link = 'NeorgHeading5Prefix' }) + h('NeorgHeading6Prefix', { fg = groups.headings.h6, bold = true }) + h('NeorgHeading6Title', { link = 'NeorgHeading6Prefix' }) + h('NeorgMarkerTitle', { fg = p.text, bold = true }) - -- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim) - DefinitionCount = { fg = p.rose }, - DefinitionIcon = { fg = p.rose }, - DefintionPreviewTitle = { fg = p.rose, style = 'bold' }, - LspFloatWinBorder = { fg = groups.border }, - LspFloatWinNormal = { bg = groups.background }, - LspSagaAutoPreview = { fg = p.subtle }, - LspSagaCodeActionBorder = { fg = groups.border }, - LspSagaCodeActionContent = { fg = p.foam }, - LspSagaCodeActionTitle = { fg = p.gold, style = 'bold' }, - LspSagaCodeActionTruncateLine = { link = 'LspSagaCodeActionBorder' }, - LspSagaDefPreviewBorder = { fg = groups.border }, - LspSagaDiagnosticBorder = { fg = groups.border }, - LspSagaDiagnosticHeader = { fg = p.gold, style = 'bold' }, - LspSagaDiagnosticTruncateLine = { link = 'LspSagaDiagnosticBorder' }, - LspSagaDocTruncateLine = { link = 'LspSagaHoverBorder' }, - LspSagaFinderSelection = { fg = p.gold }, - LspSagaHoverBorder = { fg = groups.border }, - LspSagaLspFinderBorder = { fg = groups.border }, - LspSagaRenameBorder = { fg = p.pine }, - LspSagaRenamePromptPrefix = { fg = p.love }, - LspSagaShTruncateLine = { link = 'LspSagaSignatureHelpBorder' }, - LspSagaSignatureHelpBorder = { fg = p.pine }, - ReferencesCount = { fg = p.rose }, - ReferencesIcon = { fg = p.rose }, - SagaShadow = { bg = p.overlay }, - TargetWord = { fg = p.iris }, + -- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim) + h('DefinitionCount', { fg = p.rose }) + h('DefinitionIcon', { fg = p.rose }) + h('DefintionPreviewTitle', { fg = p.rose, bold = true }) + h('LspFloatWinBorder', { fg = groups.border }) + h('LspFloatWinNormal', { bg = maybe.surface }) + h('LspSagaAutoPreview', { fg = p.subtle }) + h('LspSagaCodeActionBorder', { fg = groups.border }) + h('LspSagaCodeActionContent', { fg = p.foam }) + h('LspSagaCodeActionTitle', { fg = p.gold, bold = true }) + h('LspSagaCodeActionTruncateLine', { link = 'LspSagaCodeActionBorder' }) + h('LspSagaDefPreviewBorder', { fg = groups.border }) + h('LspSagaDiagnosticBorder', { fg = groups.border }) + h('LspSagaDiagnosticHeader', { fg = p.gold, bold = true }) + h('LspSagaDiagnosticTruncateLine', { link = 'LspSagaDiagnosticBorder' }) + h('LspSagaDocTruncateLine', { link = 'LspSagaHoverBorder' }) + h('LspSagaFinderSelection', { fg = p.gold }) + h('LspSagaHoverBorder', { fg = groups.border }) + h('LspSagaLspFinderBorder', { fg = groups.border }) + h('LspSagaRenameBorder', { fg = p.pine }) + h('LspSagaRenamePromptPrefix', { fg = p.love }) + h('LspSagaShTruncateLine', { link = 'LspSagaSignatureHelpBorder' }) + h('LspSagaSignatureHelpBorder', { fg = p.pine }) + h('ReferencesCount', { fg = p.rose }) + h('ReferencesIcon', { fg = p.rose }) + h('SagaShadow', { bg = p.overlay }) + h('TargetWord', { fg = p.iris }) - -- ray-x/lsp_signature.nvim - LspSignatureActiveParameter = { bg = p.overlay }, + -- ray-x/lsp_signature.nvim + h('LspSignatureActiveParameter', { bg = p.overlay }) - -- rlane/pounce.nvim - PounceAccept = { fg = p.love, bg = p.highlight_high }, - PounceAcceptBest = { fg = p.base, bg = p.gold }, - PounceGap = { link = 'Search' }, - PounceMatch = { link = 'Search' }, + -- rlane/pounce.nvim + h('PounceAccept', { fg = p.love, bg = p.highlight_high }) + h('PounceAcceptBest', { fg = p.base, bg = p.gold }) + h('PounceGap', { link = 'Search' }) + h('PounceMatch', { link = 'Search' }) - -- nvim-telescope/telescope.nvim - TelescopeBorder = { fg = groups.border, bg = styles.float_background }, - TelescopeMatching = { fg = p.rose }, - TelescopeNormal = { fg = p.subtle, bg = styles.float_background }, - TelescopePromptNormal = { fg = p.text, bg = styles.float_background }, - TelescopePromptPrefix = { fg = p.subtle }, - TelescopeSelection = { fg = p.text, bg = p.overlay }, - TelescopeSelectionCaret = { fg = p.rose, bg = p.overlay }, - TelescopeTitle = { fg = p.subtle }, + -- nvim-telescope/telescope.nvim + h('TelescopeBorder', { fg = groups.border, bg = maybe.surface }) + h('TelescopeMatching', { fg = p.rose }) + h('TelescopeNormal', { fg = p.subtle, bg = maybe.surface }) + h('TelescopePromptNormal', { + fg = p.text, + bg = ( + options.dim_nc_background + and (options.disable_float_background and p.nc or p.surface) + ) or maybe.surface, + }) + h('TelescopePromptPrefix', { fg = p.subtle }) + h('TelescopeSelection', { fg = p.text, bg = p.overlay }) + h('TelescopeSelectionCaret', { fg = p.rose, bg = p.overlay }) + h('TelescopeTitle', { fg = p.subtle }) - -- rcarriga/nvim-notify - NotifyINFOBorder = { fg = p.foam }, - NotifyINFOTitle = { link = 'NotifyINFOBorder' }, - NotifyINFOIcon = { link = 'NotifyINFOBorder' }, - NotifyWARNBorder = { fg = p.gold }, - NotifyWARNTitle = { link = 'NotifyWARNBorder' }, - NotifyWARNIcon = { link = 'NotifyWARNBorder' }, - NotifyDEBUGBorder = { fg = p.muted }, - NotifyDEBUGTitle = { link = 'NotifyDEBUGBorder' }, - NotifyDEBUGIcon = { link = 'NotifyDEBUGBorder' }, - NotifyTRACEBorder = { fg = p.iris }, - NotifyTRACETitle = { link = 'NotifyTRACEBorder' }, - NotifyTRACEIcon = { link = 'NotifyTRACEBorder' }, - NotifyERRORBorder = { fg = p.love }, - NotifyERRORTitle = { link = 'NotifyERRORBorder' }, - NotifyERRORIcon = { link = 'NotifyERRORBorder' }, + -- rcarriga/nvim-notify + h('NotifyINFOBorder', { fg = p.foam }) + h('NotifyINFOTitle', { link = 'NotifyINFOBorder' }) + h('NotifyINFOIcon', { link = 'NotifyINFOBorder' }) + h('NotifyWARNBorder', { fg = p.gold }) + h('NotifyWARNTitle', { link = 'NotifyWARNBorder' }) + h('NotifyWARNIcon', { link = 'NotifyWARNBorder' }) + h('NotifyDEBUGBorder', { fg = p.muted }) + h('NotifyDEBUGTitle', { link = 'NotifyDEBUGBorder' }) + h('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' }) + h('NotifyTRACEBorder', { fg = p.iris }) + h('NotifyTRACETitle', { link = 'NotifyTRACEBorder' }) + h('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' }) + h('NotifyERRORBorder', { fg = p.love }) + h('NotifyERRORTitle', { link = 'NotifyERRORBorder' }) + h('NotifyERRORIcon', { link = 'NotifyERRORBorder' }) - -- rcarriga/nvim-dap-ui - DapUIVariable = { link = 'Normal' }, - DapUIValue = { link = 'Normal' }, - DapUIFrameName = { link = 'Normal' }, - DapUIThread = { fg = p.gold }, - DapUIWatchesValue = { link = 'DapUIThread' }, - DapUIBreakpointsInfo = { link = 'DapUIThread' }, - DapUIBreakpointsCurrentLine = { fg = p.gold, style = 'bold' }, - DapUIWatchesEmpty = { fg = p.love }, - DapUIWatchesError = { link = 'DapUIWatchesEmpty' }, - DapUIBreakpointsDisabledLine = { fg = p.muted }, - DapUISource = { fg = p.iris }, - DapUIBreakpointsPath = { fg = p.foam }, - DapUIScope = { link = 'DapUIBreakpointsPath' }, - DapUILineNumber = { link = 'DapUIBreakpointsPath' }, - DapUIBreakpointsLine = { link = 'DapUIBreakpointsPath' }, - DapUIFloatBorder = { link = 'DapUIBreakpointsPath' }, - DapUIStoppedThread = { link = 'DapUIBreakpointsPath' }, - DapUIDecoration = { link = 'DapUIBreakpointsPath' }, - DapUIModifiedValue = { fg = p.foam, style = 'bold' }, + -- rcarriga/nvim-dap-ui + h('DapUIVariable', { link = 'Normal' }) + h('DapUIValue', { link = 'Normal' }) + h('DapUIFrameName', { link = 'Normal' }) + h('DapUIThread', { fg = p.gold }) + h('DapUIWatchesValue', { link = 'DapUIThread' }) + h('DapUIBreakpointsInfo', { link = 'DapUIThread' }) + h('DapUIBreakpointsCurrentLine', { fg = p.gold, bold = true }) + h('DapUIWatchesEmpty', { fg = p.love }) + h('DapUIWatchesError', { link = 'DapUIWatchesEmpty' }) + h('DapUIBreakpointsDisabledLine', { fg = p.muted }) + h('DapUISource', { fg = p.iris }) + h('DapUIBreakpointsPath', { fg = p.foam }) + h('DapUIScope', { link = 'DapUIBreakpointsPath' }) + h('DapUILineNumber', { link = 'DapUIBreakpointsPath' }) + h('DapUIBreakpointsLine', { link = 'DapUIBreakpointsPath' }) + h('DapUIFloatBorder', { link = 'DapUIBreakpointsPath' }) + h('DapUIStoppedThread', { link = 'DapUIBreakpointsPath' }) + h('DapUIDecoration', { link = 'DapUIBreakpointsPath' }) + h('DapUIModifiedValue', { fg = p.foam, bold = true }) - -- glepnir/dashboard-nvim - DashboardShortcut = { fg = p.love }, - DashboardHeader = { fg = p.pine }, - DashboardCenter = { fg = p.gold }, - DashboardFooter = { fg = p.iris }, - } + -- glepnir/dashboard-nvim + h('DashboardShortcut', { fg = p.love }) + h('DashboardHeader', { fg = p.pine }) + h('DashboardCenter', { fg = p.gold }) + h('DashboardFooter', { fg = p.iris }) vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black @@ -536,7 +501,10 @@ function M.get(config) vim.g.terminal_color_7 = p.text -- white vim.g.terminal_color_15 = p.text -- bright white - return theme + -- Set user highlights + for group, color in pairs(options.highlight_groups) do + h(group, color) + end end return M diff --git a/lua/rose-pine/util.lua b/lua/rose-pine/util.lua index 2bfdf85..f8b84f9 100644 --- a/lua/rose-pine/util.lua +++ b/lua/rose-pine/util.lua @@ -33,11 +33,11 @@ end ---@param bg string background color ---@param alpha number number between 0 (background) and 1 (foreground) util.blend = function(fg, bg, alpha) - fg = rgb(parse_color(fg)) - bg = rgb(parse_color(bg)) + local fg_rgb = rgb(parse_color(fg)) + local bg_rgb = rgb(parse_color(bg)) local function blend_channel(i) - local ret = (alpha * fg[i] + ((1 - alpha) * bg[i])) + local ret = (alpha * fg_rgb[i] + ((1 - alpha) * bg_rgb[i])) return math.floor(math.min(math.max(0, ret), 255) + 0.5) end @@ -50,18 +50,22 @@ util.blend = function(fg, bg, alpha) end ---@param group string ----@param color table +---@param color table util.highlight = function(group, color) - local style = color.style and 'gui=' .. color.style or 'gui=NONE' - local fg = color.fg and 'guifg=' .. parse_color(color.fg) or 'guifg=NONE' - local bg = color.bg and 'guibg=' .. parse_color(color.bg) or 'guibg=NONE' - local sp = color.sp and 'guisp=' .. parse_color(color.sp) or '' + local fg = color.fg and parse_color(color.fg) or 'none' + local bg = color.bg and parse_color(color.bg) or 'none' + local sp = color.sp and parse_color(color.sp) or '' - vim.cmd(string.format('highlight %s %s %s %s %s', group, style, fg, bg, sp)) - - if color.link then - vim.cmd(string.format('highlight! link %s %s', group, color.link)) + if + color.blend ~= nil + and (color.blend >= 0 or color.blend <= 100) + and bg ~= nil + then + bg = util.blend(bg, parse_color('base') or '', color.blend / 100) end + + color = vim.tbl_extend('force', color, { fg = fg, bg = bg, sp = sp }) + vim.api.nvim_set_hl(0, group, color) end return util diff --git a/readme.md b/readme.md index af2c78a..76925f3 100644 --- a/readme.md +++ b/readme.md @@ -65,7 +65,9 @@ Variant respects `vim.o.background`, using dawn when light and `dark_variant` wh ```lua require('rose-pine').setup({ - --- @usage 'main' | 'moon' + --- @usage 'auto'|'main'|'moon'|'dawn' + variant = 'auto', + --- @usage 'main'|'moon'|'dawn' dark_variant = 'main', bold_vert_split = false, dim_nc_background = false, @@ -101,7 +103,11 @@ require('rose-pine').setup({ -- Change specific vim highlight groups highlight_groups = { - ColorColumn = { bg = 'rose' } + ColorColumn = { bg = 'rose' }, + + -- Blend colours against the "base" background + CursorLine = { bg = 'foam', blend = 10 }, + StatusLine = { fg = 'love', bg = 'love', blend = 10 }, } }) From 5491136d31dbb8021379323a25f7e524caac1e11 Mon Sep 17 00:00:00 2001 From: mvllow Date: Thu, 23 Feb 2023 13:52:31 -0600 Subject: [PATCH 11/47] fix: transparent `Pmenu` when `disable_float_background` Closes #124 --- lua/rose-pine/theme.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index f065f69..458efa3 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -50,7 +50,7 @@ function M._load(options) h('NormalFloat', { fg = p.text, bg = maybe.surface }) h('NormalNC', { fg = p.text, bg = maybe.dim_nc_background }) h('NvimInternalError', { fg = '#ffffff', bg = p.love }) - h('Pmenu', { fg = p.subtle, bg = p.surface }) + h('Pmenu', { fg = p.subtle, bg = p.maybe_surface }) h('PmenuSbar', { bg = p.highlight_low }) h('PmenuSel', { fg = p.text, bg = p.overlay }) h('PmenuThumb', { bg = p.highlight_med }) From 51a16de235f891debff937eaa3bc7e8155c6c8be Mon Sep 17 00:00:00 2001 From: not Date: Thu, 23 Feb 2023 14:34:03 -0600 Subject: [PATCH 12/47] Update readme.md --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index 76925f3..c197a31 100644 --- a/readme.md +++ b/readme.md @@ -102,6 +102,7 @@ require('rose-pine').setup({ }, -- Change specific vim highlight groups + -- https://github.com/rose-pine/neovim/wiki/Recipes highlight_groups = { ColorColumn = { bg = 'rose' }, From 4d6b2a2fe4a0fea30c7808559b06be46624bc587 Mon Sep 17 00:00:00 2001 From: Brian Di Palma <1597820+briandipalma@users.noreply.github.com> Date: Fri, 24 Feb 2023 18:06:25 +0000 Subject: [PATCH 13/47] fix: Make extent/size of floating windows clearer (#129) --- lua/rose-pine/theme.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 458efa3..806ff46 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -36,7 +36,7 @@ function M._load(options) h('Directory', { fg = p.foam, bg = p.none }) -- EndOfBuffer = {}, h('ErrorMsg', { fg = p.love, bold = true }) - h('FloatBorder', { fg = groups.border }) + h('FloatBorder', { fg = groups.border, bg = maybe.surface }) h('FloatTitle', { fg = p.muted }) h('FoldColumn', { fg = p.muted }) h('Folded', { fg = p.text, bg = maybe.surface }) From f977f0885384776e5f0e3bffa51abbbfd57d90cc Mon Sep 17 00:00:00 2001 From: Tom Marien Date: Sat, 4 Mar 2023 16:17:46 +0100 Subject: [PATCH 14/47] feat: added leap highlight groups (#133) --- lua/rose-pine/theme.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 806ff46..37690ca 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -424,6 +424,11 @@ function M._load(options) h('PounceGap', { link = 'Search' }) h('PounceMatch', { link = 'Search' }) + -- ggandor/leap.nvim + h('LeapMatch', { link = 'MatchParen' }) + h('LeapLabelPrimary', { link = 'IncSearch' }) + h('LeapLabelSecondary', { fg = p.base, bg = p.pine }) + -- nvim-telescope/telescope.nvim h('TelescopeBorder', { fg = groups.border, bg = maybe.surface }) h('TelescopeMatching', { fg = p.rose }) From 6e9d6fb0debf4ef4cca365b015db635d763c6d14 Mon Sep 17 00:00:00 2001 From: Jakub Theimer <5587309+theimerj@users.noreply.github.com> Date: Tue, 7 Mar 2023 03:35:28 +0700 Subject: [PATCH 15/47] Add highlights for nvim-navic (#135) --- lua/rose-pine/theme.lua | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 37690ca..5acb428 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -489,6 +489,37 @@ function M._load(options) h('DashboardCenter', { fg = p.gold }) h('DashboardFooter', { fg = p.iris }) + -- SmiteshP/nvim-navic + h('NavicIconsFile', { fg = p.base }) + h('NavicIconsModule', { fg = p.rose }) + h('NavicIconsNamespace', { fg = p.base }) + h('NavicIconsPackage', { fg = p.base }) + h('NavicIconsClass', { fg = p.gold }) + h('NavicIconsMethod', { fg = p.pine }) + h('NavicIconsProperty', { fg = p.foam }) + h('NavicIconsField', { fg = p.foam }) + h('NavicIconsConstructor', { fg = p.gold }) + h('NavicIconsEnum', { fg = p.gold }) + h('NavicIconsInterface', { fg = p.gold }) + h('NavicIconsFunction', { fg = p.pine }) + h('NavicIconsVariable', { fg = p.love }) + h('NavicIconsConstant', { fg = p.love }) + h('NavicIconsString', { fg = p.green }) + h('NavicIconsNumber', { fg = p.gold }) + h('NavicIconsBoolean', { fg = p.gold }) + h('NavicIconsArray', { fg = p.gold }) + h('NavicIconsObject', { fg = p.gold }) + h('NavicIconsKey', { fg = p.iris }) + h('NavicIconsKeyword', { fg = p.iris }) + h('NavicIconsNull', { fg = p.gold }) + h('NavicIconsEnumMember', { fg = p.foam }) + h('NavicIconsStruct', { fg = p.gold }) + h('NavicIconsEvent', { fg = p.gold }) + h('NavicIconsOperator', { fg = p.base }) + h('NavicIconsTypeParameter', { fg = p.foam }) + h('NavicText', { fg = p.subtle }) + h('NavicSeparator', { fg = p.subtle }) + vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black vim.g.terminal_color_1 = p.love -- red From 70b2b915a5d514235214577d46c86494e5ed7246 Mon Sep 17 00:00:00 2001 From: not Date: Mon, 6 Mar 2023 14:40:10 -0600 Subject: [PATCH 16/47] feat: add `background_nc` and `panel_nc` groups (#130) (#132) --- lua/rose-pine/config.lua | 4 ++++ lua/rose-pine/palette.lua | 6 +++--- lua/rose-pine/theme.lua | 42 +++++++++++++++++++-------------------- readme.md | 2 ++ 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/lua/rose-pine/config.lua b/lua/rose-pine/config.lua index c5a935e..156bb7e 100644 --- a/lua/rose-pine/config.lua +++ b/lua/rose-pine/config.lua @@ -2,7 +2,9 @@ local M = {} ---@class Groups ---@field background string +---@field background_nc string ---@field panel string +---@field panel_nc string ---@field border string ---@field comment string ---@field link string @@ -52,7 +54,9 @@ local defaults = { groups = { background = 'base', + background_nc = '_experimental_nc', panel = 'surface', + panel_nc = 'base', border = 'highlight_med', comment = 'muted', link = 'iris', diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua index db776f5..5ede492 100644 --- a/lua/rose-pine/palette.lua +++ b/lua/rose-pine/palette.lua @@ -2,7 +2,7 @@ local options = require('rose-pine.config').options local variants = { main = { - nc = '#16141f', + _experimental_nc = '#16141f', base = '#191724', surface = '#1f1d2e', overlay = '#26233a', @@ -21,7 +21,7 @@ local variants = { none = 'NONE', }, moon = { - nc = '#1f1d30', + _experimental_nc = '#1f1d30', base = '#232136', surface = '#2a273f', overlay = '#393552', @@ -40,7 +40,7 @@ local variants = { none = 'NONE', }, dawn = { - nc = '#f8f0e7', + _experimental_nc = '#f8f0e7', base = '#faf4ed', surface = '#fffaf3', overlay = '#f2e9e1', diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 5acb428..8a7a72f 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -7,13 +7,15 @@ function M._load(options) local groups = options.groups or {} local maybe = { - base = (options.disable_background and p.none) or p.base, - surface = (options.disable_float_background and p.none) or p.surface, + base = (options.disable_background and p.none) or groups.background, + surface = (options.disable_float_background and p.none) or groups.panel, italic = not options.disable_italics, } maybe.bold_vert_split = (options.bold_vert_split and groups.border) or p.none - maybe.dim_nc_background = (options.dim_nc_background and p.nc) + maybe.dim_nc_background = ( + options.dim_nc_background and groups.background_nc + ) or maybe.base h('ColorColumn', { bg = p.overlay }) h('Conceal', { bg = p.none }) @@ -50,7 +52,7 @@ function M._load(options) h('NormalFloat', { fg = p.text, bg = maybe.surface }) h('NormalNC', { fg = p.text, bg = maybe.dim_nc_background }) h('NvimInternalError', { fg = '#ffffff', bg = p.love }) - h('Pmenu', { fg = p.subtle, bg = p.maybe_surface }) + h('Pmenu', { fg = p.subtle, bg = maybe.surface }) h('PmenuSbar', { bg = p.highlight_low }) h('PmenuSel', { fg = p.text, bg = p.overlay }) h('PmenuThumb', { bg = p.highlight_med }) @@ -70,12 +72,12 @@ function M._load(options) fg = p.text, bg = (options.dim_nc_background and p.none) or maybe.base, }) - h('StatusLine', { fg = p.subtle, bg = p.surface }) - h('StatusLineNC', { fg = p.muted, bg = maybe.base }) + h('StatusLine', { fg = p.subtle, bg = groups.panel }) + h('StatusLineNC', { fg = p.muted, bg = groups.panel_nc }) h('StatusLineTerm', { link = 'StatusLine' }) h('StatusLineTermNC', { link = 'StatusLineNC' }) - h('TabLine', { fg = p.subtle, bg = p.surface }) - h('TabLineFill', { bg = p.surface }) + h('TabLine', { fg = p.subtle, bg = groups.panel }) + h('TabLineFill', { bg = groups.panel }) h('TabLineSel', { fg = p.text, bg = p.overlay }) h('Title', { fg = p.text }) h('VertSplit', { fg = groups.border, bg = maybe.bold_vert_split }) @@ -183,10 +185,10 @@ function M._load(options) h('DiagnosticSignHint', { fg = groups.hint }) h('DiagnosticSignInfo', { fg = groups.info }) h('DiagnosticSignWarn', { fg = groups.warn }) - h('DiagnosticStatusLineError', { fg = groups.error, bg = p.surface }) - h('DiagnosticStatusLineHint', { fg = groups.hint, bg = p.surface }) - h('DiagnosticStatusLineInfo', { fg = groups.info, bg = p.surface }) - h('DiagnosticStatusLineWarn', { fg = groups.warn, bg = p.surface }) + h('DiagnosticStatusLineError', { fg = groups.error, bg = groups.panel }) + h('DiagnosticStatusLineHint', { fg = groups.hint, bg = groups.panel }) + h('DiagnosticStatusLineInfo', { fg = groups.info, bg = groups.panel }) + h('DiagnosticStatusLineWarn', { fg = groups.warn, bg = groups.panel }) h('DiagnosticUnderlineError', { sp = groups.error, undercurl = true }) h('DiagnosticUnderlineHint', { sp = groups.hint, undercurl = true }) h('DiagnosticUnderlineInfo', { sp = groups.info, undercurl = true }) @@ -424,22 +426,20 @@ function M._load(options) h('PounceGap', { link = 'Search' }) h('PounceMatch', { link = 'Search' }) + local float_background = options.dim_nc_background + and (options.disable_float_background and groups.panel_nc or groups.panel) + or maybe.surface + -- ggandor/leap.nvim h('LeapMatch', { link = 'MatchParen' }) h('LeapLabelPrimary', { link = 'IncSearch' }) h('LeapLabelSecondary', { fg = p.base, bg = p.pine }) -- nvim-telescope/telescope.nvim - h('TelescopeBorder', { fg = groups.border, bg = maybe.surface }) + h('TelescopeBorder', { fg = groups.border, bg = float_background }) h('TelescopeMatching', { fg = p.rose }) - h('TelescopeNormal', { fg = p.subtle, bg = maybe.surface }) - h('TelescopePromptNormal', { - fg = p.text, - bg = ( - options.dim_nc_background - and (options.disable_float_background and p.nc or p.surface) - ) or maybe.surface, - }) + h('TelescopeNormal', { fg = p.subtle, bg = float_background }) + h('TelescopePromptNormal', { fg = p.text, bg = float_background }) h('TelescopePromptPrefix', { fg = p.subtle }) h('TelescopeSelection', { fg = p.text, bg = p.overlay }) h('TelescopeSelectionCaret', { fg = p.rose, bg = p.overlay }) diff --git a/readme.md b/readme.md index c197a31..370828d 100644 --- a/readme.md +++ b/readme.md @@ -78,7 +78,9 @@ require('rose-pine').setup({ --- @usage string hex value or named color from rosepinetheme.com/palette groups = { background = 'base', + background_nc = '_experimental_nc', panel = 'surface', + panel_nc = 'base', border = 'highlight_med', comment = 'muted', link = 'iris', From dcc3b0c7ca52294195d297edac12e41aab2475d8 Mon Sep 17 00:00:00 2001 From: not Date: Mon, 6 Mar 2023 15:07:12 -0600 Subject: [PATCH 17/47] feat: update navic colours (#136) --- lua/rose-pine/theme.lua | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 8a7a72f..45f937d 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -429,7 +429,7 @@ function M._load(options) local float_background = options.dim_nc_background and (options.disable_float_background and groups.panel_nc or groups.panel) or maybe.surface - + -- ggandor/leap.nvim h('LeapMatch', { link = 'MatchParen' }) h('LeapLabelPrimary', { link = 'IncSearch' }) @@ -494,28 +494,28 @@ function M._load(options) h('NavicIconsModule', { fg = p.rose }) h('NavicIconsNamespace', { fg = p.base }) h('NavicIconsPackage', { fg = p.base }) - h('NavicIconsClass', { fg = p.gold }) - h('NavicIconsMethod', { fg = p.pine }) + h('NavicIconsClass', { fg = p.foam }) + h('NavicIconsMethod', { fg = p.iris }) h('NavicIconsProperty', { fg = p.foam }) h('NavicIconsField', { fg = p.foam }) h('NavicIconsConstructor', { fg = p.gold }) h('NavicIconsEnum', { fg = p.gold }) - h('NavicIconsInterface', { fg = p.gold }) + h('NavicIconsInterface', { fg = p.foam }) h('NavicIconsFunction', { fg = p.pine }) - h('NavicIconsVariable', { fg = p.love }) - h('NavicIconsConstant', { fg = p.love }) - h('NavicIconsString', { fg = p.green }) + h('NavicIconsVariable', { fg = p.text }) + h('NavicIconsConstant', { fg = p.gold }) + h('NavicIconsString', { fg = p.gold }) h('NavicIconsNumber', { fg = p.gold }) - h('NavicIconsBoolean', { fg = p.gold }) + h('NavicIconsBoolean', { fg = p.rose }) h('NavicIconsArray', { fg = p.gold }) h('NavicIconsObject', { fg = p.gold }) h('NavicIconsKey', { fg = p.iris }) - h('NavicIconsKeyword', { fg = p.iris }) - h('NavicIconsNull', { fg = p.gold }) + h('NavicIconsKeyword', { fg = p.pine }) + h('NavicIconsNull', { fg = p.love }) h('NavicIconsEnumMember', { fg = p.foam }) - h('NavicIconsStruct', { fg = p.gold }) + h('NavicIconsStruct', { fg = p.foam }) h('NavicIconsEvent', { fg = p.gold }) - h('NavicIconsOperator', { fg = p.base }) + h('NavicIconsOperator', { fg = p.subtle }) h('NavicIconsTypeParameter', { fg = p.foam }) h('NavicText', { fg = p.subtle }) h('NavicSeparator', { fg = p.subtle }) From 2930024948195d0de7ef1e4022cb065f534614ec Mon Sep 17 00:00:00 2001 From: not Date: Mon, 6 Mar 2023 15:20:48 -0600 Subject: [PATCH 18/47] docs: remove empty setup function (#137) --- readme.md | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/readme.md b/readme.md index 370828d..b1a4c84 100644 --- a/readme.md +++ b/readme.md @@ -16,29 +16,19 @@ > With [lazy.nvim](https://github.com/folke/lazy.nvim) ```lua -{ - 'rose-pine/neovim', - name = 'rose-pine', - lazy = false, - priority = 1000, - config = function() - require("rose-pine").setup() - vim.cmd('colorscheme rose-pine') - end -} +require("lazy").setup({ + { 'rose-pine/neovim', name = 'rose-pine' } +}) + +vim.cmd('colorscheme rose-pine') ``` > With [packer.nvim](https://github.com/wbthomason/packer.nvim) ```lua -use({ - 'rose-pine/neovim', - as = 'rose-pine', - config = function() - require("rose-pine").setup() - vim.cmd('colorscheme rose-pine') - end -}) +use({ 'rose-pine/neovim', as = 'rose-pine' }) + +vim.cmd('colorscheme rose-pine') ``` _Supported plugins are listed in the [wiki](https://github.com/rose-pine/neovim/wiki#supported-plugins)_ @@ -114,7 +104,7 @@ require('rose-pine').setup({ } }) --- set colorscheme after options +-- Set colorscheme after options vim.cmd('colorscheme rose-pine') ``` @@ -122,6 +112,6 @@ vim.cmd('colorscheme rose-pine') We welcome and appreciate any help in creating a lovely experience for all. -- [Get highlight groups under cursor](https://github.com/nvim-treesitter/playground#show-treesitter-and-syntax-highlight-groups-under-the-cursor) +- Get highlight groups under cursor via `:Inspect` in Neovim 0.9 or [nvim-treesitter/playground](https://github.com/nvim-treesitter/playground#show-treesitter-and-syntax-highlight-groups-under-the-cursor) - [Adding new highlight groups](https://github.com/rose-pine/neovim/issues/6#issuecomment-962466323) - [Palette reference by name](https://rosepinetheme.com/palette) From 6535f2dc8832f31d252fd0c1d39df232edcdef46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=9C=D0=B0=D1=80=D1=82=D1=8B?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= <48406064+mrtnvgr@users.noreply.github.com> Date: Wed, 8 Mar 2023 10:45:48 +0700 Subject: [PATCH 19/47] feat: add `NoiceCursor` highlight group (#138) --- lua/rose-pine/theme.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 45f937d..99c7dc1 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -520,6 +520,9 @@ function M._load(options) h('NavicText', { fg = p.subtle }) h('NavicSeparator', { fg = p.subtle }) + -- folke/noice.nvim + h('NoiceCursor', { fg = p.highlight_high, bg = p.text }) + vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black vim.g.terminal_color_1 = p.love -- red From b3afc8e6a424ef1f8cd1375fd28580ab6a06eba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=9C=D0=B0=D1=80=D1=82=D1=8B?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= <48406064+mrtnvgr@users.noreply.github.com> Date: Wed, 8 Mar 2023 22:09:04 +0700 Subject: [PATCH 20/47] add @lsp.type highlight groups (add support for lsp semantic token groups) (#141) --- lua/rose-pine/theme.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 99c7dc1..5004793 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -261,6 +261,18 @@ function M._load(options) h('@type', { link = 'Type' }) h('@variable', { fg = p.text, italic = maybe.italic }) h('@variable.builtin', { fg = p.love }) + h('@namespace', { link = '@include' }) + + -- LSP Semantic Token Groups + h('@lsp.type.enum', { link = '@type' }) + h('@lsp.type.keyword', { link = '@keyword' }) + h('@lsp.type.interface', { link = '@interface' }) + h('@lsp.type.namespace', { link = '@namespace' }) + h('@lsp.type.parameter', { link = '@parameter' }) + h('@lsp.type.property', { link = '@property' }) + h('@lsp.type.variable', {}) -- use treesitter styles for regular variables + h('@lsp.typemod.function.defaultLibrary', { link = 'Special' }) + h('@lsp.typemod.variable.defaultLibrary', { link = '@variable.builtin' }) -- vim.lsp.buf.document_highlight() h('LspReferenceText', { bg = p.highlight_med }) From 6986ff21abed354808c2d72b0ee5acfbf30120a0 Mon Sep 17 00:00:00 2001 From: Will Leinweber Date: Wed, 8 Mar 2023 16:10:19 +0100 Subject: [PATCH 21/47] Add popup title bar color for NeoTree (#140) --- lua/rose-pine/theme.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 5004793..10edbe3 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -340,6 +340,9 @@ function M._load(options) h('NvimTreeSpecialFile', { link = 'NvimTreeNormal' }) h('NvimTreeWindowPicker', { fg = p.love, bg = p.love, blend = 10 }) + -- nvim-neo-tree/neo-tree.nvim + h('NeoTreeTitleBar', { fg = p.surface, bg = p.pine }) + -- folke/which-key.nvim h('WhichKey', { fg = p.iris }) h('WhichKeyGroup', { fg = p.foam }) From 63821c18a2840b3172fc5df15d9268d80f46fa17 Mon Sep 17 00:00:00 2001 From: Jakub Theimer <5587309+theimerj@users.noreply.github.com> Date: Fri, 10 Mar 2023 01:22:33 +0700 Subject: [PATCH 22/47] add highlights for mini.indentscope (#144) --- lua/rose-pine/theme.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 10edbe3..bae94d4 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -538,6 +538,10 @@ function M._load(options) -- folke/noice.nvim h('NoiceCursor', { fg = p.highlight_high, bg = p.text }) + -- echasnovski/mini.indentscope + h('MiniIndentscopeSymbol', { fg = p.highlight_med }) + h('MiniIndentscopeSymbolOff', { fg = p.highlight_med }) + vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black vim.g.terminal_color_1 = p.love -- red From 1883d8b417403f1d8c56d52d90445bbbe6be4b80 Mon Sep 17 00:00:00 2001 From: mvllow Date: Sun, 12 Mar 2023 14:35:16 -0500 Subject: [PATCH 23/47] groups.background now overrides all base instances --- lua/rose-pine/theme.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index bae94d4..c95a040 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -42,7 +42,7 @@ function M._load(options) h('FloatTitle', { fg = p.muted }) h('FoldColumn', { fg = p.muted }) h('Folded', { fg = p.text, bg = maybe.surface }) - h('IncSearch', { fg = p.base, bg = p.rose }) + h('IncSearch', { fg = groups.background, bg = p.rose }) h('LineNr', { fg = p.muted }) h('MatchParen', { fg = p.text, bg = p.highlight_med }) h('ModeMsg', { fg = p.subtle }) @@ -294,7 +294,7 @@ function M._load(options) h('BufferInactiveMod', { fg = p.foam }) h('BufferInactiveSign', { fg = p.muted }) h('BufferInactiveTarget', { fg = p.gold }) - h('BufferTabpageFill', { fg = p.base, bg = p.base }) + h('BufferTabpageFill', { fg = groups.background, bg = groups.background }) h('BufferVisible', { fg = p.subtle }) h('BufferVisibleIndex', { fg = p.subtle }) h('BufferVisibleMod', { fg = p.foam }) From 69f015b9522b468b320fbd56eb4ae72af4d5074f Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Sun, 19 Mar 2023 10:37:25 -0400 Subject: [PATCH 24/47] feat: highlights for goolord/alpha-nvim (#146) --- lua/rose-pine/theme.lua | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index c95a040..b342bb1 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -340,8 +340,8 @@ function M._load(options) h('NvimTreeSpecialFile', { link = 'NvimTreeNormal' }) h('NvimTreeWindowPicker', { fg = p.love, bg = p.love, blend = 10 }) - -- nvim-neo-tree/neo-tree.nvim - h('NeoTreeTitleBar', { fg = p.surface, bg = p.pine }) + -- nvim-neo-tree/neo-tree.nvim + h('NeoTreeTitleBar', { fg = p.surface, bg = p.pine }) -- folke/which-key.nvim h('WhichKey', { fg = p.iris }) @@ -542,6 +542,12 @@ function M._load(options) h('MiniIndentscopeSymbol', { fg = p.highlight_med }) h('MiniIndentscopeSymbolOff', { fg = p.highlight_med }) + -- goolord/alpha-nvim + h('AlphaHeader', { fg = p.pine }) + h('AlphaButtons', { fg = p.foam }) + h('AlphaShortcut', { fg = p.rose }) + h('AlphaFooter', { fg = p.gold }) + vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black vim.g.terminal_color_1 = p.love -- red From 835129f6a877005890b77562fb0cd7acb35e0292 Mon Sep 17 00:00:00 2001 From: mvllow Date: Wed, 22 Mar 2023 18:44:38 -0500 Subject: [PATCH 25/47] feat: alias `_experimental_nc` to `nc` in the palette --- lua/rose-pine/palette.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua index 5ede492..42eb9bc 100644 --- a/lua/rose-pine/palette.lua +++ b/lua/rose-pine/palette.lua @@ -2,7 +2,9 @@ local options = require('rose-pine.config').options local variants = { main = { + ---@deprecated for backwards compatibility _experimental_nc = '#16141f', + nc = '#16141f', base = '#191724', surface = '#1f1d2e', overlay = '#26233a', @@ -21,7 +23,9 @@ local variants = { none = 'NONE', }, moon = { + ---@deprecated for backwards compatibility _experimental_nc = '#1f1d30', + nc = '#1f1d30', base = '#232136', surface = '#2a273f', overlay = '#393552', @@ -40,7 +44,9 @@ local variants = { none = 'NONE', }, dawn = { + ---@deprecated for backwards compatibility _experimental_nc = '#f8f0e7', + nc = '#f8f0e7', base = '#faf4ed', surface = '#fffaf3', overlay = '#f2e9e1', From 44ba4bd558c37189637b9ec39f2c42839fd3837d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=9C=D0=B0=D1=80=D1=82=D1=8B?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= <48406064+mrtnvgr@users.noreply.github.com> Date: Thu, 23 Mar 2023 20:17:32 +0700 Subject: [PATCH 26/47] feat: add lsp injected highlights (#148) --- lua/rose-pine/theme.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index b342bb1..a076670 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -274,6 +274,11 @@ function M._load(options) h('@lsp.typemod.function.defaultLibrary', { link = 'Special' }) h('@lsp.typemod.variable.defaultLibrary', { link = '@variable.builtin' }) + -- LSP Injected Groups + h('@lsp.typemod.operator.injected', { link = '@operator' }) + h('@lsp.typemod.string.injected', { link = '@string' }) + h('@lsp.typemod.variable.injected', { link = '@variable' }) + -- vim.lsp.buf.document_highlight() h('LspReferenceText', { bg = p.highlight_med }) h('LspReferenceRead', { bg = p.highlight_med }) From 14b46ccdd49d1955c90f85f8efa4dc005f02a42c Mon Sep 17 00:00:00 2001 From: mvllow Date: Thu, 23 Mar 2023 14:02:35 -0500 Subject: [PATCH 27/47] feat: match editor background for `GitSigns*` gutter --- lua/rose-pine/theme.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index b342bb1..e2e2a6c 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -302,9 +302,9 @@ function M._load(options) h('BufferVisibleTarget', { fg = p.gold }) -- lewis6991/gitsigns.nvim - h('GitSignsAdd', { fg = groups.git_add }) - h('GitSignsChange', { fg = groups.git_change }) - h('GitSignsDelete', { fg = groups.git_delete }) + h('GitSignsAdd', { fg = groups.git_add, bg = groups.background }) + h('GitSignsChange', { fg = groups.git_change, bg = groups.background }) + h('GitSignsDelete', { fg = groups.git_delete, bg = groups.background }) h('SignAdd', { link = 'GitSignsAdd' }) h('SignChange', { link = 'GitSignsChange' }) h('SignDelete', { link = 'GitSignsDelete' }) From 060e39b906af04b9f7fd2ff3570f4a24c85cb537 Mon Sep 17 00:00:00 2001 From: mvllow Date: Thu, 30 Mar 2023 12:23:37 -0500 Subject: [PATCH 28/47] feat: update bufferline selected tab Ref #149 --- lua/rose-pine/plugins/bufferline.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lua/rose-pine/plugins/bufferline.lua b/lua/rose-pine/plugins/bufferline.lua index db722cf..1a5eaac 100644 --- a/lua/rose-pine/plugins/bufferline.lua +++ b/lua/rose-pine/plugins/bufferline.lua @@ -20,10 +20,10 @@ return { -- fg = '', -- bg = '', -- }, - -- tab_selected = { - -- fg = '', - -- bg = '', - -- }, + tab_selected = { + fg = p.text, + bg = p.overlay, + }, -- tab_close = { -- fg = '', -- bg = '', From 9532757a42361746b1df9b41ee83b97cad34df03 Mon Sep 17 00:00:00 2001 From: not Date: Thu, 30 Mar 2023 13:00:32 -0500 Subject: [PATCH 29/47] chore: update config types (#150) --- lua/rose-pine/config.lua | 64 +++++++++++++++------------------------- 1 file changed, 23 insertions(+), 41 deletions(-) diff --git a/lua/rose-pine/config.lua b/lua/rose-pine/config.lua index 156bb7e..cd9bef2 100644 --- a/lua/rose-pine/config.lua +++ b/lua/rose-pine/config.lua @@ -1,60 +1,39 @@ local M = {} ----@class Groups ----@field background string ----@field background_nc string ----@field panel string ----@field panel_nc string ----@field border string ----@field comment string ----@field link string ----@field punctuation string ----@field error string ----@field hint string ----@field info string ----@field warn string ----@field git_add string ----@field git_change string ----@field git_delete string ----@field git_dirty string ----@field git_ignore string ----@field git_merge string ----@field git_rename string ----@field git_stage string ----@field git_text string ----@field headings Headings|string +---@class Highlight +---@field fg string +---@field bg string +---@field sp string +---@field bold boolean +---@field italic boolean +---@field undercurl boolean +---@field underline boolean +---@field underdouble boolean +---@field underdotted boolean +---@field underdashed boolean +---@field strikethrough boolean ----@class Headings ----@field h1 string ----@field h2 string ----@field h3 string ----@field h4 string ----@field h5 string ----@field h6 string +---@alias Variant 'main' | 'moon' | 'dawn' ---@class Config ----@field variant 'auto'|'main'|'moon'|'dawn' ----@field dark_variant 'main'|'moon'|'dawn' ----@field bold_vert_split boolean ----@field dim_nc_background boolean ----@field disable_background boolean ----@field disable_float_background boolean ----@field disable_italics boolean ----@field groups Groups ----@field highlight_groups table local defaults = { + ---@type 'auto' | Variant variant = 'auto', + + ---@type Variant dark_variant = 'main', + bold_vert_split = false, + dim_nc_background = false, + disable_background = false, disable_float_background = false, disable_italics = false, - highlight_groups = {}, groups = { background = 'base', - background_nc = '_experimental_nc', + background_nc = 'nc', panel = 'surface', panel_nc = 'base', border = 'highlight_med', @@ -83,6 +62,9 @@ local defaults = { h6 = 'foam', }, }, + + ---@type table + highlight_groups = {}, } ---@type Config From f8e210df52a4f418eae3690eb744b06c13a6c556 Mon Sep 17 00:00:00 2001 From: not Date: Thu, 30 Mar 2023 17:04:49 -0500 Subject: [PATCH 30/47] docs: remove empty setup function (#151) From 3935606b6c1cd0111359142498a9b02d3a12e1f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B3=D0=BE=D1=80=20=D0=9C=D0=B0=D1=80=D1=82=D1=8B?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2?= <48406064+mrtnvgr@users.noreply.github.com> Date: Thu, 13 Apr 2023 06:02:24 +0700 Subject: [PATCH 31/47] fix(indent-blankline): fix italic indent lines (#154) --- lua/rose-pine/theme.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 3da38cb..0d96113 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -357,9 +357,9 @@ function M._load(options) h('WhichKeyValue', { fg = p.rose }) -- luka-reineke/indent-blankline.nvim - h('IndentBlanklineChar', { fg = p.muted }) - h('IndentBlanklineSpaceChar', { fg = p.muted }) - h('IndentBlanklineSpaceCharBlankline', { fg = p.muted }) + h('IndentBlanklineChar', { fg = p.muted, nocombine = true }) + h('IndentBlanklineSpaceChar', { fg = p.muted, nocombine = true }) + h('IndentBlanklineSpaceCharBlankline', { fg = p.muted, nocombine = true }) -- hrsh7th/nvim-cmp h('CmpItemAbbr', { fg = p.subtle }) From 667851c05f87874826084474b5f04829940b6451 Mon Sep 17 00:00:00 2001 From: Fitrah <55179750+fitrh@users.noreply.github.com> Date: Wed, 19 Apr 2023 00:29:36 +0800 Subject: [PATCH 32/47] fix: reset `@lsp.type.comment` (#155) --- lua/rose-pine/theme.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 0d96113..4f7af42 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -264,6 +264,7 @@ function M._load(options) h('@namespace', { link = '@include' }) -- LSP Semantic Token Groups + h('@lsp.type.comment', {}) h('@lsp.type.enum', { link = '@type' }) h('@lsp.type.keyword', { link = '@keyword' }) h('@lsp.type.interface', { link = '@interface' }) From 2909b6868f823d770a7595ab2387088ab5c7a37f Mon Sep 17 00:00:00 2001 From: not Date: Thu, 27 Apr 2023 12:22:09 -0500 Subject: [PATCH 33/47] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 41 ++++++++++----------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index b7603ef..929e6fc 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -46,36 +46,25 @@ body: label: Repro description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua` value: | - -- DO NOT change the paths and do not remove the colorscheme - local root = vim.fn.fnamemodify("./.repro", ":p") +vim.o.packpath = '/tmp/nvim/site' - -- Set stdpaths to use .repro - for _, name in ipairs({ "config", "data", "state", "cache" }) do - vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name - end +local plugins = { + rose_pine = 'https://github.com/rose-pine/neovim', + -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE +} - -- Bootstrap lazy.nvim - local lazypath = root .. "/plugins/lazy.nvim" - if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, }) - end - vim.opt.runtimepath:prepend(lazypath) +for name, url in pairs(plugins) do + local install_path = '/tmp/nvim/site/pack/test/start/' .. name + if vim.fn.isdirectory(install_path) == 0 then + vim.fn.system { 'git', 'clone', '--depth=1', url, install_path } + end +end - -- Install plugins - local plugins = { - "rose-pine/neovim", - name = "rose-pine", - config = function() - -- Add relevant Rosé Pine config below - require("rose-pine").setup({}) - end - } - require("lazy").setup(plugins, { - root = root .. "/plugins", - }) +require('rose-pine').setup({ + -- ADD ROSÉ PINE CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE +}) - vim.cmd.colorscheme("rose-pine") - -- Add anything else here +vim.cmd.colorscheme = "rose-pine" render: Lua validations: required: false From f39cf987ab72b31aba335daf250199b840e5f9b2 Mon Sep 17 00:00:00 2001 From: not Date: Thu, 27 Apr 2023 12:23:40 -0500 Subject: [PATCH 34/47] Update bug_report.yml --- .github/ISSUE_TEMPLATE/bug_report.yml | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 929e6fc..21d9f97 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -46,25 +46,25 @@ body: label: Repro description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua` value: | -vim.o.packpath = '/tmp/nvim/site' + vim.o.packpath = '/tmp/nvim/site' -local plugins = { - rose_pine = 'https://github.com/rose-pine/neovim', - -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE -} + local plugins = { + rose_pine = 'https://github.com/rose-pine/neovim', + -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE + } -for name, url in pairs(plugins) do - local install_path = '/tmp/nvim/site/pack/test/start/' .. name - if vim.fn.isdirectory(install_path) == 0 then - vim.fn.system { 'git', 'clone', '--depth=1', url, install_path } - end -end + for name, url in pairs(plugins) do + local install_path = '/tmp/nvim/site/pack/test/start/' .. name + if vim.fn.isdirectory(install_path) == 0 then + vim.fn.system { 'git', 'clone', '--depth=1', url, install_path } + end + end -require('rose-pine').setup({ - -- ADD ROSÉ PINE CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE -}) + require('rose-pine').setup({ + -- ADD ROSÉ PINE CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE + }) -vim.cmd.colorscheme = "rose-pine" + vim.cmd.colorscheme = "rose-pine" render: Lua validations: required: false From 2eace84d649d76d41dcd44a87a17f64c7c4a586d Mon Sep 17 00:00:00 2001 From: not Date: Sun, 30 Apr 2023 16:27:50 -0500 Subject: [PATCH 35/47] Update bug_report.yml (#157) --- .github/ISSUE_TEMPLATE/bug_report.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 21d9f97..4cee468 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -46,25 +46,25 @@ body: label: Repro description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua` value: | - vim.o.packpath = '/tmp/nvim/site' + vim.o.packpath = "/tmp/nvim/site" local plugins = { - rose_pine = 'https://github.com/rose-pine/neovim', + rose_pine = "https://github.com/rose-pine/neovim", -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE } for name, url in pairs(plugins) do - local install_path = '/tmp/nvim/site/pack/test/start/' .. name + local install_path = "/tmp/nvim/site/pack/test/start/" .. name if vim.fn.isdirectory(install_path) == 0 then - vim.fn.system { 'git', 'clone', '--depth=1', url, install_path } + vim.fn.system({ "git", "clone", "--depth=1", url, install_path }) end end - require('rose-pine').setup({ + require("rose-pine").setup({ -- ADD ROSÉ PINE CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE }) - vim.cmd.colorscheme = "rose-pine" + vim.cmd("colorscheme rose-pine") render: Lua validations: required: false From 95b458f7b8c5339403c51cd0fa4a9a85468aa5c3 Mon Sep 17 00:00:00 2001 From: mvllow Date: Sun, 28 May 2023 17:19:01 +0200 Subject: [PATCH 36/47] fix: reset palette when switching colorschemes --- colors/rose-pine-dawn.lua | 3 ++- colors/rose-pine-main.lua | 3 ++- colors/rose-pine-moon.lua | 3 ++- colors/rose-pine.lua | 1 - lua/rose-pine.lua | 16 +++++++--------- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/colors/rose-pine-dawn.lua b/colors/rose-pine-dawn.lua index b4482c0..3ce1680 100644 --- a/colors/rose-pine-dawn.lua +++ b/colors/rose-pine-dawn.lua @@ -1 +1,2 @@ -require('rose-pine').colorscheme({ variant = 'dawn' }) +package.loaded['rose-pine.palette'] = nil +require('rose-pine').colorscheme('dawn') diff --git a/colors/rose-pine-main.lua b/colors/rose-pine-main.lua index 6951634..e09c69d 100644 --- a/colors/rose-pine-main.lua +++ b/colors/rose-pine-main.lua @@ -1 +1,2 @@ -require('rose-pine').colorscheme({ variant = 'main' }) +package.loaded['rose-pine.palette'] = nil +require('rose-pine').colorscheme('main') diff --git a/colors/rose-pine-moon.lua b/colors/rose-pine-moon.lua index 57e6a68..7196100 100644 --- a/colors/rose-pine-moon.lua +++ b/colors/rose-pine-moon.lua @@ -1 +1,2 @@ -require('rose-pine').colorscheme({ variant = 'moon' }) +package.loaded['rose-pine.palette'] = nil +require('rose-pine').colorscheme('moon') diff --git a/colors/rose-pine.lua b/colors/rose-pine.lua index fd735a8..71f155f 100644 --- a/colors/rose-pine.lua +++ b/colors/rose-pine.lua @@ -1,3 +1,2 @@ package.loaded['rose-pine.palette'] = nil - require('rose-pine').colorscheme() diff --git a/lua/rose-pine.lua b/lua/rose-pine.lua index bbfadb1..b843fde 100644 --- a/lua/rose-pine.lua +++ b/lua/rose-pine.lua @@ -1,17 +1,15 @@ local config = require('rose-pine.config') local M = {} ----@param options Config|nil -function M.colorscheme(options) - if options then - config.extend(options) - end - - if vim.g.colors_name then - vim.cmd('hi clear') - end +---@param variant Variant|nil +function M.colorscheme(variant) + config.extend({ variant = variant }) vim.opt.termguicolors = true + if vim.g.colors_name then + vim.cmd('hi clear') + vim.cmd('syntax reset') + end vim.g.colors_name = 'rose-pine' require('rose-pine.theme')._load(config.options) From 6b7b38bbb3dac648dbf81f2728ce1101f476f920 Mon Sep 17 00:00:00 2001 From: mvllow Date: Sun, 28 May 2023 17:26:42 +0200 Subject: [PATCH 37/47] chore: clean up types and setup logic --- lua/rose-pine.lua | 4 +++- lua/rose-pine/config.lua | 46 ++++++++++++--------------------------- lua/rose-pine/palette.lua | 10 ++------- lua/rose-pine/theme.lua | 2 +- 4 files changed, 20 insertions(+), 42 deletions(-) diff --git a/lua/rose-pine.lua b/lua/rose-pine.lua index b843fde..b3cf3ea 100644 --- a/lua/rose-pine.lua +++ b/lua/rose-pine.lua @@ -15,6 +15,8 @@ function M.colorscheme(variant) require('rose-pine.theme')._load(config.options) end -M.setup = config.setup +function M.setup(options) + config.extend(options) +end return M diff --git a/lua/rose-pine/config.lua b/lua/rose-pine/config.lua index cd9bef2..58674d7 100644 --- a/lua/rose-pine/config.lua +++ b/lua/rose-pine/config.lua @@ -1,25 +1,18 @@ +---@alias Variant "main" | "moon" | "dawn" +---@alias Color { fg: string, bg: string, sp: string, bold: boolean, italic: boolean, undercurl: boolean, underline: boolean, underdouble: boolean, underdotted: boolean, underdashed: boolean, strikethrough: boolean } + local M = {} ----@class Highlight ----@field fg string ----@field bg string ----@field sp string ----@field bold boolean ----@field italic boolean ----@field undercurl boolean ----@field underline boolean ----@field underdouble boolean ----@field underdotted boolean ----@field underdashed boolean ----@field strikethrough boolean - ----@alias Variant 'main' | 'moon' | 'dawn' - ----@class Config -local defaults = { - ---@type 'auto' | Variant +---@class Options +M.options = { + ---Set the desired variant: "auto" will follow the vim background, + ---defaulting to "main" for dark and "dawn" for light. To change the dark + ---variant, use `options.dark_variant = "moon"`. + ---@type "auto" | Variant variant = 'auto', + ---Set the desired dark variant: applies when `options.variant` is set to + ---"auto" to match `vim.o.background`. ---@type Variant dark_variant = 'main', @@ -63,24 +56,13 @@ local defaults = { }, }, - ---@type table + ---@type table highlight_groups = {}, } ----@type Config -M.options = {} - ----@param options Config|nil -function M.setup(options) - M.options = vim.tbl_deep_extend('force', {}, defaults, options or {}) -end - ----@param options Config|nil +---@param options Options|nil function M.extend(options) - M.options = - vim.tbl_deep_extend('force', {}, M.options or defaults, options or {}) + M.options = vim.tbl_deep_extend('force', M.options, options or {}) end -M.setup() - return M diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua index 42eb9bc..66d6438 100644 --- a/lua/rose-pine/palette.lua +++ b/lua/rose-pine/palette.lua @@ -66,14 +66,8 @@ local variants = { }, } -if options.variant == 'main' then - return variants.main -end -if options.variant == 'moon' then - return variants.moon -end -if options.variant == 'dawn' then - return variants.dawn +if variants[options.variant] ~= nil then + return variants[options.variant] end return vim.o.background == 'light' and variants.dawn diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 4f7af42..edb25a1 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -1,6 +1,6 @@ local M = {} ----@param options Config +---@param options Options function M._load(options) local h = require('rose-pine.util').highlight local p = require('rose-pine.palette') From 34f68e871527fb8d7d193e04dafedcf7005304c1 Mon Sep 17 00:00:00 2001 From: Sebastian Wiegandt Date: Sat, 10 Jun 2023 23:56:22 +0200 Subject: [PATCH 38/47] Improve Treesitter heading highlighting for Markdown (#163) --- lua/rose-pine/theme.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index edb25a1..90e7c30 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -280,6 +280,20 @@ function M._load(options) h('@lsp.typemod.string.injected', { link = '@string' }) h('@lsp.typemod.variable.injected', { link = '@variable' }) + -- nvim-treesitter Markdown Headings + h('@text.title.1.markdown', { link = 'markdownH1' }) + h('@text.title.1.marker.markdown', { link = 'markdownH1Delimiter' }) + h('@text.title.2.markdown', { link = 'markdownH2' }) + h('@text.title.2.marker.markdown', { link = 'markdownH2Delimiter' }) + h('@text.title.3.markdown', { link = 'markdownH3' }) + h('@text.title.3.marker.markdown', { link = 'markdownH3Delimiter' }) + h('@text.title.4.markdown', { link = 'markdownH4' }) + h('@text.title.4.marker.markdown', { link = 'markdownH4Delimiter' }) + h('@text.title.5.markdown', { link = 'markdownH5' }) + h('@text.title.5.marker.markdown', { link = 'markdownH5Delimiter' }) + h('@text.title.6.markdown', { link = 'markdownH6' }) + h('@text.title.6.marker.markdown', { link = 'markdownH6Delimiter' }) + -- vim.lsp.buf.document_highlight() h('LspReferenceText', { bg = p.highlight_med }) h('LspReferenceRead', { bg = p.highlight_med }) From 4c2c12f57c103fd6f9006915a98d7582af24e013 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Mon, 19 Jun 2023 13:48:02 -0400 Subject: [PATCH 39/47] feat: colors for neo-tree (#166) --- lua/rose-pine/theme.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 90e7c30..12a60f0 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -362,6 +362,13 @@ function M._load(options) -- nvim-neo-tree/neo-tree.nvim h('NeoTreeTitleBar', { fg = p.surface, bg = p.pine }) + h('NeoTreeGitAdded', { fg = p.foam }) + h('NeoTreeGitModified', { fg = p.rose }) + h('NeoTreeGitDeleted', { fg = p.love }) + h('NeoTreeGitRenamed', { fg = p.pine }) + h('NeoTreeGitIgnored', { fg = p.muted }) + h('NeoTreeGitUntracked', { fg = p.gold }) + h('NeoTreeGitConflict', { fg = p.iris }) -- folke/which-key.nvim h('WhichKey', { fg = p.iris }) From 894acd0f4bf70ee23344867100c76bf4bd68976d Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Mon, 19 Jun 2023 13:48:24 -0400 Subject: [PATCH 40/47] feat: colors for hop (#165) --- lua/rose-pine/theme.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 12a60f0..f9591d3 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -477,6 +477,12 @@ function M._load(options) h('LeapLabelPrimary', { link = 'IncSearch' }) h('LeapLabelSecondary', { fg = p.base, bg = p.pine }) + -- phaazon/hop.nvim + h('HopNextKey', { fg = p.love }) + h('HopNextKey1', { fg = p.foam }) + h('HopNextKey2', { fg = p.pine }) + h('HopUnmatched', { fg = p.highlight_high }) + -- nvim-telescope/telescope.nvim h('TelescopeBorder', { fg = groups.border, bg = float_background }) h('TelescopeMatching', { fg = p.rose }) From aeaa2fe774e52c2a2215605d7d4821a18b27413f Mon Sep 17 00:00:00 2001 From: not Date: Wed, 21 Jun 2023 15:37:44 +0200 Subject: [PATCH 41/47] feat: change `@method` from iris to rose (#167) Closes #164 --- lua/rose-pine/theme.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index f9591d3..d0b5b83 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -224,7 +224,7 @@ function M._load(options) h('@keyword.operator', { fg = p.subtle }) h('@label', { link = 'Label' }) h('@macro', { link = 'Macro' }) - h('@method', { fg = p.iris }) + h('@method', { fg = p.rose }) h('@number', { link = 'Number' }) h('@operator', { link = 'Operator' }) h('@parameter', { fg = p.iris, italic = maybe.italic }) From 932adb0d9351186db047302de021bb2976756a07 Mon Sep 17 00:00:00 2001 From: not Date: Wed, 21 Jun 2023 16:34:13 +0200 Subject: [PATCH 42/47] feat: update tag and includes for consistency with semantic tokens (#168) --- lua/rose-pine/theme.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index d0b5b83..0282160 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -101,7 +101,7 @@ function M._load(options) h('Function', { fg = p.rose }) h('Identifier', { fg = p.rose }) -- Ignore = {}, - h('Include', { fg = p.iris }) + h('Include', { fg = p.pine }) h('Keyword', { fg = p.pine }) h('Label', { fg = p.foam }) h('Macro', { fg = p.iris }) @@ -117,7 +117,7 @@ function M._load(options) h('StorageClass', { fg = p.foam }) h('String', { fg = p.gold }) h('Structure', { fg = p.foam }) - h('Tag', { fg = p.rose }) + h('Tag', { fg = p.foam }) h('Todo', { fg = p.iris }) h('Type', { fg = p.foam }) h('Typedef', { link = 'Type' }) From 76cae45b4e6716ee93afc78bd3860134935ea9d7 Mon Sep 17 00:00:00 2001 From: Niamh Ferns <81906761+NiamhFerns@users.noreply.github.com> Date: Sun, 16 Jul 2023 03:04:58 +1200 Subject: [PATCH 43/47] =?UTF-8?q?feat!:=20custom=20user=20highlight=20grou?= =?UTF-8?q?ps=20are=20merged=20with=20Ros=C3=A9=20Pine=20defaults=20(#171)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Configuring `highlight_groups` now merge by default. For example, to add italics without changing the colour: ```diff - Keyword = { fg = "pine", italic = true } + Keyword = { italic = true } ``` Opt out of this behaviour via `inherit = false`. --- lua/rose-pine/theme.lua | 1116 ++++++++++++++++++++------------------- readme.md | 4 + 2 files changed, 568 insertions(+), 552 deletions(-) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index 0282160..e8dcd93 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -17,569 +17,568 @@ function M._load(options) options.dim_nc_background and groups.background_nc ) or maybe.base - h('ColorColumn', { bg = p.overlay }) - h('Conceal', { bg = p.none }) - h('CurSearch', { link = 'IncSearch' }) - h('Cursor', { fg = p.text, bg = p.highlight_high }) - h('CursorColumn', { bg = p.highlight_low }) - -- CursorIM = {}, - h('CursorLine', { bg = p.highlight_low }) - h('CursorLineNr', { fg = p.text }) - h('DarkenedPanel', { bg = maybe.surface }) - h('DarkenedStatusline', { bg = maybe.surface }) - h('DiffAdd', { bg = groups.git_add, blend = 20 }) - - h('DiffChange', { bg = p.overlay }) - h('DiffDelete', { bg = groups.git_delete, blend = 20 }) - h('DiffText', { bg = groups.git_text, blend = 20 }) - h('diffAdded', { link = 'DiffAdd' }) - h('diffChanged', { link = 'DiffChange' }) - h('diffRemoved', { link = 'DiffDelete' }) - h('Directory', { fg = p.foam, bg = p.none }) - -- EndOfBuffer = {}, - h('ErrorMsg', { fg = p.love, bold = true }) - h('FloatBorder', { fg = groups.border, bg = maybe.surface }) - h('FloatTitle', { fg = p.muted }) - h('FoldColumn', { fg = p.muted }) - h('Folded', { fg = p.text, bg = maybe.surface }) - h('IncSearch', { fg = groups.background, bg = p.rose }) - h('LineNr', { fg = p.muted }) - h('MatchParen', { fg = p.text, bg = p.highlight_med }) - h('ModeMsg', { fg = p.subtle }) - h('MoreMsg', { fg = p.iris }) - h('NonText', { fg = p.muted }) - h('Normal', { fg = p.text, bg = maybe.base }) - h('NormalFloat', { fg = p.text, bg = maybe.surface }) - h('NormalNC', { fg = p.text, bg = maybe.dim_nc_background }) - h('NvimInternalError', { fg = '#ffffff', bg = p.love }) - h('Pmenu', { fg = p.subtle, bg = maybe.surface }) - h('PmenuSbar', { bg = p.highlight_low }) - h('PmenuSel', { fg = p.text, bg = p.overlay }) - h('PmenuThumb', { bg = p.highlight_med }) - h('Question', { fg = p.gold }) - -- QuickFixLine = {}, - -- RedrawDebugNormal = {} - h('RedrawDebugClear', { fg = '#ffffff', bg = p.gold }) - h('RedrawDebugComposed', { fg = '#ffffff', bg = p.pine }) - h('RedrawDebugRecompose', { fg = '#ffffff', bg = p.love }) - h('Search', { bg = p.highlight_med }) - h('SpecialKey', { fg = p.foam }) - h('SpellBad', { sp = p.subtle, undercurl = true }) - h('SpellCap', { sp = p.subtle, undercurl = true }) - h('SpellLocal', { sp = p.subtle, undercurl = true }) - h('SpellRare', { sp = p.subtle, undercurl = true }) - h('SignColumn', { - fg = p.text, - bg = (options.dim_nc_background and p.none) or maybe.base, - }) - h('StatusLine', { fg = p.subtle, bg = groups.panel }) - h('StatusLineNC', { fg = p.muted, bg = groups.panel_nc }) - h('StatusLineTerm', { link = 'StatusLine' }) - h('StatusLineTermNC', { link = 'StatusLineNC' }) - h('TabLine', { fg = p.subtle, bg = groups.panel }) - h('TabLineFill', { bg = groups.panel }) - h('TabLineSel', { fg = p.text, bg = p.overlay }) - h('Title', { fg = p.text }) - h('VertSplit', { fg = groups.border, bg = maybe.bold_vert_split }) - h('Visual', { bg = p.highlight_med }) - -- VisualNOS = {}, - h('WarningMsg', { fg = p.gold }) - -- Whitespace = {}, - h('WildMenu', { link = 'IncSearch' }) - - h('Boolean', { fg = p.rose }) - h('Character', { fg = p.gold }) - h('Comment', { fg = groups.comment, italic = maybe.italic }) - h('Conditional', { fg = p.pine }) - h('Constant', { fg = p.gold }) - h('Debug', { fg = p.rose }) - h('Define', { fg = p.iris }) - h('Delimiter', { fg = p.subtle }) - h('Error', { fg = p.love }) - h('Exception', { fg = p.pine }) - h('Float', { fg = p.gold }) - h('Function', { fg = p.rose }) - h('Identifier', { fg = p.rose }) - -- Ignore = {}, - h('Include', { fg = p.pine }) - h('Keyword', { fg = p.pine }) - h('Label', { fg = p.foam }) - h('Macro', { fg = p.iris }) - h('Number', { fg = p.gold }) - h('Operator', { fg = p.subtle }) - h('PreCondit', { fg = p.iris }) - h('PreProc', { fg = p.iris }) - h('Repeat', { fg = p.pine }) - h('Special', { fg = p.rose }) - h('SpecialChar', { fg = p.rose }) - h('SpecialComment', { fg = p.iris }) - h('Statement', { fg = p.pine }) - h('StorageClass', { fg = p.foam }) - h('String', { fg = p.gold }) - h('Structure', { fg = p.foam }) - h('Tag', { fg = p.foam }) - h('Todo', { fg = p.iris }) - h('Type', { fg = p.foam }) - h('Typedef', { link = 'Type' }) - h('Underlined', { underline = true }) - - h('htmlArg', { fg = p.iris }) - h('htmlBold', { bold = true }) - h('htmlEndTag', { fg = p.subtle }) - h('htmlH1', { fg = groups.headings.h1, bold = true }) - h('htmlH2', { fg = groups.headings.h2, bold = true }) - h('htmlH3', { fg = groups.headings.h3, bold = true }) - h('htmlH4', { fg = groups.headings.h4, bold = true }) - h('htmlH5', { fg = groups.headings.h5, bold = true }) - h('htmlItalic', { italic = maybe.italic }) - h('htmlLink', { fg = groups.link }) - h('htmlTag', { fg = p.subtle }) - h('htmlTagN', { fg = p.text }) - h('htmlTagName', { fg = p.foam }) - - h('markdownDelimiter', { fg = p.subtle }) - h('markdownH1', { fg = groups.headings.h1, bold = true }) - h('markdownH1Delimiter', { link = 'markdownH1' }) - h('markdownH2', { fg = groups.headings.h2, bold = true }) - h('markdownH2Delimiter', { link = 'markdownH2' }) - h('markdownH3', { fg = groups.headings.h3, bold = true }) - h('markdownH3Delimiter', { link = 'markdownH3' }) - h('markdownH4', { fg = groups.headings.h4, bold = true }) - h('markdownH4Delimiter', { link = 'markdownH4' }) - h('markdownH5', { fg = groups.headings.h5, bold = true }) - h('markdownH5Delimiter', { link = 'markdownH5' }) - h('markdownH6', { fg = groups.headings.h6, bold = true }) - h('markdownH6Delimiter', { link = 'markdownH6' }) - h( - 'markdownLinkText', - { fg = groups.link, sp = groups.link, underline = true } - ) - h('markdownUrl', { link = 'markdownLinkText' }) - - h('mkdCode', { fg = p.foam, italic = maybe.italic }) - h('mkdCodeDelimiter', { fg = p.rose }) - h('mkdCodeEnd', { fg = p.foam }) - h('mkdCodeStart', { fg = p.foam }) - h('mkdFootnotes', { fg = p.foam }) - h('mkdID', { fg = p.foam, underline = true }) - h('mkdInlineURL', { fg = groups.link, underline = true }) - h('mkdLink', { link = 'mkdInlineURL' }) - h('mkdLinkDef', { link = 'mkdInlineURL' }) - h('mkdListItemLine', { fg = p.text }) - h('mkdRule', { fg = p.subtle }) - h('mkdURL', { link = 'mkdInlineURL' }) - - h('DiagnosticError', { fg = groups.error }) - h('DiagnosticHint', { fg = groups.hint }) - h('DiagnosticInfo', { fg = groups.info }) - h('DiagnosticWarn', { fg = groups.warn }) - h('DiagnosticDefaultError', { fg = groups.error }) - h('DiagnosticDefaultHint', { fg = groups.hint }) - h('DiagnosticDefaultInfo', { fg = groups.info }) - h('DiagnosticDefaultWarn', { fg = groups.warn }) - h('DiagnosticFloatingError', { fg = groups.error }) - h('DiagnosticFloatingHint', { fg = groups.hint }) - h('DiagnosticFloatingInfo', { fg = groups.info }) - h('DiagnosticFloatingWarn', { fg = groups.warn }) - h('DiagnosticSignError', { fg = groups.error }) - h('DiagnosticSignHint', { fg = groups.hint }) - h('DiagnosticSignInfo', { fg = groups.info }) - h('DiagnosticSignWarn', { fg = groups.warn }) - h('DiagnosticStatusLineError', { fg = groups.error, bg = groups.panel }) - h('DiagnosticStatusLineHint', { fg = groups.hint, bg = groups.panel }) - h('DiagnosticStatusLineInfo', { fg = groups.info, bg = groups.panel }) - h('DiagnosticStatusLineWarn', { fg = groups.warn, bg = groups.panel }) - h('DiagnosticUnderlineError', { sp = groups.error, undercurl = true }) - h('DiagnosticUnderlineHint', { sp = groups.hint, undercurl = true }) - h('DiagnosticUnderlineInfo', { sp = groups.info, undercurl = true }) - h('DiagnosticUnderlineWarn', { sp = groups.warn, undercurl = true }) - h('DiagnosticVirtualTextError', { fg = groups.error }) - h('DiagnosticVirtualTextHint', { fg = groups.hint }) - h('DiagnosticVirtualTextInfo', { fg = groups.info }) - h('DiagnosticVirtualTextWarn', { fg = groups.warn }) - - -- healthcheck - h('healthError', { fg = groups.error }) - h('healthSuccess', { fg = groups.info }) - h('healthWarning', { fg = groups.warn }) - - -- Treesitter - h('@boolean', { link = 'Boolean' }) - h('@character', { link = 'Character' }) - h('@character.special', { link = '@character' }) - h('@class', { fg = p.foam }) - h('@comment', { link = 'Comment' }) - h('@conditional', { link = 'Conditional' }) - h('@constant', { link = 'Constant' }) - h('@constant.builtin', { fg = p.love }) - h('@constant.macro', { link = '@constant' }) - h('@constructor', { fg = p.foam }) - h('@field', { fg = p.foam }) - h('@function', { link = 'Function' }) - h('@function.builtin', { fg = p.love }) - h('@function.macro', { link = '@function' }) - h('@include', { link = 'Include' }) - h('@interface', { fg = p.foam }) - h('@keyword', { link = 'Keyword' }) - h('@keyword.operator', { fg = p.subtle }) - h('@label', { link = 'Label' }) - h('@macro', { link = 'Macro' }) - h('@method', { fg = p.rose }) - h('@number', { link = 'Number' }) - h('@operator', { link = 'Operator' }) - h('@parameter', { fg = p.iris, italic = maybe.italic }) - h('@preproc', { link = 'PreProc' }) - h('@property', { fg = p.foam, italic = maybe.italic }) - h('@punctuation', { fg = groups.punctuation }) - h('@punctuation.bracket', { link = '@punctuation' }) - h('@punctuation.delimiter', { link = '@punctuation' }) - h('@punctuation.special', { link = '@punctuation' }) - h('@regexp', { link = 'String' }) - h('@repeat', { link = 'Repeat' }) - h('@storageclass', { link = 'StorageClass' }) - h('@string', { link = 'String' }) - h('@string.escape', { fg = p.pine }) - h('@string.special', { link = '@string' }) - h('@symbol', { link = 'Identifier' }) - h('@tag', { link = 'Tag' }) - h('@tag.attribute', { fg = p.iris }) - h('@tag.delimiter', { fg = p.subtle }) - h('@text', { fg = p.text }) - h('@text.strong', { bold = true }) - h('@text.emphasis', { italic = true }) - h('@text.underline', { underline = true }) - h('@text.strike', { strikethrough = true }) - h('@text.math', { link = 'Special' }) - h('@text.environment', { link = 'Macro' }) - h('@text.environment.name', { link = 'Type' }) - h('@text.title', { link = 'Title' }) - h('@text.uri', { fg = groups.link }) - h('@text.note', { link = 'SpecialComment' }) - h('@text.warning', { fg = groups.warn }) - h('@text.danger', { fg = groups.error }) - h('@todo', { link = 'Todo' }) - h('@type', { link = 'Type' }) - h('@variable', { fg = p.text, italic = maybe.italic }) - h('@variable.builtin', { fg = p.love }) - h('@namespace', { link = '@include' }) - - -- LSP Semantic Token Groups - h('@lsp.type.comment', {}) - h('@lsp.type.enum', { link = '@type' }) - h('@lsp.type.keyword', { link = '@keyword' }) - h('@lsp.type.interface', { link = '@interface' }) - h('@lsp.type.namespace', { link = '@namespace' }) - h('@lsp.type.parameter', { link = '@parameter' }) - h('@lsp.type.property', { link = '@property' }) - h('@lsp.type.variable', {}) -- use treesitter styles for regular variables - h('@lsp.typemod.function.defaultLibrary', { link = 'Special' }) - h('@lsp.typemod.variable.defaultLibrary', { link = '@variable.builtin' }) - - -- LSP Injected Groups - h('@lsp.typemod.operator.injected', { link = '@operator' }) - h('@lsp.typemod.string.injected', { link = '@string' }) - h('@lsp.typemod.variable.injected', { link = '@variable' }) - - -- nvim-treesitter Markdown Headings - h('@text.title.1.markdown', { link = 'markdownH1' }) - h('@text.title.1.marker.markdown', { link = 'markdownH1Delimiter' }) - h('@text.title.2.markdown', { link = 'markdownH2' }) - h('@text.title.2.marker.markdown', { link = 'markdownH2Delimiter' }) - h('@text.title.3.markdown', { link = 'markdownH3' }) - h('@text.title.3.marker.markdown', { link = 'markdownH3Delimiter' }) - h('@text.title.4.markdown', { link = 'markdownH4' }) - h('@text.title.4.marker.markdown', { link = 'markdownH4Delimiter' }) - h('@text.title.5.markdown', { link = 'markdownH5' }) - h('@text.title.5.marker.markdown', { link = 'markdownH5Delimiter' }) - h('@text.title.6.markdown', { link = 'markdownH6' }) - h('@text.title.6.marker.markdown', { link = 'markdownH6Delimiter' }) - - -- vim.lsp.buf.document_highlight() - h('LspReferenceText', { bg = p.highlight_med }) - h('LspReferenceRead', { bg = p.highlight_med }) - h('LspReferenceWrite', { bg = p.highlight_med }) - - -- lsp-highlight-codelens - h('LspCodeLens', { fg = p.subtle }) -- virtual text of code len - h('LspCodeLensSeparator', { fg = p.highlight_high }) -- separator between two or more code len - - -- romgrk/barbar.nvim - h('BufferCurrent', { fg = p.text, bg = p.overlay }) - h('BufferCurrentIndex', { fg = p.text, bg = p.overlay }) - h('BufferCurrentMod', { fg = p.foam, bg = p.overlay }) - h('BufferCurrentSign', { fg = p.subtle, bg = p.overlay }) - h('BufferCurrentTarget', { fg = p.gold, bg = p.overlay }) - h('BufferInactive', { fg = p.subtle }) - h('BufferInactiveIndex', { fg = p.subtle }) - h('BufferInactiveMod', { fg = p.foam }) - h('BufferInactiveSign', { fg = p.muted }) - h('BufferInactiveTarget', { fg = p.gold }) - h('BufferTabpageFill', { fg = groups.background, bg = groups.background }) - h('BufferVisible', { fg = p.subtle }) - h('BufferVisibleIndex', { fg = p.subtle }) - h('BufferVisibleMod', { fg = p.foam }) - h('BufferVisibleSign', { fg = p.muted }) - h('BufferVisibleTarget', { fg = p.gold }) - - -- lewis6991/gitsigns.nvim - h('GitSignsAdd', { fg = groups.git_add, bg = groups.background }) - h('GitSignsChange', { fg = groups.git_change, bg = groups.background }) - h('GitSignsDelete', { fg = groups.git_delete, bg = groups.background }) - h('SignAdd', { link = 'GitSignsAdd' }) - h('SignChange', { link = 'GitSignsChange' }) - h('SignDelete', { link = 'GitSignsDelete' }) - - -- mvllow/modes.nvim - h('ModesCopy', { bg = p.gold }) - h('ModesDelete', { bg = p.love }) - h('ModesInsert', { bg = p.foam }) - h('ModesVisual', { bg = p.iris }) - - -- kyazdani42/nvim-tree.lua - h('NvimTreeEmptyFolderName', { fg = p.muted }) - h('NvimTreeFileDeleted', { fg = p.love }) - h('NvimTreeFileDirty', { fg = p.rose }) - h('NvimTreeFileMerge', { fg = p.iris }) - h('NvimTreeFileNew', { fg = p.foam }) - h('NvimTreeFileRenamed', { fg = p.pine }) - h('NvimTreeFileStaged', { fg = p.iris }) - h('NvimTreeFolderIcon', { fg = p.subtle }) - h('NvimTreeFolderName', { fg = p.foam }) - h('NvimTreeGitDeleted', { fg = groups.git_delete }) - h('NvimTreeGitDirty', { fg = groups.git_dirty }) - h('NvimTreeGitIgnored', { fg = groups.git_ignore }) - h('NvimTreeGitMerge', { fg = groups.git_merge }) - h('NvimTreeGitNew', { fg = groups.git_add }) - h('NvimTreeGitRenamed', { fg = groups.git_rename }) - h('NvimTreeGitStaged', { fg = groups.git_stage }) - h('NvimTreeImageFile', { fg = p.text }) - h('NvimTreeNormal', { fg = p.text }) - h('NvimTreeOpenedFile', { fg = p.text, bg = p.highlight_med }) - h('NvimTreeOpenedFolderName', { link = 'NvimTreeFolderName' }) - h('NvimTreeRootFolder', { fg = p.iris }) - h('NvimTreeSpecialFile', { link = 'NvimTreeNormal' }) - h('NvimTreeWindowPicker', { fg = p.love, bg = p.love, blend = 10 }) - - -- nvim-neo-tree/neo-tree.nvim - h('NeoTreeTitleBar', { fg = p.surface, bg = p.pine }) - h('NeoTreeGitAdded', { fg = p.foam }) - h('NeoTreeGitModified', { fg = p.rose }) - h('NeoTreeGitDeleted', { fg = p.love }) - h('NeoTreeGitRenamed', { fg = p.pine }) - h('NeoTreeGitIgnored', { fg = p.muted }) - h('NeoTreeGitUntracked', { fg = p.gold }) - h('NeoTreeGitConflict', { fg = p.iris }) - - -- folke/which-key.nvim - h('WhichKey', { fg = p.iris }) - h('WhichKeyGroup', { fg = p.foam }) - h('WhichKeySeparator', { fg = p.subtle }) - h('WhichKeyDesc', { fg = p.gold }) - h('WhichKeyFloat', { bg = maybe.surface }) - h('WhichKeyValue', { fg = p.rose }) - - -- luka-reineke/indent-blankline.nvim - h('IndentBlanklineChar', { fg = p.muted, nocombine = true }) - h('IndentBlanklineSpaceChar', { fg = p.muted, nocombine = true }) - h('IndentBlanklineSpaceCharBlankline', { fg = p.muted, nocombine = true }) - - -- hrsh7th/nvim-cmp - h('CmpItemAbbr', { fg = p.subtle }) - h('CmpItemAbbrDeprecated', { fg = p.subtle, strikethrough = true }) - h('CmpItemAbbrMatch', { fg = p.text, bold = true }) - h('CmpItemAbbrMatchFuzzy', { fg = p.text, bold = true }) - h('CmpItemKind', { fg = p.subtle }) - h('CmpItemKindClass', { fg = p.pine }) - h('CmpItemKindFunction', { fg = p.rose }) - h('CmpItemKindInterface', { fg = p.foam }) - h('CmpItemKindMethod', { fg = p.iris }) - h('CmpItemKindSnippet', { fg = p.gold }) - h('CmpItemKindVariable', { fg = p.text }) - - -- TimUntersberger/neogit - h('NeogitDiffAddHighlight', { fg = p.foam, bg = p.highlight_med }) - h('NeogitDiffContextHighlight', { bg = p.highlight_low }) - h('NeogitDiffDeleteHighlight', { fg = p.love, bg = p.highlight_med }) - h('NeogitHunkHeader', { bg = p.highlight_low }) - h('NeogitHunkHeaderHighlight', { bg = p.highlight_low }) - - -- vimwiki/vimwiki - h('VimwikiHR', { fg = p.subtle }) - h('VimwikiHeader1', { fg = groups.headings.h1, bold = true }) - h('VimwikiHeader2', { fg = groups.headings.h2, bold = true }) - h('VimwikiHeader3', { fg = groups.headings.h3, bold = true }) - h('VimwikiHeader4', { fg = groups.headings.h4, bold = true }) - h('VimwikiHeader5', { fg = groups.headings.h5, bold = true }) - h('VimwikiHeader6', { fg = groups.headings.h6, bold = true }) - h('VimwikiHeaderChar', { fg = p.pine }) - h('VimwikiLink', { fg = groups.link, underline = true }) - h('VimwikiList', { fg = p.iris }) - h('VimwikiNoExistsLink', { fg = p.love }) - - -- nvim-neorg/neorg - h('NeorgHeading1Prefix', { fg = groups.headings.h1, bold = true }) - h('NeorgHeading1Title', { link = 'NeorgHeading1Prefix' }) - h('NeorgHeading2Prefix', { fg = groups.headings.h2, bold = true }) - h('NeorgHeading2Title', { link = 'NeorgHeading2Prefix' }) - h('NeorgHeading3Prefix', { fg = groups.headings.h3, bold = true }) - h('NeorgHeading3Title', { link = 'NeorgHeading3Prefix' }) - h('NeorgHeading4Prefix', { fg = groups.headings.h4, bold = true }) - h('NeorgHeading4Title', { link = 'NeorgHeading4Prefix' }) - h('NeorgHeading5Prefix', { fg = groups.headings.h5, bold = true }) - h('NeorgHeading5Title', { link = 'NeorgHeading5Prefix' }) - h('NeorgHeading6Prefix', { fg = groups.headings.h6, bold = true }) - h('NeorgHeading6Title', { link = 'NeorgHeading6Prefix' }) - h('NeorgMarkerTitle', { fg = p.text, bold = true }) - - -- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim) - h('DefinitionCount', { fg = p.rose }) - h('DefinitionIcon', { fg = p.rose }) - h('DefintionPreviewTitle', { fg = p.rose, bold = true }) - h('LspFloatWinBorder', { fg = groups.border }) - h('LspFloatWinNormal', { bg = maybe.surface }) - h('LspSagaAutoPreview', { fg = p.subtle }) - h('LspSagaCodeActionBorder', { fg = groups.border }) - h('LspSagaCodeActionContent', { fg = p.foam }) - h('LspSagaCodeActionTitle', { fg = p.gold, bold = true }) - h('LspSagaCodeActionTruncateLine', { link = 'LspSagaCodeActionBorder' }) - h('LspSagaDefPreviewBorder', { fg = groups.border }) - h('LspSagaDiagnosticBorder', { fg = groups.border }) - h('LspSagaDiagnosticHeader', { fg = p.gold, bold = true }) - h('LspSagaDiagnosticTruncateLine', { link = 'LspSagaDiagnosticBorder' }) - h('LspSagaDocTruncateLine', { link = 'LspSagaHoverBorder' }) - h('LspSagaFinderSelection', { fg = p.gold }) - h('LspSagaHoverBorder', { fg = groups.border }) - h('LspSagaLspFinderBorder', { fg = groups.border }) - h('LspSagaRenameBorder', { fg = p.pine }) - h('LspSagaRenamePromptPrefix', { fg = p.love }) - h('LspSagaShTruncateLine', { link = 'LspSagaSignatureHelpBorder' }) - h('LspSagaSignatureHelpBorder', { fg = p.pine }) - h('ReferencesCount', { fg = p.rose }) - h('ReferencesIcon', { fg = p.rose }) - h('SagaShadow', { bg = p.overlay }) - h('TargetWord', { fg = p.iris }) - - -- ray-x/lsp_signature.nvim - h('LspSignatureActiveParameter', { bg = p.overlay }) - - -- rlane/pounce.nvim - h('PounceAccept', { fg = p.love, bg = p.highlight_high }) - h('PounceAcceptBest', { fg = p.base, bg = p.gold }) - h('PounceGap', { link = 'Search' }) - h('PounceMatch', { link = 'Search' }) - local float_background = options.dim_nc_background and (options.disable_float_background and groups.panel_nc or groups.panel) or maybe.surface - -- ggandor/leap.nvim - h('LeapMatch', { link = 'MatchParen' }) - h('LeapLabelPrimary', { link = 'IncSearch' }) - h('LeapLabelSecondary', { fg = p.base, bg = p.pine }) + M.defaults = { + ['ColorColumn'] = { bg = p.overlay }, + ['Conceal'] = { bg = p.none }, + ['CurSearch'] = { link = 'IncSearch' }, + ['Cursor'] = { fg = p.text, bg = p.highlight_high }, + ['CursorColumn'] = { bg = p.highlight_low }, + -- CursorIM = {}, + ['CursorLine'] = { bg = p.highlight_low }, + ['CursorLineNr'] = { fg = p.text }, + ['DarkenedPanel'] = { bg = maybe.surface }, + ['DarkenedStatusline'] = { bg = maybe.surface }, + ['DiffAdd'] = { bg = groups.git_add, blend = 20 }, - -- phaazon/hop.nvim - h('HopNextKey', { fg = p.love }) - h('HopNextKey1', { fg = p.foam }) - h('HopNextKey2', { fg = p.pine }) - h('HopUnmatched', { fg = p.highlight_high }) + ['DiffChange'] = { bg = p.overlay }, + ['DiffDelete'] = { bg = groups.git_delete, blend = 20 }, + ['DiffText'] = { bg = groups.git_text, blend = 20 }, + ['diffAdded'] = { link = 'DiffAdd' }, + ['diffChanged'] = { link = 'DiffChange' }, + ['diffRemoved'] = { link = 'DiffDelete' }, + ['Directory'] = { fg = p.foam, bg = p.none }, + -- EndOfBuffer = {}, + ['ErrorMsg'] = { fg = p.love, bold = true }, + ['FloatBorder'] = { fg = groups.border, bg = maybe.surface }, + ['FloatTitle'] = { fg = p.muted }, + ['FoldColumn'] = { fg = p.muted }, + ['Folded'] = { fg = p.text, bg = maybe.surface }, + ['IncSearch'] = { fg = groups.background, bg = p.rose }, + ['LineNr'] = { fg = p.muted }, + ['MatchParen'] = { fg = p.text, bg = p.highlight_med }, + ['ModeMsg'] = { fg = p.subtle }, + ['MoreMsg'] = { fg = p.iris }, + ['NonText'] = { fg = p.muted }, + ['Normal'] = { fg = p.text, bg = maybe.base }, + ['NormalFloat'] = { fg = p.text, bg = maybe.surface }, + ['NormalNC'] = { fg = p.text, bg = maybe.dim_nc_background }, + ['NvimInternalError'] = { fg = '#ffffff', bg = p.love }, + ['Pmenu'] = { fg = p.subtle, bg = maybe.surface }, + ['PmenuSbar'] = { bg = p.highlight_low }, + ['PmenuSel'] = { fg = p.text, bg = p.overlay }, + ['PmenuThumb'] = { bg = p.highlight_med }, + ['Question'] = { fg = p.gold }, + -- QuickFixLine = {}, + -- RedrawDebugNormal = {} + ['RedrawDebugClear'] = { fg = '#ffffff', bg = p.gold }, + ['RedrawDebugComposed'] = { fg = '#ffffff', bg = p.pine }, + ['RedrawDebugRecompose'] = { fg = '#ffffff', bg = p.love }, + ['Search'] = { bg = p.highlight_med }, + ['SpecialKey'] = { fg = p.foam }, + ['SpellBad'] = { sp = p.subtle, undercurl = true }, + ['SpellCap'] = { sp = p.subtle, undercurl = true }, + ['SpellLocal'] = { sp = p.subtle, undercurl = true }, + ['SpellRare'] = { sp = p.subtle, undercurl = true }, + ['SignColumn'] = { + fg = p.text, + bg = (options.dim_nc_background and p.none) or maybe.base, + }, + ['StatusLine'] = { fg = p.subtle, bg = groups.panel }, + ['StatusLineNC'] = { fg = p.muted, bg = groups.panel_nc }, + ['StatusLineTerm'] = { link = 'StatusLine' }, + ['StatusLineTermNC'] = { link = 'StatusLineNC' }, + ['TabLine'] = { fg = p.subtle, bg = groups.panel }, + ['TabLineFill'] = { bg = groups.panel }, + ['TabLineSel'] = { fg = p.text, bg = p.overlay }, + ['Title'] = { fg = p.text }, + ['VertSplit'] = { fg = groups.border, bg = maybe.bold_vert_split }, + ['Visual'] = { bg = p.highlight_med }, + -- VisualNOS = {}, + ['WarningMsg'] = { fg = p.gold }, + -- Whitespace = {}, + ['WildMenu'] = { link = 'IncSearch' }, - -- nvim-telescope/telescope.nvim - h('TelescopeBorder', { fg = groups.border, bg = float_background }) - h('TelescopeMatching', { fg = p.rose }) - h('TelescopeNormal', { fg = p.subtle, bg = float_background }) - h('TelescopePromptNormal', { fg = p.text, bg = float_background }) - h('TelescopePromptPrefix', { fg = p.subtle }) - h('TelescopeSelection', { fg = p.text, bg = p.overlay }) - h('TelescopeSelectionCaret', { fg = p.rose, bg = p.overlay }) - h('TelescopeTitle', { fg = p.subtle }) + ['Boolean'] = { fg = p.rose }, + ['Character'] = { fg = p.gold }, + ['Comment'] = { fg = groups.comment, italic = maybe.italic }, + ['Conditional'] = { fg = p.pine }, + ['Constant'] = { fg = p.gold }, + ['Debug'] = { fg = p.rose }, + ['Define'] = { fg = p.iris }, + ['Delimiter'] = { fg = p.subtle }, + ['Error'] = { fg = p.love }, + ['Exception'] = { fg = p.pine }, + ['Float'] = { fg = p.gold }, + ['Function'] = { fg = p.rose }, + ['Identifier'] = { fg = p.rose }, + -- Ignore = {}, + ['Include'] = { fg = p.pine }, + ['Keyword'] = { fg = p.pine }, + ['Label'] = { fg = p.foam }, + ['Macro'] = { fg = p.iris }, + ['Number'] = { fg = p.gold }, + ['Operator'] = { fg = p.subtle }, + ['PreCondit'] = { fg = p.iris }, + ['PreProc'] = { fg = p.iris }, + ['Repeat'] = { fg = p.pine }, + ['Special'] = { fg = p.rose }, + ['SpecialChar'] = { fg = p.rose }, + ['SpecialComment'] = { fg = p.iris }, + ['Statement'] = { fg = p.pine }, + ['StorageClass'] = { fg = p.foam }, + ['String'] = { fg = p.gold }, + ['Structure'] = { fg = p.foam }, + ['Tag'] = { fg = p.foam }, + ['Todo'] = { fg = p.iris }, + ['Type'] = { fg = p.foam }, + ['Typedef'] = { link = 'Type' }, + ['Underlined'] = { underline = true }, - -- rcarriga/nvim-notify - h('NotifyINFOBorder', { fg = p.foam }) - h('NotifyINFOTitle', { link = 'NotifyINFOBorder' }) - h('NotifyINFOIcon', { link = 'NotifyINFOBorder' }) - h('NotifyWARNBorder', { fg = p.gold }) - h('NotifyWARNTitle', { link = 'NotifyWARNBorder' }) - h('NotifyWARNIcon', { link = 'NotifyWARNBorder' }) - h('NotifyDEBUGBorder', { fg = p.muted }) - h('NotifyDEBUGTitle', { link = 'NotifyDEBUGBorder' }) - h('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' }) - h('NotifyTRACEBorder', { fg = p.iris }) - h('NotifyTRACETitle', { link = 'NotifyTRACEBorder' }) - h('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' }) - h('NotifyERRORBorder', { fg = p.love }) - h('NotifyERRORTitle', { link = 'NotifyERRORBorder' }) - h('NotifyERRORIcon', { link = 'NotifyERRORBorder' }) + ['htmlArg'] = { fg = p.iris }, + ['htmlBold'] = { bold = true }, + ['htmlEndTag'] = { fg = p.subtle }, + ['htmlH1'] = { fg = groups.headings.h1, bold = true }, + ['htmlH2'] = { fg = groups.headings.h2, bold = true }, + ['htmlH3'] = { fg = groups.headings.h3, bold = true }, + ['htmlH4'] = { fg = groups.headings.h4, bold = true }, + ['htmlH5'] = { fg = groups.headings.h5, bold = true }, + ['htmlItalic'] = { italic = maybe.italic }, + ['htmlLink'] = { fg = groups.link }, + ['htmlTag'] = { fg = p.subtle }, + ['htmlTagN'] = { fg = p.text }, + ['htmlTagName'] = { fg = p.foam }, - -- rcarriga/nvim-dap-ui - h('DapUIVariable', { link = 'Normal' }) - h('DapUIValue', { link = 'Normal' }) - h('DapUIFrameName', { link = 'Normal' }) - h('DapUIThread', { fg = p.gold }) - h('DapUIWatchesValue', { link = 'DapUIThread' }) - h('DapUIBreakpointsInfo', { link = 'DapUIThread' }) - h('DapUIBreakpointsCurrentLine', { fg = p.gold, bold = true }) - h('DapUIWatchesEmpty', { fg = p.love }) - h('DapUIWatchesError', { link = 'DapUIWatchesEmpty' }) - h('DapUIBreakpointsDisabledLine', { fg = p.muted }) - h('DapUISource', { fg = p.iris }) - h('DapUIBreakpointsPath', { fg = p.foam }) - h('DapUIScope', { link = 'DapUIBreakpointsPath' }) - h('DapUILineNumber', { link = 'DapUIBreakpointsPath' }) - h('DapUIBreakpointsLine', { link = 'DapUIBreakpointsPath' }) - h('DapUIFloatBorder', { link = 'DapUIBreakpointsPath' }) - h('DapUIStoppedThread', { link = 'DapUIBreakpointsPath' }) - h('DapUIDecoration', { link = 'DapUIBreakpointsPath' }) - h('DapUIModifiedValue', { fg = p.foam, bold = true }) + ['markdownDelimiter'] = { fg = p.subtle }, + ['markdownH1'] = { fg = groups.headings.h1, bold = true }, + ['markdownH1Delimiter'] = { link = 'markdownH1' }, + ['markdownH2'] = { fg = groups.headings.h2, bold = true }, + ['markdownH2Delimiter'] = { link = 'markdownH2' }, + ['markdownH3'] = { fg = groups.headings.h3, bold = true }, + ['markdownH3Delimiter'] = { link = 'markdownH3' }, + ['markdownH4'] = { fg = groups.headings.h4, bold = true }, + ['markdownH4Delimiter'] = { link = 'markdownH4' }, + ['markdownH5'] = { fg = groups.headings.h5, bold = true }, + ['markdownH5Delimiter'] = { link = 'markdownH5' }, + ['markdownH6'] = { fg = groups.headings.h6, bold = true }, + ['markdownH6Delimiter'] = { link = 'markdownH6' }, + ['markdownLinkText'] = { fg = groups.link, sp = groups.link, underline = true }, + ['markdownUrl'] = { link = 'markdownLinkText' }, - -- glepnir/dashboard-nvim - h('DashboardShortcut', { fg = p.love }) - h('DashboardHeader', { fg = p.pine }) - h('DashboardCenter', { fg = p.gold }) - h('DashboardFooter', { fg = p.iris }) + ['mkdCode'] = { fg = p.foam, italic = maybe.italic }, + ['mkdCodeDelimiter'] = { fg = p.rose }, + ['mkdCodeEnd'] = { fg = p.foam }, + ['mkdCodeStart'] = { fg = p.foam }, + ['mkdFootnotes'] = { fg = p.foam }, + ['mkdID'] = { fg = p.foam, underline = true }, + ['mkdInlineURL'] = { fg = groups.link, underline = true }, + ['mkdLink'] = { link = 'mkdInlineURL' }, + ['mkdLinkDef'] = { link = 'mkdInlineURL' }, + ['mkdListItemLine'] = { fg = p.text }, + ['mkdRule'] = { fg = p.subtle }, + ['mkdURL'] = { link = 'mkdInlineURL' }, - -- SmiteshP/nvim-navic - h('NavicIconsFile', { fg = p.base }) - h('NavicIconsModule', { fg = p.rose }) - h('NavicIconsNamespace', { fg = p.base }) - h('NavicIconsPackage', { fg = p.base }) - h('NavicIconsClass', { fg = p.foam }) - h('NavicIconsMethod', { fg = p.iris }) - h('NavicIconsProperty', { fg = p.foam }) - h('NavicIconsField', { fg = p.foam }) - h('NavicIconsConstructor', { fg = p.gold }) - h('NavicIconsEnum', { fg = p.gold }) - h('NavicIconsInterface', { fg = p.foam }) - h('NavicIconsFunction', { fg = p.pine }) - h('NavicIconsVariable', { fg = p.text }) - h('NavicIconsConstant', { fg = p.gold }) - h('NavicIconsString', { fg = p.gold }) - h('NavicIconsNumber', { fg = p.gold }) - h('NavicIconsBoolean', { fg = p.rose }) - h('NavicIconsArray', { fg = p.gold }) - h('NavicIconsObject', { fg = p.gold }) - h('NavicIconsKey', { fg = p.iris }) - h('NavicIconsKeyword', { fg = p.pine }) - h('NavicIconsNull', { fg = p.love }) - h('NavicIconsEnumMember', { fg = p.foam }) - h('NavicIconsStruct', { fg = p.foam }) - h('NavicIconsEvent', { fg = p.gold }) - h('NavicIconsOperator', { fg = p.subtle }) - h('NavicIconsTypeParameter', { fg = p.foam }) - h('NavicText', { fg = p.subtle }) - h('NavicSeparator', { fg = p.subtle }) + ['DiagnosticError'] = { fg = groups.error }, + ['DiagnosticHint'] = { fg = groups.hint }, + ['DiagnosticInfo'] = { fg = groups.info }, + ['DiagnosticWarn'] = { fg = groups.warn }, + ['DiagnosticDefaultError'] = { fg = groups.error }, + ['DiagnosticDefaultHint'] = { fg = groups.hint }, + ['DiagnosticDefaultInfo'] = { fg = groups.info }, + ['DiagnosticDefaultWarn'] = { fg = groups.warn }, + ['DiagnosticFloatingError'] = { fg = groups.error }, + ['DiagnosticFloatingHint'] = { fg = groups.hint }, + ['DiagnosticFloatingInfo'] = { fg = groups.info }, + ['DiagnosticFloatingWarn'] = { fg = groups.warn }, + ['DiagnosticSignError'] = { fg = groups.error }, + ['DiagnosticSignHint'] = { fg = groups.hint }, + ['DiagnosticSignInfo'] = { fg = groups.info }, + ['DiagnosticSignWarn'] = { fg = groups.warn }, + ['DiagnosticStatusLineError'] = { fg = groups.error, bg = groups.panel }, + ['DiagnosticStatusLineHint'] = { fg = groups.hint, bg = groups.panel }, + ['DiagnosticStatusLineInfo'] = { fg = groups.info, bg = groups.panel }, + ['DiagnosticStatusLineWarn'] = { fg = groups.warn, bg = groups.panel }, + ['DiagnosticUnderlineError'] = { sp = groups.error, undercurl = true }, + ['DiagnosticUnderlineHint'] = { sp = groups.hint, undercurl = true }, + ['DiagnosticUnderlineInfo'] = { sp = groups.info, undercurl = true }, + ['DiagnosticUnderlineWarn'] = { sp = groups.warn, undercurl = true }, + ['DiagnosticVirtualTextError'] = { fg = groups.error }, + ['DiagnosticVirtualTextHint'] = { fg = groups.hint }, + ['DiagnosticVirtualTextInfo'] = { fg = groups.info }, + ['DiagnosticVirtualTextWarn'] = { fg = groups.warn }, - -- folke/noice.nvim - h('NoiceCursor', { fg = p.highlight_high, bg = p.text }) + -- healthcheck + ['healthError'] = { fg = groups.error }, + ['healthSuccess'] = { fg = groups.info }, + ['healthWarning'] = { fg = groups.warn }, - -- echasnovski/mini.indentscope - h('MiniIndentscopeSymbol', { fg = p.highlight_med }) - h('MiniIndentscopeSymbolOff', { fg = p.highlight_med }) + -- Treesitter + ['@boolean'] = { link = 'Boolean' }, + ['@character'] = { link = 'Character' }, + ['@character.special'] = { link = '@character' }, + ['@class'] = { fg = p.foam }, + ['@comment'] = { link = 'Comment' }, + ['@conditional'] = { link = 'Conditional' }, + ['@constant'] = { link = 'Constant' }, + ['@constant.builtin'] = { fg = p.love }, + ['@constant.macro'] = { link = '@constant' }, + ['@constructor'] = { fg = p.foam }, + ['@field'] = { fg = p.foam }, + ['@function'] = { link = 'Function' }, + ['@function.builtin'] = { fg = p.love }, + ['@function.macro'] = { link = '@function' }, + ['@include'] = { link = 'Include' }, + ['@interface'] = { fg = p.foam }, + ['@keyword'] = { link = 'Keyword' }, + ['@keyword.operator'] = { fg = p.subtle }, + ['@label'] = { link = 'Label' }, + ['@macro'] = { link = 'Macro' }, + ['@method'] = { fg = p.rose }, + ['@number'] = { link = 'Number' }, + ['@operator'] = { link = 'Operator' }, + ['@parameter'] = { fg = p.iris, italic = maybe.italic }, + ['@preproc'] = { link = 'PreProc' }, + ['@property'] = { fg = p.foam, italic = maybe.italic }, + ['@punctuation'] = { fg = groups.punctuation }, + ['@punctuation.bracket'] = { link = '@punctuation' }, + ['@punctuation.delimiter'] = { link = '@punctuation' }, + ['@punctuation.special'] = { link = '@punctuation' }, + ['@regexp'] = { link = 'String' }, + ['@repeat'] = { link = 'Repeat' }, + ['@storageclass'] = { link = 'StorageClass' }, + ['@string'] = { link = 'String' }, + ['@string.escape'] = { fg = p.pine }, + ['@string.special'] = { link = '@string' }, + ['@symbol'] = { link = 'Identifier' }, + ['@tag'] = { link = 'Tag' }, + ['@tag.attribute'] = { fg = p.iris }, + ['@tag.delimiter'] = { fg = p.subtle }, + ['@text'] = { fg = p.text }, + ['@text.strong'] = { bold = true }, + ['@text.emphasis'] = { italic = true }, + ['@text.underline'] = { underline = true }, + ['@text.strike'] = { strikethrough = true }, + ['@text.math'] = { link = 'Special' }, + ['@text.environment'] = { link = 'Macro' }, + ['@text.environment.name'] = { link = 'Type' }, + ['@text.title'] = { link = 'Title' }, + ['@text.uri'] = { fg = groups.link }, + ['@text.note'] = { link = 'SpecialComment' }, + ['@text.warning'] = { fg = groups.warn }, + ['@text.danger'] = { fg = groups.error }, + ['@todo'] = { link = 'Todo' }, + ['@type'] = { link = 'Type' }, + ['@variable'] = { fg = p.text, italic = maybe.italic }, + ['@variable.builtin'] = { fg = p.love }, + ['@namespace'] = { link = '@include' }, - -- goolord/alpha-nvim - h('AlphaHeader', { fg = p.pine }) - h('AlphaButtons', { fg = p.foam }) - h('AlphaShortcut', { fg = p.rose }) - h('AlphaFooter', { fg = p.gold }) + -- LSP Semantic Token Groups + ['@lsp.type.comment'] = {}, + ['@lsp.type.enum'] = { link = '@type' }, + ['@lsp.type.keyword'] = { link = '@keyword' }, + ['@lsp.type.interface'] = { link = '@interface' }, + ['@lsp.type.namespace'] = { link = '@namespace' }, + ['@lsp.type.parameter'] = { link = '@parameter' }, + ['@lsp.type.property'] = { link = '@property' }, + ['@lsp.type.variable'] = {}, -- use treesitter styles for regular variables + ['@lsp.typemod.function.defaultLibrary'] = { link = 'Special' }, + ['@lsp.typemod.variable.defaultLibrary'] = { link = '@variable.builtin' }, + + -- LSP Injected Groups + ['@lsp.typemod.operator.injected'] = { link = '@operator' }, + ['@lsp.typemod.string.injected'] = { link = '@string' }, + ['@lsp.typemod.variable.injected'] = { link = '@variable' }, + + -- nvim-treesitter Markdown Headings + ['@text.title.1.markdown'] = { link = 'markdownH1' }, + ['@text.title.1.marker.markdown'] = { link = 'markdownH1Delimiter' }, + ['@text.title.2.markdown'] = { link = 'markdownH2' }, + ['@text.title.2.marker.markdown'] = { link = 'markdownH2Delimiter' }, + ['@text.title.3.markdown'] = { link = 'markdownH3' }, + ['@text.title.3.marker.markdown'] = { link = 'markdownH3Delimiter' }, + ['@text.title.4.markdown'] = { link = 'markdownH4' }, + ['@text.title.4.marker.markdown'] = { link = 'markdownH4Delimiter' }, + ['@text.title.5.markdown'] = { link = 'markdownH5' }, + ['@text.title.5.marker.markdown'] = { link = 'markdownH5Delimiter' }, + ['@text.title.6.markdown'] = { link = 'markdownH6' }, + ['@text.title.6.marker.markdown'] = { link = 'markdownH6Delimiter' }, + + -- vim.lsp.buf.document_highlight() + ['LspReferenceText'] = { bg = p.highlight_med }, + ['LspReferenceRead'] = { bg = p.highlight_med }, + ['LspReferenceWrite'] = { bg = p.highlight_med }, + + -- lsp-highlight-codelens + ['LspCodeLens'] = { fg = p.subtle }, -- virtual text of code len + ['LspCodeLensSeparator'] = { fg = p.highlight_high }, -- separator between two or more code len + + -- romgrk/barbar.nvim + ['BufferCurrent'] = { fg = p.text, bg = p.overlay }, + ['BufferCurrentIndex'] = { fg = p.text, bg = p.overlay }, + ['BufferCurrentMod'] = { fg = p.foam, bg = p.overlay }, + ['BufferCurrentSign'] = { fg = p.subtle, bg = p.overlay }, + ['BufferCurrentTarget'] = { fg = p.gold, bg = p.overlay }, + ['BufferInactive'] = { fg = p.subtle }, + ['BufferInactiveIndex'] = { fg = p.subtle }, + ['BufferInactiveMod'] = { fg = p.foam }, + ['BufferInactiveSign'] = { fg = p.muted }, + ['BufferInactiveTarget'] = { fg = p.gold }, + ['BufferTabpageFill'] = { fg = groups.background, bg = groups.background }, + ['BufferVisible'] = { fg = p.subtle }, + ['BufferVisibleIndex'] = { fg = p.subtle }, + ['BufferVisibleMod'] = { fg = p.foam }, + ['BufferVisibleSign'] = { fg = p.muted }, + ['BufferVisibleTarget'] = { fg = p.gold }, + + -- lewis6991/gitsigns.nvim + ['GitSignsAdd'] = { fg = groups.git_add, bg = groups.background }, + ['GitSignsChange'] = { fg = groups.git_change, bg = groups.background }, + ['GitSignsDelete'] = { fg = groups.git_delete, bg = groups.background }, + ['SignAdd'] = { link = 'GitSignsAdd' }, + ['SignChange'] = { link = 'GitSignsChange' }, + ['SignDelete'] = { link = 'GitSignsDelete' }, + + -- mvllow/modes.nvim + ['ModesCopy'] = { bg = p.gold }, + ['ModesDelete'] = { bg = p.love }, + ['ModesInsert'] = { bg = p.foam }, + ['ModesVisual'] = { bg = p.iris }, + + -- kyazdani42/nvim-tree.lua + ['NvimTreeEmptyFolderName'] = { fg = p.muted }, + ['NvimTreeFileDeleted'] = { fg = p.love }, + ['NvimTreeFileDirty'] = { fg = p.rose }, + ['NvimTreeFileMerge'] = { fg = p.iris }, + ['NvimTreeFileNew'] = { fg = p.foam }, + ['NvimTreeFileRenamed'] = { fg = p.pine }, + ['NvimTreeFileStaged'] = { fg = p.iris }, + ['NvimTreeFolderIcon'] = { fg = p.subtle }, + ['NvimTreeFolderName'] = { fg = p.foam }, + ['NvimTreeGitDeleted'] = { fg = groups.git_delete }, + ['NvimTreeGitDirty'] = { fg = groups.git_dirty }, + ['NvimTreeGitIgnored'] = { fg = groups.git_ignore }, + ['NvimTreeGitMerge'] = { fg = groups.git_merge }, + ['NvimTreeGitNew'] = { fg = groups.git_add }, + ['NvimTreeGitRenamed'] = { fg = groups.git_rename }, + ['NvimTreeGitStaged'] = { fg = groups.git_stage }, + ['NvimTreeImageFile'] = { fg = p.text }, + ['NvimTreeNormal'] = { fg = p.text }, + ['NvimTreeOpenedFile'] = { fg = p.text, bg = p.highlight_med }, + ['NvimTreeOpenedFolderName'] = { link = 'NvimTreeFolderName' }, + ['NvimTreeRootFolder'] = { fg = p.iris }, + ['NvimTreeSpecialFile'] = { link = 'NvimTreeNormal' }, + ['NvimTreeWindowPicker'] = { fg = p.love, bg = p.love, blend = 10 }, + + -- nvim-neo-tree/neo-tree.nvim + ['NeoTreeTitleBar'] = { fg = p.surface, bg = p.pine }, + ['NeoTreeGitAdded'] = { fg = p.foam }, + ['NeoTreeGitModified'] = { fg = p.rose }, + ['NeoTreeGitDeleted'] = { fg = p.love }, + ['NeoTreeGitRenamed'] = { fg = p.pine }, + ['NeoTreeGitIgnored'] = { fg = p.muted }, + ['NeoTreeGitUntracked'] = { fg = p.gold }, + ['NeoTreeGitConflict'] = { fg = p.iris }, + + -- folke/which-key.nvim + ['WhichKey'] = { fg = p.iris }, + ['WhichKeyGroup'] = { fg = p.foam }, + ['WhichKeySeparator'] = { fg = p.subtle }, + ['WhichKeyDesc'] = { fg = p.gold }, + ['WhichKeyFloat'] = { bg = maybe.surface }, + ['WhichKeyValue'] = { fg = p.rose }, + + -- luka-reineke/indent-blankline.nvim + ['IndentBlanklineChar'] = { fg = p.muted, nocombine = true }, + ['IndentBlanklineSpaceChar'] = { fg = p.muted, nocombine = true }, + ['IndentBlanklineSpaceCharBlankline'] = { fg = p.muted, nocombine = true }, + + -- hrsh7th/nvim-cmp + ['CmpItemAbbr'] = { fg = p.subtle }, + ['CmpItemAbbrDeprecated'] = { fg = p.subtle, strikethrough = true }, + ['CmpItemAbbrMatch'] = { fg = p.text, bold = true }, + ['CmpItemAbbrMatchFuzzy'] = { fg = p.text, bold = true }, + ['CmpItemKind'] = { fg = p.subtle }, + ['CmpItemKindClass'] = { fg = p.pine }, + ['CmpItemKindFunction'] = { fg = p.rose }, + ['CmpItemKindInterface'] = { fg = p.foam }, + ['CmpItemKindMethod'] = { fg = p.iris }, + ['CmpItemKindSnippet'] = { fg = p.gold }, + ['CmpItemKindVariable'] = { fg = p.text }, + + -- TimUntersberger/neogit + ['NeogitDiffAddHighlight'] = { fg = p.foam, bg = p.highlight_med }, + ['NeogitDiffContextHighlight'] = { bg = p.highlight_low }, + ['NeogitDiffDeleteHighlight'] = { fg = p.love, bg = p.highlight_med }, + ['NeogitHunkHeader'] = { bg = p.highlight_low }, + ['NeogitHunkHeaderHighlight'] = { bg = p.highlight_low }, + + -- vimwiki/vimwiki + ['VimwikiHR'] = { fg = p.subtle }, + ['VimwikiHeader1'] = { fg = groups.headings.h1, bold = true }, + ['VimwikiHeader2'] = { fg = groups.headings.h2, bold = true }, + ['VimwikiHeader3'] = { fg = groups.headings.h3, bold = true }, + ['VimwikiHeader4'] = { fg = groups.headings.h4, bold = true }, + ['VimwikiHeader5'] = { fg = groups.headings.h5, bold = true }, + ['VimwikiHeader6'] = { fg = groups.headings.h6, bold = true }, + ['VimwikiHeaderChar'] = { fg = p.pine }, + ['VimwikiLink'] = { fg = groups.link, underline = true }, + ['VimwikiList'] = { fg = p.iris }, + ['VimwikiNoExistsLink'] = { fg = p.love }, + + -- nvim-neorg/neorg + ['NeorgHeading1Prefix'] = { fg = groups.headings.h1, bold = true }, + ['NeorgHeading1Title'] = { link = 'NeorgHeading1Prefix' }, + ['NeorgHeading2Prefix'] = { fg = groups.headings.h2, bold = true }, + ['NeorgHeading2Title'] = { link = 'NeorgHeading2Prefix' }, + ['NeorgHeading3Prefix'] = { fg = groups.headings.h3, bold = true }, + ['NeorgHeading3Title'] = { link = 'NeorgHeading3Prefix' }, + ['NeorgHeading4Prefix'] = { fg = groups.headings.h4, bold = true }, + ['NeorgHeading4Title'] = { link = 'NeorgHeading4Prefix' }, + ['NeorgHeading5Prefix'] = { fg = groups.headings.h5, bold = true }, + ['NeorgHeading5Title'] = { link = 'NeorgHeading5Prefix' }, + ['NeorgHeading6Prefix'] = { fg = groups.headings.h6, bold = true }, + ['NeorgHeading6Title'] = { link = 'NeorgHeading6Prefix' }, + ['NeorgMarkerTitle'] = { fg = p.text, bold = true }, + + -- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim) + ['DefinitionCount'] = { fg = p.rose }, + ['DefinitionIcon'] = { fg = p.rose }, + ['DefintionPreviewTitle'] = { fg = p.rose, bold = true }, + ['LspFloatWinBorder'] = { fg = groups.border }, + ['LspFloatWinNormal'] = { bg = maybe.surface }, + ['LspSagaAutoPreview'] = { fg = p.subtle }, + ['LspSagaCodeActionBorder'] = { fg = groups.border }, + ['LspSagaCodeActionContent'] = { fg = p.foam }, + ['LspSagaCodeActionTitle'] = { fg = p.gold, bold = true }, + ['LspSagaCodeActionTruncateLine'] = { link = 'LspSagaCodeActionBorder' }, + ['LspSagaDefPreviewBorder'] = { fg = groups.border }, + ['LspSagaDiagnosticBorder'] = { fg = groups.border }, + ['LspSagaDiagnosticHeader'] = { fg = p.gold, bold = true }, + ['LspSagaDiagnosticTruncateLine'] = { link = 'LspSagaDiagnosticBorder' }, + ['LspSagaDocTruncateLine'] = { link = 'LspSagaHoverBorder' }, + ['LspSagaFinderSelection'] = { fg = p.gold }, + ['LspSagaHoverBorder'] = { fg = groups.border }, + ['LspSagaLspFinderBorder'] = { fg = groups.border }, + ['LspSagaRenameBorder'] = { fg = p.pine }, + ['LspSagaRenamePromptPrefix'] = { fg = p.love }, + ['LspSagaShTruncateLine'] = { link = 'LspSagaSignatureHelpBorder' }, + ['LspSagaSignatureHelpBorder'] = { fg = p.pine }, + ['ReferencesCount'] = { fg = p.rose }, + ['ReferencesIcon'] = { fg = p.rose }, + ['SagaShadow'] = { bg = p.overlay }, + ['TargetWord'] = { fg = p.iris }, + + -- ray-x/lsp_signature.nvim + ['LspSignatureActiveParameter'] = { bg = p.overlay }, + + -- rlane/pounce.nvim + ['PounceAccept'] = { fg = p.love, bg = p.highlight_high }, + ['PounceAcceptBest'] = { fg = p.base, bg = p.gold }, + ['PounceGap'] = { link = 'Search' }, + ['PounceMatch'] = { link = 'Search' }, + + -- ggandor/leap.nvim + ['LeapMatch'] = { link = 'MatchParen' }, + ['LeapLabelPrimary'] = { link = 'IncSearch' }, + ['LeapLabelSecondary'] = { fg = p.base, bg = p.pine }, + + -- phaazon/hop.nvim + ['HopNextKey'] = { fg = p.love }, + ['HopNextKey1'] = { fg = p.foam }, + ['HopNextKey2'] = { fg = p.pine }, + ['HopUnmatched'] = { fg = p.highlight_high }, + + -- nvim-telescope/telescope.nvim + ['TelescopeBorder'] = { fg = groups.border, bg = float_background }, + ['TelescopeMatching'] = { fg = p.rose }, + ['TelescopeNormal'] = { fg = p.subtle, bg = float_background }, + ['TelescopePromptNormal'] = { fg = p.text, bg = float_background }, + ['TelescopePromptPrefix'] = { fg = p.subtle }, + ['TelescopeSelection'] = { fg = p.text, bg = p.overlay }, + ['TelescopeSelectionCaret'] = { fg = p.rose, bg = p.overlay }, + ['TelescopeTitle'] = { fg = p.subtle }, + + -- rcarriga/nvim-notify + ['NotifyINFOBorder'] = { fg = p.foam }, + ['NotifyINFOTitle'] = { link = 'NotifyINFOBorder' }, + ['NotifyINFOIcon'] = { link = 'NotifyINFOBorder' }, + ['NotifyWARNBorder'] = { fg = p.gold }, + ['NotifyWARNTitle'] = { link = 'NotifyWARNBorder' }, + ['NotifyWARNIcon'] = { link = 'NotifyWARNBorder' }, + ['NotifyDEBUGBorder'] = { fg = p.muted }, + ['NotifyDEBUGTitle'] = { link = 'NotifyDEBUGBorder' }, + ['NotifyDEBUGIcon'] = { link = 'NotifyDEBUGBorder' }, + ['NotifyTRACEBorder'] = { fg = p.iris }, + ['NotifyTRACETitle'] = { link = 'NotifyTRACEBorder' }, + ['NotifyTRACEIcon'] = { link = 'NotifyTRACEBorder' }, + ['NotifyERRORBorder'] = { fg = p.love }, + ['NotifyERRORTitle'] = { link = 'NotifyERRORBorder' }, + ['NotifyERRORIcon'] = { link = 'NotifyERRORBorder' }, + + -- rcarriga/nvim-dap-ui + ['DapUIVariable'] = { link = 'Normal' }, + ['DapUIValue'] = { link = 'Normal' }, + ['DapUIFrameName'] = { link = 'Normal' }, + ['DapUIThread'] = { fg = p.gold }, + ['DapUIWatchesValue'] = { link = 'DapUIThread' }, + ['DapUIBreakpointsInfo'] = { link = 'DapUIThread' }, + ['DapUIBreakpointsCurrentLine'] = { fg = p.gold, bold = true }, + ['DapUIWatchesEmpty'] = { fg = p.love }, + ['DapUIWatchesError'] = { link = 'DapUIWatchesEmpty' }, + ['DapUIBreakpointsDisabledLine'] = { fg = p.muted }, + ['DapUISource'] = { fg = p.iris }, + ['DapUIBreakpointsPath'] = { fg = p.foam }, + ['DapUIScope'] = { link = 'DapUIBreakpointsPath' }, + ['DapUILineNumber'] = { link = 'DapUIBreakpointsPath' }, + ['DapUIBreakpointsLine'] = { link = 'DapUIBreakpointsPath' }, + ['DapUIFloatBorder'] = { link = 'DapUIBreakpointsPath' }, + ['DapUIStoppedThread'] = { link = 'DapUIBreakpointsPath' }, + ['DapUIDecoration'] = { link = 'DapUIBreakpointsPath' }, + ['DapUIModifiedValue'] = { fg = p.foam, bold = true }, + + -- glepnir/dashboard-nvim + ['DashboardShortcut'] = { fg = p.love }, + ['DashboardHeader'] = { fg = p.pine }, + ['DashboardCenter'] = { fg = p.gold }, + ['DashboardFooter'] = { fg = p.iris }, + + -- SmiteshP/nvim-navic + ['NavicIconsFile'] = { fg = p.base }, + ['NavicIconsModule'] = { fg = p.rose }, + ['NavicIconsNamespace'] = { fg = p.base }, + ['NavicIconsPackage'] = { fg = p.base }, + ['NavicIconsClass'] = { fg = p.foam }, + ['NavicIconsMethod'] = { fg = p.iris }, + ['NavicIconsProperty'] = { fg = p.foam }, + ['NavicIconsField'] = { fg = p.foam }, + ['NavicIconsConstructor'] = { fg = p.gold }, + ['NavicIconsEnum'] = { fg = p.gold }, + ['NavicIconsInterface'] = { fg = p.foam }, + ['NavicIconsFunction'] = { fg = p.pine }, + ['NavicIconsVariable'] = { fg = p.text }, + ['NavicIconsConstant'] = { fg = p.gold }, + ['NavicIconsString'] = { fg = p.gold }, + ['NavicIconsNumber'] = { fg = p.gold }, + ['NavicIconsBoolean'] = { fg = p.rose }, + ['NavicIconsArray'] = { fg = p.gold }, + ['NavicIconsObject'] = { fg = p.gold }, + ['NavicIconsKey'] = { fg = p.iris }, + ['NavicIconsKeyword'] = { fg = p.pine }, + ['NavicIconsNull'] = { fg = p.love }, + ['NavicIconsEnumMember'] = { fg = p.foam }, + ['NavicIconsStruct'] = { fg = p.foam }, + ['NavicIconsEvent'] = { fg = p.gold }, + ['NavicIconsOperator'] = { fg = p.subtle }, + ['NavicIconsTypeParameter'] = { fg = p.foam }, + ['NavicText'] = { fg = p.subtle }, + ['NavicSeparator'] = { fg = p.subtle }, + + -- folke/noice.nvim + ['NoiceCursor'] = { fg = p.highlight_high, bg = p.text }, + + -- echasnovski/mini.indentscope + ['MiniIndentscopeSymbol'] = { fg = p.highlight_med }, + ['MiniIndentscopeSymbolOff'] = { fg = p.highlight_med }, + + -- goolord/alpha-nvim + ['AlphaHeader'] = { fg = p.pine }, + ['AlphaButtons'] = { fg = p.foam }, + ['AlphaShortcut'] = { fg = p.rose }, + ['AlphaFooter'] = { fg = p.gold }, + } vim.g.terminal_color_0 = p.overlay -- black vim.g.terminal_color_8 = p.subtle -- bright black @@ -598,8 +597,21 @@ function M._load(options) vim.g.terminal_color_7 = p.text -- white vim.g.terminal_color_15 = p.text -- bright white - -- Set user highlights - for group, color in pairs(options.highlight_groups) do + -- Set users highlight_group customisations. + for group, opts in pairs(options.highlight_groups) do + local default_opts = M.defaults[group] + + if (opts.inherit == nil or opts.inherit) and default_opts ~= nil then -- On merge. + opts.inherit = nil -- Don't add this key to the highlight_group after merge. + M.defaults[group] = vim.tbl_extend('force', default_opts, opts) + else -- On overwrite. + opts.inherit = nil -- Don't add this key to the highlight_group. + M.defaults[group] = opts + end + end + + -- Set highlights. + for group, color in pairs(M.defaults) do h(group, color) end end diff --git a/readme.md b/readme.md index b1a4c84..621c14f 100644 --- a/readme.md +++ b/readme.md @@ -93,6 +93,10 @@ require('rose-pine').setup({ -- headings = 'subtle' }, + -- Whether or not highlight_groups optios should change only only update + -- the settings they touch or should reset the entire highlight_group. + respect_default_highlight_groups = true, + -- Change specific vim highlight groups -- https://github.com/rose-pine/neovim/wiki/Recipes highlight_groups = { From 4ac66839a5cd138f26a2a107b9dd233177260346 Mon Sep 17 00:00:00 2001 From: Asthestarsfalll <72954905+Asthestarsfalll@users.noreply.github.com> Date: Fri, 21 Jul 2023 16:09:29 +0800 Subject: [PATCH 44/47] feat: color for flash (#174) --- lua/rose-pine/theme.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua index e8dcd93..c702531 100644 --- a/lua/rose-pine/theme.lua +++ b/lua/rose-pine/theme.lua @@ -77,6 +77,7 @@ function M._load(options) fg = p.text, bg = (options.dim_nc_background and p.none) or maybe.base, }, + ['Substitute'] = { fg = p.base, bg = p.love }, ['StatusLine'] = { fg = p.subtle, bg = groups.panel }, ['StatusLineNC'] = { fg = p.muted, bg = groups.panel_nc }, ['StatusLineTerm'] = { link = 'StatusLine' }, From e10340767534b4988992de838d6c811db63b74db Mon Sep 17 00:00:00 2001 From: Tobias Sommer Date: Sat, 22 Jul 2023 16:31:03 +0200 Subject: [PATCH 45/47] docs: add `inherit` option (#175) * Remove the option, which is not longer implemented * Add an example for the inherit highlight config --- readme.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index 621c14f..443de41 100644 --- a/readme.md +++ b/readme.md @@ -93,10 +93,6 @@ require('rose-pine').setup({ -- headings = 'subtle' }, - -- Whether or not highlight_groups optios should change only only update - -- the settings they touch or should reset the entire highlight_group. - respect_default_highlight_groups = true, - -- Change specific vim highlight groups -- https://github.com/rose-pine/neovim/wiki/Recipes highlight_groups = { @@ -105,6 +101,11 @@ require('rose-pine').setup({ -- Blend colours against the "base" background CursorLine = { bg = 'foam', blend = 10 }, StatusLine = { fg = 'love', bg = 'love', blend = 10 }, + + -- By default each group adds to the existing config. + -- If you only want to set what is written in this config exactly, + -- you can set the inherit option: + Search = { bg = 'gold', inherit = false }, } }) From d93b6a6615364aeb13f88ad8054bd2e64659f8ac Mon Sep 17 00:00:00 2001 From: not Date: Fri, 28 Jul 2023 23:03:23 +0200 Subject: [PATCH 46/47] docs: update installation (#178) --- readme.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/readme.md b/readme.md index 443de41..8012087 100644 --- a/readme.md +++ b/readme.md @@ -11,27 +11,31 @@

-## Usage +## Install -> With [lazy.nvim](https://github.com/folke/lazy.nvim) +**[Paq](https://github.com/savq/paq-nvim)** + +```lua +require('paq')({ + { 'rose-pine/neovim', as = 'rose-pine' } +}) +``` + +**[lazy.nvim](https://github.com/folke/lazy.nvim)** ```lua require("lazy").setup({ - { 'rose-pine/neovim', name = 'rose-pine' } + { 'rose-pine/neovim', name = 'rose-pine' } }) - -vim.cmd('colorscheme rose-pine') ``` -> With [packer.nvim](https://github.com/wbthomason/packer.nvim) +**[packer.nvim](https://github.com/wbthomason/packer.nvim)** ```lua -use({ 'rose-pine/neovim', as = 'rose-pine' }) - -vim.cmd('colorscheme rose-pine') -``` - -_Supported plugins are listed in the [wiki](https://github.com/rose-pine/neovim/wiki#supported-plugins)_ +require('packer').startup(function(use) + use({ 'rose-pine/neovim', as = 'rose-pine' }) +end) +```∞ ## Gallery From e29002cbee4854a9c8c4b148d8a52fae3176070f Mon Sep 17 00:00:00 2001 From: not Date: Fri, 28 Jul 2023 23:04:08 +0200 Subject: [PATCH 47/47] docs: fix readme typo (#179) --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 8012087..1888d34 100644 --- a/readme.md +++ b/readme.md @@ -35,7 +35,7 @@ require("lazy").setup({ require('packer').startup(function(use) use({ 'rose-pine/neovim', as = 'rose-pine' }) end) -```∞ +``` ## Gallery