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