mirror of
https://github.com/rose-pine/neovim.git
synced 2025-10-15 12:38:53 +02:00
Compare commits
1 commit
main
...
v2.0.0-nex
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
914330e6e3 |
19 changed files with 1067 additions and 963 deletions
|
|
@ -1,4 +0,0 @@
|
||||||
column_width = 80
|
|
||||||
indent_type = "Tabs"
|
|
||||||
line_endings = "Unix"
|
|
||||||
quote_style = "AutoPreferSingle"
|
|
||||||
82
changelog.md
Normal file
82
changelog.md
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
## v2.0.0-next.1
|
||||||
|
|
||||||
|
### What's new
|
||||||
|
|
||||||
|
- Add proper support for `StatusLineTerm` & `StatusLineTermNC`, controlled via `enable.terminal`
|
||||||
|
- Add background glow to diagnostic virtual text
|
||||||
|
- Add `extend_background_behind_borders`
|
||||||
|
- Add `styles.bold` and alternatively styling when disabled
|
||||||
|
- Add `before_highlight` hook to allow changing palette values and behaviours
|
||||||
|
- Increase contrast of search, visual selections, and more
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
**extend_background_behind_borders**
|
||||||
|
|
||||||
|
Extend float backgrounds behind borders. Results vary depending on your border characters.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
{
|
||||||
|
extend_background_behind_borders = true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**styles.transparency**
|
||||||
|
|
||||||
|
Enable a unique experience focused around transparent terminals, avoiding large backgrounds and differentiating selections with foreground colours when possible.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
{
|
||||||
|
styles = {
|
||||||
|
transparency = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**before_highlight**
|
||||||
|
|
||||||
|
```lua
|
||||||
|
{
|
||||||
|
before_highlight = function(group, highlight, palette)
|
||||||
|
-- Disable all undercurls
|
||||||
|
if highlight.undercurl then
|
||||||
|
highlight.undercurl = false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Change palette colour
|
||||||
|
if highlight.fg == palette.pine then
|
||||||
|
highlight.fg = palette.foam
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Breaking changes
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Removed or renamed options should continue to work via internal migrations but backwards compatibility is not tested and may break at any time.
|
||||||
|
|
||||||
|
```diff
|
||||||
|
- dim_nc_background = true,
|
||||||
|
+ dim_inactive_windows = true,
|
||||||
|
|
||||||
|
- disable_background = true,
|
||||||
|
- disable_float_background = true,
|
||||||
|
+ styles.transparency = true
|
||||||
|
|
||||||
|
- disable_italics = true,
|
||||||
|
+ styles.italic = false,
|
||||||
|
|
||||||
|
- groups = {
|
||||||
|
- background = "...",
|
||||||
|
- comment = "...",
|
||||||
|
- punctuation = "...",
|
||||||
|
- },
|
||||||
|
+ highlight_groups = {
|
||||||
|
+ Normal = { bg = "..." },
|
||||||
|
+ Comment = { fg = "..." },
|
||||||
|
+ ["@punctuation"] = { fg = "..." },
|
||||||
|
+ }
|
||||||
|
```
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
package.loaded['rose-pine.palette'] = nil
|
package.loaded["rose-pine.palette"] = nil
|
||||||
require('rose-pine').colorscheme('dawn')
|
require("rose-pine").colorscheme("dawn")
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
package.loaded['rose-pine.palette'] = nil
|
package.loaded["rose-pine.palette"] = nil
|
||||||
require('rose-pine').colorscheme('main')
|
require("rose-pine").colorscheme("main")
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
package.loaded['rose-pine.palette'] = nil
|
package.loaded["rose-pine.palette"] = nil
|
||||||
require('rose-pine').colorscheme('moon')
|
require("rose-pine").colorscheme("moon")
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
package.loaded['rose-pine.palette'] = nil
|
package.loaded["rose-pine.palette"] = nil
|
||||||
require('rose-pine').colorscheme()
|
require("rose-pine").colorscheme()
|
||||||
|
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
local p = require('rose-pine.palette')
|
|
||||||
|
|
||||||
return {
|
|
||||||
normal = {
|
|
||||||
a = { bg = p.surface, fg = p.rose, gui = 'bold' },
|
|
||||||
b = { bg = p.surface, fg = p.text },
|
|
||||||
c = { bg = p.surface, fg = p.subtle, gui = 'italic' },
|
|
||||||
},
|
|
||||||
insert = {
|
|
||||||
a = { bg = p.surface, fg = p.foam, gui = 'bold' },
|
|
||||||
},
|
|
||||||
visual = {
|
|
||||||
a = { bg = p.surface, fg = p.iris, gui = 'bold' },
|
|
||||||
},
|
|
||||||
replace = {
|
|
||||||
a = { bg = p.surface, fg = p.pine, gui = 'bold' },
|
|
||||||
},
|
|
||||||
command = {
|
|
||||||
a = { bg = p.surface, fg = p.love, gui = 'bold' },
|
|
||||||
},
|
|
||||||
inactive = {
|
|
||||||
a = { bg = p.base, fg = p.subtle, gui = 'bold' },
|
|
||||||
b = { bg = p.base, fg = p.subtle },
|
|
||||||
c = { bg = p.base, fg = p.subtle, gui = 'italic' },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
local p = require('rose-pine.palette')
|
|
||||||
|
|
||||||
return {
|
|
||||||
normal = {
|
|
||||||
a = { bg = p.rose, fg = p.base, gui = 'bold' },
|
|
||||||
b = { bg = p.overlay, fg = p.rose },
|
|
||||||
c = { bg = p.base, fg = p.text },
|
|
||||||
},
|
|
||||||
insert = {
|
|
||||||
a = { bg = p.foam, fg = p.base, gui = 'bold' },
|
|
||||||
b = { bg = p.overlay, fg = p.foam },
|
|
||||||
c = { bg = p.base, fg = p.text },
|
|
||||||
},
|
|
||||||
visual = {
|
|
||||||
a = { bg = p.iris, fg = p.base, gui = 'bold' },
|
|
||||||
b = { bg = p.overlay, fg = p.iris },
|
|
||||||
c = { bg = p.base, fg = p.text },
|
|
||||||
},
|
|
||||||
replace = {
|
|
||||||
a = { bg = p.pine, fg = p.base, gui = 'bold' },
|
|
||||||
b = { bg = p.overlay, fg = p.pine },
|
|
||||||
c = { bg = p.base, fg = p.text },
|
|
||||||
},
|
|
||||||
command = {
|
|
||||||
a = { bg = p.love, fg = p.base, gui = 'bold' },
|
|
||||||
b = { bg = p.overlay, fg = p.love },
|
|
||||||
c = { bg = p.base, fg = p.text },
|
|
||||||
},
|
|
||||||
inactive = {
|
|
||||||
a = { bg = p.base, fg = p.muted, gui = 'bold' },
|
|
||||||
b = { bg = p.base, fg = p.muted },
|
|
||||||
c = { bg = p.base, fg = p.muted },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +1,659 @@
|
||||||
local config = require('rose-pine.config')
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
local config = require("rose-pine.config")
|
||||||
|
|
||||||
---@param variant Variant|nil
|
local function set_highlights()
|
||||||
|
local utilities = require("rose-pine.utilities")
|
||||||
|
local palette = require("rose-pine.palette")
|
||||||
|
local styles = config.options.styles
|
||||||
|
local groups = config.options.groups
|
||||||
|
|
||||||
|
local function make_border(fg)
|
||||||
|
fg = fg or groups.border
|
||||||
|
return { fg = fg, bg = config.options.extend_background_behind_borders and palette.surface or "NONE" }
|
||||||
|
end
|
||||||
|
|
||||||
|
local function make_title(fg)
|
||||||
|
fg = fg or palette.foam
|
||||||
|
return { fg = styles.bold and palette.text or fg, bold = styles.bold }
|
||||||
|
end
|
||||||
|
|
||||||
|
local highlights = {
|
||||||
|
ColorColumn = { bg = palette.surface },
|
||||||
|
Conceal = { bg = "NONE" },
|
||||||
|
CurSearch = { fg = palette.base, bg = palette.gold },
|
||||||
|
Cursor = { fg = palette.text, bg = palette.highlight_high },
|
||||||
|
CursorColumn = { bg = palette.overlay },
|
||||||
|
-- CursorIM = {},
|
||||||
|
CursorLine = { bg = palette.overlay },
|
||||||
|
CursorLineNr = { fg = palette.text, bold = styles.bold },
|
||||||
|
-- DarkenedPanel = { },
|
||||||
|
-- DarkenedStatusline = {},
|
||||||
|
DiffAdd = { bg = groups.git_add, blend = 20 },
|
||||||
|
DiffChange = { bg = groups.git_change, blend = 20 },
|
||||||
|
DiffDelete = { bg = groups.git_delete, blend = 20 },
|
||||||
|
DiffText = { bg = groups.git_text, blend = 20 },
|
||||||
|
diffAdded = { link = "DiffAdd" },
|
||||||
|
diffChanged = { link = "DiffChange" },
|
||||||
|
diffRemoved = { link = "DiffDelete" },
|
||||||
|
Directory = make_title(),
|
||||||
|
-- EndOfBuffer = {},
|
||||||
|
ErrorMsg = { fg = groups.error, bold = styles.bold },
|
||||||
|
FloatBorder = make_border(),
|
||||||
|
FloatTitle = { link = "Directory" },
|
||||||
|
FoldColumn = { fg = palette.muted },
|
||||||
|
Folded = { fg = palette.text, bg = groups.panel },
|
||||||
|
IncSearch = { link = "CurSearch" },
|
||||||
|
LineNr = { fg = palette.muted },
|
||||||
|
MatchParen = { fg = palette.pine, bg = palette.pine, blend = 25 },
|
||||||
|
ModeMsg = { fg = palette.subtle },
|
||||||
|
MoreMsg = { fg = palette.iris },
|
||||||
|
NonText = { fg = palette.muted },
|
||||||
|
Normal = { fg = palette.text, bg = palette.base },
|
||||||
|
NormalFloat = { bg = groups.panel },
|
||||||
|
NormalNC = { fg = palette.text, bg = config.options.dim_inactive_windows and palette._nc or palette.base },
|
||||||
|
NvimInternalError = { link = "ErrorMsg" },
|
||||||
|
Pmenu = { fg = palette.subtle, bg = groups.panel },
|
||||||
|
PmenuExtra = { fg = palette.muted, bg = groups.panel },
|
||||||
|
PmenuExtraSel = { fg = palette.subtle, bg = palette.overlay },
|
||||||
|
PmenuKind = { fg = palette.foam, bg = groups.panel },
|
||||||
|
PmenuKindSel = { fg = palette.subtle, bg = palette.overlay },
|
||||||
|
PmenuSbar = { bg = groups.panel },
|
||||||
|
PmenuSel = { fg = palette.title, bg = palette.overlay },
|
||||||
|
PmenuThumb = { bg = palette.muted },
|
||||||
|
Question = { fg = palette.gold },
|
||||||
|
-- QuickFixLink = {},
|
||||||
|
-- RedrawDebugNormal = {},
|
||||||
|
RedrawDebugClear = { fg = palette.base, bg = palette.gold },
|
||||||
|
RedrawDebugComposed = { fg = palette.base, bg = palette.pine },
|
||||||
|
RedrawDebugRecompose = { fg = palette.base, bg = palette.love },
|
||||||
|
Search = { fg = palette.base, bg = palette.text },
|
||||||
|
SignColumn = { fg = palette.text, bg = "NONE" },
|
||||||
|
SpecialKey = { fg = palette.foam },
|
||||||
|
SpellBad = { sp = palette.subtle, undercurl = true },
|
||||||
|
SpellCap = { sp = palette.subtle, undercurl = true },
|
||||||
|
SpellLocal = { sp = palette.subtle, undercurl = true },
|
||||||
|
SpellRare = { sp = palette.subtle, undercurl = true },
|
||||||
|
StatusLine = { fg = palette.subtle, bg = groups.panel },
|
||||||
|
StatusLineNC = { fg = palette.muted, bg = groups.panel, blend = 60 },
|
||||||
|
StatusLineTerm = { fg = palette.base, bg = palette.pine },
|
||||||
|
StatusLineTermNC = { fg = palette.base, bg = palette.pine, blend = 60 },
|
||||||
|
Substitute = { link = "IncSearch" },
|
||||||
|
TabLine = { link = "StatusLine" },
|
||||||
|
TabLineFill = { bg = groups.panel },
|
||||||
|
TabLineSel = { fg = palette.text, bg = palette.overlay },
|
||||||
|
Title = make_title(),
|
||||||
|
VertSplit = make_border(),
|
||||||
|
Visual = { fg = palette.base, bg = palette.pine },
|
||||||
|
-- VisualNOS = {},
|
||||||
|
WarningMsg = { fg = groups.warn, bold = styles.bold },
|
||||||
|
-- Whitespace = {},
|
||||||
|
WildMenu = { link = "IncSearch" },
|
||||||
|
WinSeparator = { link = "VertSplit" },
|
||||||
|
|
||||||
|
DiagnosticError = { fg = groups.error },
|
||||||
|
DiagnosticHint = { fg = groups.hint },
|
||||||
|
DiagnosticInfo = { fg = groups.info },
|
||||||
|
DiagnosticWarn = { fg = groups.warn },
|
||||||
|
DiagnosticDefaultError = { link = "DiagnosticError" },
|
||||||
|
DiagnosticDefaultHint = { link = "DiagnosticHint" },
|
||||||
|
DiagnosticDefaultInfo = { link = "DiagnosticInfo" },
|
||||||
|
DiagnosticDefaultWarn = { link = "DiagnosticWarn" },
|
||||||
|
DiagnosticFloatingError = { link = "DiagnosticError" },
|
||||||
|
DiagnosticFloatingHint = { link = "DiagnosticHint" },
|
||||||
|
DiagnosticFloatingInfo = { link = "DiagnosticInfo" },
|
||||||
|
DiagnosticFloatingWarn = { link = "DiagnosticWarn" },
|
||||||
|
DiagnosticSignError = { link = "DiagnosticError" },
|
||||||
|
DiagnosticSignHint = { link = "DiagnosticHint" },
|
||||||
|
DiagnosticSignInfo = { link = "DiagnosticInfo" },
|
||||||
|
DiagnosticSignWarn = { link = "DiagnosticWarn" },
|
||||||
|
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, bg = groups.error, blend = 10 },
|
||||||
|
DiagnosticVirtualTextHint = { fg = groups.hint, bg = groups.hint, blend = 10 },
|
||||||
|
DiagnosticVirtualTextInfo = { fg = groups.info, bg = groups.info, blend = 10 },
|
||||||
|
DiagnosticVirtualTextWarn = { fg = groups.warn, bg = groups.warn, blend = 10 },
|
||||||
|
|
||||||
|
Boolean = { fg = palette.rose },
|
||||||
|
Character = { fg = palette.gold },
|
||||||
|
Comment = { fg = palette.subtle, italic = styles.italic },
|
||||||
|
Conditional = { fg = palette.pine },
|
||||||
|
Constant = { fg = palette.gold },
|
||||||
|
Debug = { fg = palette.rose },
|
||||||
|
Define = { fg = palette.iris },
|
||||||
|
Delimiter = { fg = palette.subtle },
|
||||||
|
Error = { fg = palette.love },
|
||||||
|
Exception = { fg = palette.pine },
|
||||||
|
Float = { fg = palette.gold },
|
||||||
|
Function = { fg = palette.rose },
|
||||||
|
Identifier = { fg = palette.text },
|
||||||
|
Include = { fg = palette.pine },
|
||||||
|
Keyword = { fg = palette.pine },
|
||||||
|
Label = { fg = palette.foam },
|
||||||
|
LspCodeLens = { fg = palette.subtle },
|
||||||
|
LspCodeLensSeparator = { fg = palette.muted },
|
||||||
|
LspInlayHint = { fg = palette.muted, bg = palette.muted, blend = 10 },
|
||||||
|
LspReferenceRead = { bg = palette.highlight_med },
|
||||||
|
LspReferenceText = { bg = palette.highlight_med },
|
||||||
|
LspReferenceWrite = { bg = palette.highlight_med },
|
||||||
|
Macro = { fg = palette.iris },
|
||||||
|
Number = { fg = palette.gold },
|
||||||
|
Operator = { fg = palette.subtle },
|
||||||
|
PreConduit = { fg = palette.iris },
|
||||||
|
PreProc = { link = "PreConduit" },
|
||||||
|
Repeat = { fg = palette.pine },
|
||||||
|
Special = { fg = palette.foam },
|
||||||
|
SpecialChar = { link = "Special" },
|
||||||
|
SpecialComment = { fg = palette.iris },
|
||||||
|
Statement = { fg = palette.pine, bold = styles.bold },
|
||||||
|
StorageClass = { fg = palette.foam },
|
||||||
|
String = { fg = palette.gold },
|
||||||
|
Structure = { fg = palette.foam },
|
||||||
|
Tag = { fg = palette.foam },
|
||||||
|
Todo = { fg = palette.iris, bg = palette.iris, blend = 20 },
|
||||||
|
Type = { fg = palette.foam },
|
||||||
|
TypeDef = { link = "Type" },
|
||||||
|
Underlined = { fg = palette.iris, underline = true },
|
||||||
|
|
||||||
|
healthError = { fg = groups.error },
|
||||||
|
healthSuccess = { fg = groups.info },
|
||||||
|
healthWarning = { fg = groups.warn },
|
||||||
|
|
||||||
|
htmlArg = { fg = palette.iris },
|
||||||
|
htmlBold = { bold = styles.bold },
|
||||||
|
htmlEndTag = { fg = palette.subtle },
|
||||||
|
htmlH1 = { link = "markdownH1" },
|
||||||
|
htmlH2 = { link = "markdownH2" },
|
||||||
|
htmlH3 = { link = "markdownH3" },
|
||||||
|
htmlH4 = { link = "markdownH4" },
|
||||||
|
htmlH5 = { link = "markdownH5" },
|
||||||
|
htmlItalic = { italic = styles.italic },
|
||||||
|
htmlLink = { link = "markdownUrl" },
|
||||||
|
htmlTag = { fg = palette.subtle },
|
||||||
|
htmlTagN = { fg = palette.text },
|
||||||
|
htmlTagName = { fg = palette.foam },
|
||||||
|
|
||||||
|
markdownDelimiter = { fg = palette.subtle },
|
||||||
|
markdownH1 = { fg = groups.headings.h1, bold = styles.bold },
|
||||||
|
markdownH1Delimiter = { link = "markdownH1" },
|
||||||
|
markdownH2 = { fg = groups.headings.h2, bold = styles.bold },
|
||||||
|
markdownH2Delimiter = { link = "markdownH2" },
|
||||||
|
markdownH3 = { fg = groups.headings.h3, bold = styles.bold },
|
||||||
|
markdownH3Delimiter = { link = "markdownH3" },
|
||||||
|
markdownH4 = { fg = groups.headings.h4, bold = styles.bold },
|
||||||
|
markdownH4Delimiter = { link = "markdownH4" },
|
||||||
|
markdownH5 = { fg = groups.headings.h5, bold = styles.bold },
|
||||||
|
markdownH5Delimiter = { link = "markdownH5" },
|
||||||
|
markdownH6 = { fg = groups.headings.h6, bold = styles.bold },
|
||||||
|
markdownH6Delimiter = { link = "markdownH6" },
|
||||||
|
markdownLinkText = { link = "markdownUrl" },
|
||||||
|
markdownUrl = { fg = groups.link, sp = groups.link, underline = true },
|
||||||
|
|
||||||
|
mkdCode = { fg = palette.foam, italic = styles.italic },
|
||||||
|
mkdCodeDelimiter = { fg = palette.rose },
|
||||||
|
mkdCodeEnd = { fg = palette.foam },
|
||||||
|
mkdCodeStart = { fg = palette.foam },
|
||||||
|
mkdFootnotes = { fg = palette.foam },
|
||||||
|
mkdID = { fg = palette.foam, underline = true },
|
||||||
|
mkdInlineURL = { link = "markdownUrl" },
|
||||||
|
mkdLink = { link = "markdownUrl" },
|
||||||
|
mkdLinkDef = { link = "markdownUrl" },
|
||||||
|
mkdListItemLine = { fg = palette.text },
|
||||||
|
mkdRule = { fg = palette.subtle },
|
||||||
|
mkdURL = { link = "markdownUrl" },
|
||||||
|
|
||||||
|
["@attribute.diff"] = { fg = palette.gold },
|
||||||
|
["@boolean"] = { link = "Boolean" },
|
||||||
|
["@character"] = { link = "Character" },
|
||||||
|
["@character.special"] = { link = "Character" },
|
||||||
|
["@class"] = { fg = palette.foam },
|
||||||
|
["@comment"] = { link = "Comment" },
|
||||||
|
["@conditional"] = { link = "Conditional" },
|
||||||
|
["@constant"] = { link = "Constant" },
|
||||||
|
["@constant.builtin"] = { fg = palette.love },
|
||||||
|
["@constant.macro"] = { link = "Constant" },
|
||||||
|
["@constructor"] = { fg = palette.foam },
|
||||||
|
["@field"] = { fg = palette.foam },
|
||||||
|
["@function"] = { link = "Function" },
|
||||||
|
["@function.builtin"] = { fg = palette.love },
|
||||||
|
["@function.macro"] = { link = "Function" },
|
||||||
|
["@include"] = { link = "Include" },
|
||||||
|
["@interface"] = { fg = palette.foam },
|
||||||
|
["@keyword"] = { link = "Keyword" },
|
||||||
|
["@keyword.operator"] = { fg = palette.subtle },
|
||||||
|
["@label"] = { link = "Label" },
|
||||||
|
["@lsp.type.comment"] = {},
|
||||||
|
["@lsp.type.enum"] = { link = "Type" },
|
||||||
|
["@lsp.type.interface"] = { link = "@interface" },
|
||||||
|
["@lsp.type.keyword"] = { link = "Keyword" },
|
||||||
|
["@lsp.type.namespace"] = { link = "@namespace" },
|
||||||
|
["@lsp.type.parameter"] = { link = "@parameter" },
|
||||||
|
["@lsp.type.property"] = { link = "@property" },
|
||||||
|
["@lsp.type.variable"] = {},
|
||||||
|
["@lsp.typemod.function.defaultLibrary"] = { link = "Special" },
|
||||||
|
["@lsp.typemod.operator.injected"] = { link = "Operator" },
|
||||||
|
["@lsp.typemod.string.injected"] = { link = "String" },
|
||||||
|
["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" },
|
||||||
|
["@lsp.typemod.variable.injected"] = { link = "@variable" },
|
||||||
|
["@macro"] = { link = "Macro" },
|
||||||
|
["@method"] = { fg = palette.rose },
|
||||||
|
["@namespace"] = { link = "Include" },
|
||||||
|
["@number"] = { link = "Number" },
|
||||||
|
["@operator"] = { link = "Operator" },
|
||||||
|
["@parameter"] = { fg = palette.iris, italic = styles.italic },
|
||||||
|
["@preproc"] = { link = "PreProc" },
|
||||||
|
["@property"] = { fg = palette.foam, italic = styles.italic },
|
||||||
|
["@punctuation"] = { fg = palette.subtle },
|
||||||
|
["@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 = palette.pine },
|
||||||
|
["@string.special"] = { link = "String" },
|
||||||
|
["@symbol"] = { link = "Identifier" },
|
||||||
|
["@tag"] = { link = "Tag" },
|
||||||
|
["@tag.attribute"] = { fg = palette.iris },
|
||||||
|
["@tag.delimiter"] = { fg = palette.subtle },
|
||||||
|
["@text"] = { fg = palette.text },
|
||||||
|
["@text.danger"] = { fg = groups.error },
|
||||||
|
["@text.diff.add"] = { fg = groups.git_add, bg = groups.git_add, blend = 20 },
|
||||||
|
["@text.diff.delete"] = { fg = groups.git_delete, bg = groups.git_delete, blend = 20 },
|
||||||
|
["@text.emphasis"] = { italic = styles.italic },
|
||||||
|
["@text.environment"] = { link = "Macro" },
|
||||||
|
["@text.environment.name"] = { link = "Type" },
|
||||||
|
["@text.math"] = { link = "Special" },
|
||||||
|
["@text.note"] = { link = "SpecialComment" },
|
||||||
|
["@text.strike"] = { strikethrough = true },
|
||||||
|
["@text.strong"] = { bold = styles.bold },
|
||||||
|
["@text.title"] = { link = "Title" },
|
||||||
|
["@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" },
|
||||||
|
["@text.underline"] = { underline = true },
|
||||||
|
["@text.uri"] = { fg = groups.link },
|
||||||
|
["@text.warning"] = { fg = groups.warn },
|
||||||
|
["@todo"] = { link = "Todo" },
|
||||||
|
["@type"] = { link = "Type" },
|
||||||
|
["@variable"] = { fg = palette.text, italic = styles.italic },
|
||||||
|
["@variable.builtin"] = { fg = palette.love },
|
||||||
|
|
||||||
|
-- romgrk/barbar.nvim
|
||||||
|
BufferCurrent = { fg = palette.text, bg = palette.overlay },
|
||||||
|
BufferCurrentIndex = { fg = palette.text, bg = palette.overlay },
|
||||||
|
BufferCurrentMod = { fg = palette.foam, bg = palette.overlay },
|
||||||
|
BufferCurrentSign = { fg = palette.subtle, bg = palette.overlay },
|
||||||
|
BufferCurrentTarget = { fg = palette.gold, bg = palette.overlay },
|
||||||
|
BufferInactive = { fg = palette.subtle },
|
||||||
|
BufferInactiveIndex = { fg = palette.subtle },
|
||||||
|
BufferInactiveMod = { fg = palette.foam },
|
||||||
|
BufferInactiveSign = { fg = palette.muted },
|
||||||
|
BufferInactiveTarget = { fg = palette.gold },
|
||||||
|
BufferTabpageFill = { fg = "NONE", bg = "NONE" },
|
||||||
|
BufferVisible = { fg = palette.subtle },
|
||||||
|
BufferVisibleIndex = { fg = palette.subtle },
|
||||||
|
BufferVisibleMod = { fg = palette.foam },
|
||||||
|
BufferVisibleSign = { fg = palette.muted },
|
||||||
|
BufferVisibleTarget = { fg = palette.gold },
|
||||||
|
|
||||||
|
-- lewis6991/gitsigns.nvim
|
||||||
|
GitSignsAdd = { link = "SignAdd" },
|
||||||
|
GitSignsChange = { link = "SignChange" },
|
||||||
|
GitSignsDelete = { link = "SignDelete" },
|
||||||
|
SignAdd = { fg = groups.git_add, bg = "NONE" },
|
||||||
|
SignChange = { fg = groups.git_change, bg = "NONE" },
|
||||||
|
SignDelete = { fg = groups.git_delete, bg = "NONE" },
|
||||||
|
|
||||||
|
-- mvllow/modes.nvim
|
||||||
|
ModesCopy = { bg = palette.gold },
|
||||||
|
ModesDelete = { bg = palette.love },
|
||||||
|
ModesInsert = { bg = palette.foam },
|
||||||
|
ModesVisual = { bg = palette.iris },
|
||||||
|
|
||||||
|
-- kyazdani42/nvim-tree.lua
|
||||||
|
NvimTreeEmptyFolderName = { fg = palette.muted },
|
||||||
|
NvimTreeFileDeleted = { fg = groups.git_delete },
|
||||||
|
NvimTreeFileDirty = { fg = groups.git_dirty },
|
||||||
|
NvimTreeFileMerge = { fg = groups.git_merge },
|
||||||
|
NvimTreeFileNew = { fg = palette.foam },
|
||||||
|
NvimTreeFileRenamed = { fg = groups.git_rename },
|
||||||
|
NvimTreeFileStaged = { fg = groups.git_stage },
|
||||||
|
NvimTreeFolderIcon = { fg = palette.subtle },
|
||||||
|
NvimTreeFolderName = { fg = palette.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 = palette.text },
|
||||||
|
NvimTreeNormal = { link = "Normal" },
|
||||||
|
NvimTreeOpenedFile = { fg = palette.text, bg = palette.overlay },
|
||||||
|
NvimTreeOpenedFolderName = { link = "NvimTreeFolderName" },
|
||||||
|
NvimTreeRootFolder = make_title(),
|
||||||
|
NvimTreeSpecialFile = { link = "NvimTreeNormal" },
|
||||||
|
NvimTreeWindowPicker = { link = "StatusLineTerm" },
|
||||||
|
|
||||||
|
-- nvim-neo-tree/neo-tree.nvim
|
||||||
|
NeoTreeGitAdded = { fg = groups.git_add },
|
||||||
|
NeoTreeGitConflict = { fg = groups.git_merge },
|
||||||
|
NeoTreeGitDeleted = { fg = groups.git_delete },
|
||||||
|
NeoTreeGitIgnored = { fg = groups.git_ignore },
|
||||||
|
NeoTreeGitModified = { fg = groups.git_dirty },
|
||||||
|
NeoTreeGitRenamed = { fg = groups.git_rename },
|
||||||
|
NeoTreeGitUntracked = { fg = groups.git_untracked },
|
||||||
|
NeoTreeTitleBar = { link = "StatusLineTerm" },
|
||||||
|
|
||||||
|
-- folke/which-key.nvim
|
||||||
|
WhichKey = { fg = palette.iris },
|
||||||
|
WhichKeyDesc = { fg = palette.gold },
|
||||||
|
WhichKeyFloat = { bg = groups.panel },
|
||||||
|
WhichKeyGroup = { fg = palette.foam },
|
||||||
|
WhichKeySeparator = { fg = palette.subtle },
|
||||||
|
WhichKeyValue = { fg = palette.rose },
|
||||||
|
|
||||||
|
-- luka-reineke/indent-blankline.nvim
|
||||||
|
IndentBlanklineChar = { fg = palette.muted, nocombine = true },
|
||||||
|
IndentBlanklineSpaceChar = { fg = palette.muted, nocombine = true },
|
||||||
|
IndentBlanklineSpaceCharBlankline = { fg = palette.muted, nocombine = true },
|
||||||
|
|
||||||
|
-- hrsh7th/nvim-cmp
|
||||||
|
CmpItemAbbr = { fg = palette.subtle },
|
||||||
|
CmpItemAbbrDeprecated = { fg = palette.subtle, strikethrough = true },
|
||||||
|
CmpItemAbbrMatch = { fg = palette.text, bold = styles.bold },
|
||||||
|
CmpItemAbbrMatchFuzzy = { fg = palette.text, bold = styles.bold },
|
||||||
|
CmpItemKind = { fg = palette.subtle },
|
||||||
|
CmpItemKindClass = { link = "StorageClass" },
|
||||||
|
CmpItemKindFunction = { link = "Function" },
|
||||||
|
CmpItemKindInterface = { link = "Type" },
|
||||||
|
CmpItemKindMethod = { link = "PreProc" },
|
||||||
|
CmpItemKindSnippet = { link = "String" },
|
||||||
|
CmpItemKindVariable = { link = "Identifier" },
|
||||||
|
|
||||||
|
-- TimUntersberger/neogit
|
||||||
|
NeogitDiffAddHighlight = { link = "DiffAdd" },
|
||||||
|
NeogitDiffContextHighlight = { bg = palette.surface },
|
||||||
|
NeogitDiffDeleteHighlight = { link = "DiffDelete" },
|
||||||
|
NeogitHunkHeader = { bg = groups.panel },
|
||||||
|
NeogitHunkHeaderHighlight = { bg = groups.panel },
|
||||||
|
|
||||||
|
-- vimwiki/vimwiki
|
||||||
|
VimwikiHR = { fg = palette.subtle },
|
||||||
|
VimwikiHeader1 = { link = "markdownH1" },
|
||||||
|
VimwikiHeader2 = { link = "markdownH2" },
|
||||||
|
VimwikiHeader3 = { link = "markdownH3" },
|
||||||
|
VimwikiHeader4 = { link = "markdownH4" },
|
||||||
|
VimwikiHeader5 = { link = "markdownH5" },
|
||||||
|
VimwikiHeader6 = { link = "markdownH6" },
|
||||||
|
VimwikiHeaderChar = { fg = palette.subtle },
|
||||||
|
VimwikiLink = { link = "markdownUrl" },
|
||||||
|
VimwikiList = { fg = palette.iris },
|
||||||
|
VimwikiNoExistsLink = { fg = palette.love },
|
||||||
|
|
||||||
|
-- nvim-neorg/neorg
|
||||||
|
NeorgHeading1Prefix = { link = "markdownH1Delimiter" },
|
||||||
|
NeorgHeading1Title = { link = "markdownH1" },
|
||||||
|
NeorgHeading2Prefix = { link = "markdownH2Delimiter" },
|
||||||
|
NeorgHeading2Title = { link = "markdownH2" },
|
||||||
|
NeorgHeading3Prefix = { link = "markdownH3Delimiter" },
|
||||||
|
NeorgHeading3Title = { link = "markdownH3" },
|
||||||
|
NeorgHeading4Prefix = { link = "markdownH4Delimiter" },
|
||||||
|
NeorgHeading4Title = { link = "markdownH4" },
|
||||||
|
NeorgHeading5Prefix = { link = "markdownH5Delimiter" },
|
||||||
|
NeorgHeading5Title = { link = "markdownH5" },
|
||||||
|
NeorgHeading6Prefix = { link = "markdownH6Delimiter" },
|
||||||
|
NeorgHeading6Title = { link = "markdownH6" },
|
||||||
|
NeorgMarkerTitle = make_title(),
|
||||||
|
|
||||||
|
-- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim)
|
||||||
|
DefinitionCount = { fg = palette.rose },
|
||||||
|
DefinitionIcon = { fg = palette.rose },
|
||||||
|
DefintionPreviewTitle = { fg = palette.rose, bold = styles.bold },
|
||||||
|
LspFloatWinBorder = make_border(),
|
||||||
|
LspFloatWinNormal = { bg = groups.panel },
|
||||||
|
LspSagaAutoPreview = { fg = palette.subtle },
|
||||||
|
LspSagaCodeActionBorder = make_border(palette.rose),
|
||||||
|
LspSagaCodeActionContent = { fg = palette.foam },
|
||||||
|
LspSagaCodeActionTitle = { fg = palette.gold, bold = styles.bold },
|
||||||
|
LspSagaCodeActionTruncateLine = { link = "LspSagaCodeActionBorder" },
|
||||||
|
LspSagaDefPreviewBorder = make_border(),
|
||||||
|
LspSagaDiagnosticBorder = make_border(palette.gold),
|
||||||
|
LspSagaDiagnosticHeader = make_title(),
|
||||||
|
LspSagaDiagnosticTruncateLine = { link = "LspSagaDiagnosticBorder" },
|
||||||
|
LspSagaDocTruncateLine = { link = "LspSagaHoverBorder" },
|
||||||
|
LspSagaFinderSelection = { fg = palette.gold },
|
||||||
|
LspSagaHoverBorder = { link = "LspFloatWinBorder" },
|
||||||
|
LspSagaLspFinderBorder = { link = "LspFloatWinBorder" },
|
||||||
|
LspSagaRenameBorder = make_border(palette.pine),
|
||||||
|
LspSagaRenamePromptPrefix = { fg = palette.love },
|
||||||
|
LspSagaShTruncateLine = { link = "LspSagaSignatureHelpBorder" },
|
||||||
|
LspSagaSignatureHelpBorder = make_border(palette.foam),
|
||||||
|
ReferencesCount = { fg = palette.rose },
|
||||||
|
ReferencesIcon = { fg = palette.rose },
|
||||||
|
SagaShadow = { bg = palette.overlay },
|
||||||
|
TargetWord = { fg = palette.iris },
|
||||||
|
|
||||||
|
-- ray-x/lsp_signature.nvim
|
||||||
|
LspSignatureActiveParameter = { bg = palette.overlay },
|
||||||
|
|
||||||
|
-- rlane/pounce.nvim
|
||||||
|
PounceAccept = { fg = palette.love, bg = palette.love, blend = 20 },
|
||||||
|
PounceAcceptBest = { fg = palette.gold, bg = palette.gold, blend = 20 },
|
||||||
|
PounceGap = { link = "Search" },
|
||||||
|
PounceMatch = { link = "Search" },
|
||||||
|
|
||||||
|
-- ggandor/leap.nvim
|
||||||
|
LeapLabelPrimary = { link = "IncSearch" },
|
||||||
|
LeapLabelSecondary = { link = "StatusLineTerm" },
|
||||||
|
LeapMatch = { link = "MatchParen" },
|
||||||
|
|
||||||
|
-- phaazon/hop.nvim
|
||||||
|
-- smoka7/hop.nvim
|
||||||
|
HopNextKey = { fg = palette.love, bg = palette.love, blend = 20 },
|
||||||
|
HopNextKey1 = { fg = palette.foam, bg = palette.foam, blend = 20 },
|
||||||
|
HopNextKey2 = { fg = palette.pine, bg = palette.pine, blend = 20 },
|
||||||
|
HopUnmatched = { fg = palette.muted },
|
||||||
|
|
||||||
|
-- nvim-telescope/telescope.nvim
|
||||||
|
TelescopeBorder = make_border(),
|
||||||
|
TelescopeMatching = { fg = palette.rose },
|
||||||
|
TelescopeNormal = { bg = groups.panel },
|
||||||
|
TelescopePromptNormal = { link = "TelescopeNormal" },
|
||||||
|
TelescopePromptPrefix = { fg = palette.subtle },
|
||||||
|
TelescopeSelection = { fg = palette.text, bg = palette.overlay },
|
||||||
|
TelescopeSelectionCaret = { fg = palette.rose, bg = palette.overlay },
|
||||||
|
TelescopeTitle = make_title(),
|
||||||
|
|
||||||
|
-- rcarriga/nvim-notify
|
||||||
|
NotifyDEBUGBorder = make_border(),
|
||||||
|
NotifyDEBUGIcon = { link = "NotifyDEBUGTitle" },
|
||||||
|
NotifyDEBUGTitle = { fg = palette.muted },
|
||||||
|
NotifyERRORBorder = make_border(groups.error),
|
||||||
|
NotifyERRORIcon = { link = "NotifyERRORTitle" },
|
||||||
|
NotifyERRORTitle = { fg = groups.error },
|
||||||
|
NotifyINFOBorder = make_border(groups.info),
|
||||||
|
NotifyINFOIcon = { link = "NotifyINFOTitle" },
|
||||||
|
NotifyINFOTitle = { fg = groups.info },
|
||||||
|
NotifyTRACEBorder = make_border(palette.iris),
|
||||||
|
NotifyTRACEIcon = { link = "NotifyTRACETitle" },
|
||||||
|
NotifyTRACETitle = { fg = palette.iris },
|
||||||
|
NotifyWARNBorder = make_border(groups.warn),
|
||||||
|
NotifyWARNIcon = { link = "NotifyWARNTitle" },
|
||||||
|
NotifyWARNTitle = { fg = groups.warn },
|
||||||
|
|
||||||
|
-- rcarriga/nvim-dap-ui
|
||||||
|
DapUIBreakpointsCurrentLine = { fg = palette.gold, bold = styles.bold },
|
||||||
|
DapUIBreakpointsDisabledLine = { fg = palette.muted },
|
||||||
|
DapUIBreakpointsInfo = { link = "DapUIThread" },
|
||||||
|
DapUIBreakpointsLine = { link = "DapUIBreakpointsPath" },
|
||||||
|
DapUIBreakpointsPath = { fg = palette.foam },
|
||||||
|
DapUIDecoration = { link = "DapUIBreakpointsPath" },
|
||||||
|
DapUIFloatBorder = make_border(),
|
||||||
|
DapUIFrameName = { fg = palette.text },
|
||||||
|
DapUILineNumber = { link = "DapUIBreakpointsPath" },
|
||||||
|
DapUIModifiedValue = { fg = palette.foam, bold = styles.bold },
|
||||||
|
DapUIScope = { link = "DapUIBreakpointsPath" },
|
||||||
|
DapUISource = { fg = palette.iris },
|
||||||
|
DapUIStoppedThread = { link = "DapUIBreakpointsPath" },
|
||||||
|
DapUIThread = { fg = palette.gold },
|
||||||
|
DapUIValue = { fg = palette.text },
|
||||||
|
DapUIVariable = { fg = palette.text },
|
||||||
|
DapUIWatchesEmpty = { fg = palette.love },
|
||||||
|
DapUIWatchesError = { link = "DapUIWatchesEmpty" },
|
||||||
|
DapUIWatchesValue = { link = "DapUIThread" },
|
||||||
|
|
||||||
|
-- glepnir/dashboard-nvim
|
||||||
|
DashboardCenter = { fg = palette.gold },
|
||||||
|
DashboardFooter = { fg = palette.iris },
|
||||||
|
DashboardHeader = { fg = palette.pine },
|
||||||
|
DashboardShortcut = { fg = palette.love },
|
||||||
|
|
||||||
|
-- SmiteshP/nvim-navic
|
||||||
|
NavicIconsArray = { fg = palette.gold },
|
||||||
|
NavicIconsBoolean = { fg = palette.rose },
|
||||||
|
NavicIconsClass = { fg = palette.foam },
|
||||||
|
NavicIconsConstant = { fg = palette.gold },
|
||||||
|
NavicIconsConstructor = { fg = palette.gold },
|
||||||
|
NavicIconsEnum = { fg = palette.gold },
|
||||||
|
NavicIconsEnumMember = { fg = palette.foam },
|
||||||
|
NavicIconsEvent = { fg = palette.gold },
|
||||||
|
NavicIconsField = { fg = palette.foam },
|
||||||
|
NavicIconsFile = { fg = palette.muted },
|
||||||
|
NavicIconsFunction = { fg = palette.pine },
|
||||||
|
NavicIconsInterface = { fg = palette.foam },
|
||||||
|
NavicIconsKey = { fg = palette.iris },
|
||||||
|
NavicIconsKeyword = { fg = palette.pine },
|
||||||
|
NavicIconsMethod = { fg = palette.iris },
|
||||||
|
NavicIconsModule = { fg = palette.rose },
|
||||||
|
NavicIconsNamespace = { fg = palette.muted },
|
||||||
|
NavicIconsNull = { fg = palette.love },
|
||||||
|
NavicIconsNumber = { fg = palette.gold },
|
||||||
|
NavicIconsObject = { fg = palette.gold },
|
||||||
|
NavicIconsOperator = { fg = palette.subtle },
|
||||||
|
NavicIconsPackage = { fg = palette.muted },
|
||||||
|
NavicIconsProperty = { fg = palette.foam },
|
||||||
|
NavicIconsString = { fg = palette.gold },
|
||||||
|
NavicIconsStruct = { fg = palette.foam },
|
||||||
|
NavicIconsTypeParameter = { fg = palette.foam },
|
||||||
|
NavicIconsVariable = { fg = palette.text },
|
||||||
|
NavicSeparator = { fg = palette.subtle },
|
||||||
|
NavicText = { fg = palette.subtle },
|
||||||
|
|
||||||
|
-- folke/noice.nvim
|
||||||
|
NoiceCursor = { fg = palette.highlight_high, bg = palette.text },
|
||||||
|
|
||||||
|
-- echasnovski/mini.indentscope
|
||||||
|
MiniIndentscopeSymbol = { fg = palette.muted },
|
||||||
|
MiniIndentscopeSymbolOff = { fg = palette.muted },
|
||||||
|
|
||||||
|
-- goolord/alpha-nvim
|
||||||
|
AlphaButtons = { fg = palette.foam },
|
||||||
|
AlphaFooter = { fg = palette.gold },
|
||||||
|
AlphaHeader = { fg = palette.pine },
|
||||||
|
AlphaShortcut = { fg = palette.rose },
|
||||||
|
|
||||||
|
-- github/copilot.vim
|
||||||
|
CopilotSuggestion = { fg = palette.muted, italic = styles.italic },
|
||||||
|
}
|
||||||
|
|
||||||
|
local transparency_highlights = {
|
||||||
|
DiagnosticVirtualTextError = { fg = groups.error },
|
||||||
|
DiagnosticVirtualTextHint = { fg = groups.hint },
|
||||||
|
DiagnosticVirtualTextInfo = { fg = groups.info },
|
||||||
|
DiagnosticVirtualTextWarn = { fg = groups.warn },
|
||||||
|
|
||||||
|
FloatBorder = { fg = palette.muted, bg = "NONE" },
|
||||||
|
Folded = { fg = palette.text, bg = "NONE" },
|
||||||
|
NormalFloat = { bg = "NONE" },
|
||||||
|
NormalNC = { fg = palette.text, bg = config.options.dim_inactive_windows and palette._nc or "NONE" },
|
||||||
|
Pmenu = { fg = palette.subtle, bg = "NONE" },
|
||||||
|
PmenuKind = { fg = palette.foam, bg = "NONE" },
|
||||||
|
SignColumn = { fg = palette.text, bg = "NONE" },
|
||||||
|
StatusLine = { fg = palette.subtle, bg = "NONE" },
|
||||||
|
StatusLineNC = { fg = palette.muted, bg = "NONE" },
|
||||||
|
TabLineFill = { bg = "NONE" },
|
||||||
|
TabLineSel = { fg = palette.text, bg = "NONE", bold = styles.bold },
|
||||||
|
|
||||||
|
TelescopeNormal = { fg = palette.text, bg = "NONE" },
|
||||||
|
TelescopePromptNormal = { fg = palette.text, bg = "NONE" },
|
||||||
|
TelescopeSelection = { fg = palette.text, bg = "NONE", bold = styles.bold },
|
||||||
|
TelescopeSelectionCaret = { fg = palette.rose, bg = "NONE" },
|
||||||
|
|
||||||
|
WhichKeyFloat = { bg = "NONE" },
|
||||||
|
}
|
||||||
|
|
||||||
|
if styles.transparency then
|
||||||
|
for group, highlight in pairs(transparency_highlights) do
|
||||||
|
highlights[group] = highlight
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for group, options in pairs(config.options.highlight_groups) do
|
||||||
|
highlights[group] = vim.tbl_extend("force", highlights[group] or {}, options)
|
||||||
|
end
|
||||||
|
|
||||||
|
for group, highlight in pairs(highlights) do
|
||||||
|
config.options.before_highlight(group, highlight, palette)
|
||||||
|
utilities.highlight(group, highlight)
|
||||||
|
end
|
||||||
|
|
||||||
|
if config.options.enable.terminal then
|
||||||
|
vim.g.terminal_color_0 = palette.overlay -- black
|
||||||
|
vim.g.terminal_color_8 = palette.subtle -- bright black
|
||||||
|
vim.g.terminal_color_1 = palette.love -- red
|
||||||
|
vim.g.terminal_color_9 = palette.love -- bright red
|
||||||
|
vim.g.terminal_color_2 = palette.pine -- green
|
||||||
|
vim.g.terminal_color_10 = palette.pine -- bright green
|
||||||
|
vim.g.terminal_color_3 = palette.gold -- yellow
|
||||||
|
vim.g.terminal_color_11 = palette.gold -- bright yellow
|
||||||
|
vim.g.terminal_color_4 = palette.foam -- blue
|
||||||
|
vim.g.terminal_color_12 = palette.foam -- bright blue
|
||||||
|
vim.g.terminal_color_5 = palette.iris -- magenta
|
||||||
|
vim.g.terminal_color_13 = palette.iris -- bright magenta
|
||||||
|
vim.g.terminal_color_6 = palette.rose -- cyan
|
||||||
|
vim.g.terminal_color_14 = palette.rose -- bright cyan
|
||||||
|
vim.g.terminal_color_7 = palette.text -- white
|
||||||
|
vim.g.terminal_color_15 = palette.text -- bright white
|
||||||
|
|
||||||
|
-- Support StatusLineTerm & StatusLineTermNC from vim
|
||||||
|
vim.cmd([[
|
||||||
|
autocmd TermOpen * if &buftype=='terminal'
|
||||||
|
\|setlocal winhighlight=StatusLine:StatusLineTerm,StatusLineNC:StatusLineTermNC
|
||||||
|
\|else|setlocal winhighlight=|endif
|
||||||
|
]])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param variant Variant | nil
|
||||||
function M.colorscheme(variant)
|
function M.colorscheme(variant)
|
||||||
config.extend({ variant = variant })
|
config.extend_options({ variant = variant })
|
||||||
|
|
||||||
vim.opt.termguicolors = true
|
vim.opt.termguicolors = true
|
||||||
if vim.g.colors_name then
|
if vim.g.colors_name then
|
||||||
vim.cmd('hi clear')
|
vim.cmd("hi clear")
|
||||||
vim.cmd('syntax reset')
|
vim.cmd("syntax reset")
|
||||||
end
|
end
|
||||||
vim.g.colors_name = 'rose-pine'
|
vim.g.colors_name = "rose-pine"
|
||||||
|
|
||||||
require('rose-pine.theme')._load(config.options)
|
set_highlights()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param options Options
|
||||||
function M.setup(options)
|
function M.setup(options)
|
||||||
config.extend(options)
|
config.extend_options(options or {})
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|
|
||||||
|
|
@ -1,68 +1,153 @@
|
||||||
---@alias Variant "main" | "moon" | "dawn"
|
---@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 }
|
---@alias Palette { base: string, surface: string, overlay: string, muted: string, subtle: string, text: string, love: string, gold: string, rose: string, pine: string, foam: string, iris: string }
|
||||||
|
---@alias PaletteColor "base" | "surface" | "overlay" | "muted" | "subtle" | "text" | "love" | "gold" | "rose" | "pine" | "foam" | "iris" | "highlight_low" | "highlight_med" | "highlight_high"
|
||||||
|
---@alias Highlight { fg: string, bg: string, sp: string, bold: boolean, italic: boolean, undercurl: boolean, underline: boolean, underdouble: boolean, underdotted: boolean, underdashed: boolean, strikethrough: boolean }
|
||||||
|
|
||||||
local M = {}
|
local config = {}
|
||||||
|
|
||||||
---@class Options
|
---@class Options
|
||||||
M.options = {
|
config.options = {
|
||||||
---Set the desired variant: "auto" will follow the vim background,
|
---Set the desired variant: "auto" will follow the vim background,
|
||||||
---defaulting to "main" for dark and "dawn" for light. To change the dark
|
---defaulting to `dark_variant` or "main" for dark and "dawn" for light.
|
||||||
---variant, use `options.dark_variant = "moon"`.
|
|
||||||
---@type "auto" | Variant
|
---@type "auto" | Variant
|
||||||
variant = 'auto',
|
variant = "auto",
|
||||||
|
|
||||||
---Set the desired dark variant: applies when `options.variant` is set to
|
---Set the desired dark variant when `options.variant` is set to "auto".
|
||||||
---"auto" to match `vim.o.background`.
|
|
||||||
---@type Variant
|
---@type Variant
|
||||||
dark_variant = 'main',
|
dark_variant = "main",
|
||||||
|
|
||||||
bold_vert_split = false,
|
---Differentiate between active and inactive windows and panels.
|
||||||
|
dim_inactive_windows = false,
|
||||||
|
|
||||||
dim_nc_background = false,
|
---Extend background behind borders. Appearance differs based on which
|
||||||
|
---border characters you are using.
|
||||||
|
extend_background_behind_borders = false,
|
||||||
|
|
||||||
disable_background = false,
|
enable = {
|
||||||
disable_float_background = false,
|
terminal = true,
|
||||||
disable_italics = false,
|
migrations = true,
|
||||||
|
|
||||||
groups = {
|
|
||||||
background = 'base',
|
|
||||||
background_nc = 'nc',
|
|
||||||
panel = 'surface',
|
|
||||||
panel_nc = 'base',
|
|
||||||
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 table<string, Color>
|
styles = {
|
||||||
|
bold = true,
|
||||||
|
italic = true,
|
||||||
|
transparency = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
---@type table<string, string | PaletteColor>
|
||||||
|
groups = {
|
||||||
|
border = "muted",
|
||||||
|
link = "iris",
|
||||||
|
panel = "surface",
|
||||||
|
|
||||||
|
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",
|
||||||
|
git_untracked = "subtle",
|
||||||
|
|
||||||
|
---@type string | PaletteColor | table<string, string | PaletteColor>
|
||||||
|
headings = {
|
||||||
|
h1 = "iris",
|
||||||
|
h2 = "foam",
|
||||||
|
h3 = "rose",
|
||||||
|
h4 = "gold",
|
||||||
|
h5 = "pine",
|
||||||
|
h6 = "foam",
|
||||||
|
},
|
||||||
|
|
||||||
|
---@deprecated Replaced by `options.highlight_groups["Normal"]`
|
||||||
|
-- background = "base",
|
||||||
|
---@deprecated Replaced by `options.highlight_groups["Comment"]`
|
||||||
|
-- comment = "subtle",
|
||||||
|
---@deprecated Replaced by `options.highlight_groups["@punctuation"]`
|
||||||
|
-- punctuation = "muted",
|
||||||
|
},
|
||||||
|
|
||||||
|
---@type table<string, Highlight>
|
||||||
highlight_groups = {},
|
highlight_groups = {},
|
||||||
|
|
||||||
|
---Called before each highlight group, before setting the highlight.
|
||||||
|
---@param group string
|
||||||
|
---@param highlight Highlight
|
||||||
|
---@param palette Palette
|
||||||
|
---@diagnostic disable-next-line: unused-local
|
||||||
|
before_highlight = function(group, highlight, palette) end,
|
||||||
|
|
||||||
|
---@deprecated Replaced by `options.dim_inactive_windows`
|
||||||
|
-- dim_nc_background = false,
|
||||||
|
---@deprecated Replaced by `options.enable.transparency`
|
||||||
|
-- disable_background = false,
|
||||||
|
---@deprecated Replaced by `options.enable.transparency`
|
||||||
|
-- disable_float_background = false,
|
||||||
|
---@deprecated Replaced by `options.styles.italic`
|
||||||
|
-- disable_italics = false,
|
||||||
|
---@deprecated Replaced by `options.highlight_groups`
|
||||||
|
-- bold_vert_split = false
|
||||||
}
|
}
|
||||||
|
|
||||||
---@param options Options|nil
|
local function migrate(options)
|
||||||
function M.extend(options)
|
if options.bold_vert_split then
|
||||||
M.options = vim.tbl_deep_extend('force', M.options, options or {})
|
options.highlight_groups["VertSplit"] = { fg = "muted", bg = "muted" }
|
||||||
|
end
|
||||||
|
|
||||||
|
options.dim_inactive_windows = options.dim_nc_background or options.dim_inactive_windows
|
||||||
|
|
||||||
|
if options.groups.background ~= nil then
|
||||||
|
options.highlight_groups["Normal"] = { bg = options.groups.background }
|
||||||
|
end
|
||||||
|
|
||||||
|
if options.groups.comment ~= nil then
|
||||||
|
options.highlight_groups["Comment"] = { fg = options.groups.comment }
|
||||||
|
end
|
||||||
|
|
||||||
|
if options.groups.punctuation ~= nil then
|
||||||
|
options.highlight_groups["@punctuation"] = { fg = options.groups.punctuation }
|
||||||
|
end
|
||||||
|
|
||||||
|
options.styles.transparency = (options.disable_background or options.disable_float_background)
|
||||||
|
or options.styles.transparency
|
||||||
|
|
||||||
|
-- These never actually existed, but may be set intuitively by the user
|
||||||
|
-- because of `disable_italics` existing.
|
||||||
|
options.styles.bold = (options.disable_bold or options.disable_bolds) and false or options.styles.bold
|
||||||
|
|
||||||
|
-- Similar to bold options, `disable_italic` never existed but could be a
|
||||||
|
-- common typo of the actual `disable_italics`.
|
||||||
|
options.styles.italic = (options.disable_italic or options.disable_italics) and false or options.styles.italic
|
||||||
|
|
||||||
|
-- Set h1 through h6 to the same color if only one is specified
|
||||||
|
if type(options.groups.headings) == "string" then
|
||||||
|
options.groups.headings = {
|
||||||
|
h1 = options.groups.headings,
|
||||||
|
h2 = options.groups.headings,
|
||||||
|
h3 = options.groups.headings,
|
||||||
|
h4 = options.groups.headings,
|
||||||
|
h5 = options.groups.headings,
|
||||||
|
h6 = options.groups.headings,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return options
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
---@param options Options | nil
|
||||||
|
function config.extend_options(options)
|
||||||
|
config.options = vim.tbl_deep_extend("force", config.options, options or {})
|
||||||
|
|
||||||
|
if config.options.enable.migrations then
|
||||||
|
config.options = migrate(config.options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return config
|
||||||
|
|
|
||||||
|
|
@ -1,68 +1,58 @@
|
||||||
local options = require('rose-pine.config').options
|
local options = require("rose-pine.config").options
|
||||||
|
|
||||||
local variants = {
|
local variants = {
|
||||||
main = {
|
main = {
|
||||||
---@deprecated for backwards compatibility
|
_nc = "#16141f",
|
||||||
_experimental_nc = '#16141f',
|
base = "#191724",
|
||||||
nc = '#16141f',
|
surface = "#1f1d2e",
|
||||||
base = '#191724',
|
overlay = "#26233a",
|
||||||
surface = '#1f1d2e',
|
muted = "#6e6a86",
|
||||||
overlay = '#26233a',
|
subtle = "#908caa",
|
||||||
muted = '#6e6a86',
|
text = "#e0def4",
|
||||||
subtle = '#908caa',
|
love = "#eb6f92",
|
||||||
text = '#e0def4',
|
gold = "#f6c177",
|
||||||
love = '#eb6f92',
|
rose = "#ebbcba",
|
||||||
gold = '#f6c177',
|
pine = "#3e8fb0",
|
||||||
rose = '#ebbcba',
|
foam = "#9ccfd8",
|
||||||
pine = '#31748f',
|
iris = "#c4a7e7",
|
||||||
foam = '#9ccfd8',
|
highlight_low = "#21202e",
|
||||||
iris = '#c4a7e7',
|
highlight_med = "#403d52",
|
||||||
highlight_low = '#21202e',
|
highlight_high = "#524f67",
|
||||||
highlight_med = '#403d52',
|
|
||||||
highlight_high = '#524f67',
|
|
||||||
none = 'NONE',
|
|
||||||
},
|
},
|
||||||
moon = {
|
moon = {
|
||||||
---@deprecated for backwards compatibility
|
_nc = "#1f1d30",
|
||||||
_experimental_nc = '#1f1d30',
|
base = "#232136",
|
||||||
nc = '#1f1d30',
|
surface = "#2a273f",
|
||||||
base = '#232136',
|
overlay = "#393552",
|
||||||
surface = '#2a273f',
|
muted = "#6e6a86",
|
||||||
overlay = '#393552',
|
subtle = "#908caa",
|
||||||
muted = '#6e6a86',
|
text = "#e0def4",
|
||||||
subtle = '#908caa',
|
love = "#eb6f92",
|
||||||
text = '#e0def4',
|
gold = "#f6c177",
|
||||||
love = '#eb6f92',
|
rose = "#ea9a97",
|
||||||
gold = '#f6c177',
|
pine = "#3e8fb0",
|
||||||
rose = '#ea9a97',
|
foam = "#9ccfd8",
|
||||||
pine = '#3e8fb0',
|
iris = "#c4a7e7",
|
||||||
foam = '#9ccfd8',
|
highlight_low = "#2a283e",
|
||||||
iris = '#c4a7e7',
|
highlight_med = "#44415a",
|
||||||
highlight_low = '#2a283e',
|
highlight_high = "#56526e",
|
||||||
highlight_med = '#44415a',
|
|
||||||
highlight_high = '#56526e',
|
|
||||||
none = 'NONE',
|
|
||||||
},
|
},
|
||||||
dawn = {
|
dawn = {
|
||||||
---@deprecated for backwards compatibility
|
_nc = "#f8f0e7",
|
||||||
_experimental_nc = '#f8f0e7',
|
base = "#faf4ed",
|
||||||
nc = '#f8f0e7',
|
surface = "#fffaf3",
|
||||||
base = '#faf4ed',
|
overlay = "#f2e9e1",
|
||||||
surface = '#fffaf3',
|
muted = "#9893a5",
|
||||||
overlay = '#f2e9e1',
|
subtle = "#797593",
|
||||||
muted = '#9893a5',
|
text = "#464261",
|
||||||
subtle = '#797593',
|
love = "#b4637a",
|
||||||
text = '#575279',
|
gold = "#ea9d34",
|
||||||
love = '#b4637a',
|
rose = "#d7827e",
|
||||||
gold = '#ea9d34',
|
pine = "#286983",
|
||||||
rose = '#d7827e',
|
foam = "#56949f",
|
||||||
pine = '#286983',
|
iris = "#907aa9",
|
||||||
foam = '#56949f',
|
highlight_low = "#f4ede8",
|
||||||
iris = '#907aa9',
|
highlight_med = "#dfdad9",
|
||||||
highlight_low = '#f4ede8',
|
highlight_high = "#cecacd",
|
||||||
highlight_med = '#dfdad9',
|
|
||||||
highlight_high = '#cecacd',
|
|
||||||
none = 'NONE',
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,5 +60,4 @@ if variants[options.variant] ~= nil then
|
||||||
return variants[options.variant]
|
return variants[options.variant]
|
||||||
end
|
end
|
||||||
|
|
||||||
return vim.o.background == 'light' and variants.dawn
|
return vim.o.background == "light" and variants.dawn or variants[options.dark_variant or "main"]
|
||||||
or variants[options.dark_variant or 'main']
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
--- local highlights = require('rose-pine.plugins.bufferline')
|
--- local highlights = require('rose-pine.plugins.bufferline')
|
||||||
--- require('bufferline').setup({ highlights = highlights })
|
--- require('bufferline').setup({ highlights = highlights })
|
||||||
|
|
||||||
local p = require('rose-pine.palette')
|
local p = require("rose-pine.palette")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
-- fill = {
|
-- fill = {
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
--- @usage
|
--- @usage
|
||||||
--- local highlights = require('rose-pine.plugins.galaxyline')
|
--- local highlights = require('rose-pine.plugins.galaxyline')
|
||||||
|
|
||||||
local p = require('rose-pine.palette')
|
local p = require("rose-pine.palette")
|
||||||
|
|
||||||
return {
|
return {
|
||||||
bg = p.surface,
|
bg = p.surface,
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,6 @@
|
||||||
--- local highlights = require('rose-pine.plugins.markid')
|
--- local highlights = require('rose-pine.plugins.markid')
|
||||||
--- require("nvim-treesitter.configs").setup({ markid = { enable = true, colors = highlights } })
|
--- require("nvim-treesitter.configs").setup({ markid = { enable = true, colors = highlights } })
|
||||||
|
|
||||||
local p = require('rose-pine.palette')
|
local p = require("rose-pine.palette")
|
||||||
|
|
||||||
return { p.foam, p.rose, p.iris }
|
return { p.foam, p.rose, p.iris }
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@
|
||||||
--- require('toggleterm').setup({ highlights = highlights })
|
--- require('toggleterm').setup({ highlights = highlights })
|
||||||
|
|
||||||
return {
|
return {
|
||||||
Normal = { link = 'Normal' },
|
Normal = { link = "Normal" },
|
||||||
NormalFloat = { link = 'Normal' },
|
NormalFloat = { link = "Normal" },
|
||||||
FloatBorder = { link = 'FloatBorder' },
|
FloatBorder = { link = "FloatBorder" },
|
||||||
SignColumn = { link = 'SignColumn' },
|
SignColumn = { link = "SignColumn" },
|
||||||
StatusLine = { link = 'StatusLine' },
|
StatusLine = { link = "StatusLine" },
|
||||||
StatusLineNC = { link = 'StatusLineNC' },
|
StatusLineNC = { link = "StatusLineNC" },
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,620 +0,0 @@
|
||||||
local M = {}
|
|
||||||
|
|
||||||
---@param options Options
|
|
||||||
function M._load(options)
|
|
||||||
local h = require('rose-pine.util').highlight
|
|
||||||
local p = require('rose-pine.palette')
|
|
||||||
|
|
||||||
local groups = options.groups or {}
|
|
||||||
local maybe = {
|
|
||||||
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 groups.background_nc
|
|
||||||
) or maybe.base
|
|
||||||
|
|
||||||
local float_background = options.dim_nc_background
|
|
||||||
and (options.disable_float_background and groups.panel_nc or groups.panel)
|
|
||||||
or maybe.surface
|
|
||||||
|
|
||||||
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 },
|
|
||||||
|
|
||||||
['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,
|
|
||||||
},
|
|
||||||
['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' },
|
|
||||||
['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' },
|
|
||||||
|
|
||||||
['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 },
|
|
||||||
|
|
||||||
['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 },
|
|
||||||
|
|
||||||
['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' },
|
|
||||||
|
|
||||||
['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' },
|
|
||||||
|
|
||||||
['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 },
|
|
||||||
|
|
||||||
-- healthcheck
|
|
||||||
['healthError'] = { fg = groups.error },
|
|
||||||
['healthSuccess'] = { fg = groups.info },
|
|
||||||
['healthWarning'] = { fg = groups.warn },
|
|
||||||
|
|
||||||
-- 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' },
|
|
||||||
|
|
||||||
-- 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
|
|
||||||
vim.g.terminal_color_1 = p.love -- red
|
|
||||||
vim.g.terminal_color_9 = p.love -- bright red
|
|
||||||
vim.g.terminal_color_2 = p.pine -- green
|
|
||||||
vim.g.terminal_color_10 = p.pine -- bright green
|
|
||||||
vim.g.terminal_color_3 = p.gold -- yellow
|
|
||||||
vim.g.terminal_color_11 = p.gold -- bright yellow
|
|
||||||
vim.g.terminal_color_4 = p.foam -- blue
|
|
||||||
vim.g.terminal_color_12 = p.foam -- bright blue
|
|
||||||
vim.g.terminal_color_5 = p.iris -- magenta
|
|
||||||
vim.g.terminal_color_13 = p.iris -- bright magenta
|
|
||||||
vim.g.terminal_color_6 = p.rose -- cyan
|
|
||||||
vim.g.terminal_color_14 = p.rose -- bright cyan
|
|
||||||
vim.g.terminal_color_7 = p.text -- white
|
|
||||||
vim.g.terminal_color_15 = p.text -- bright white
|
|
||||||
|
|
||||||
-- 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
|
|
||||||
|
|
||||||
return M
|
|
||||||
|
|
@ -1,71 +0,0 @@
|
||||||
local util = {}
|
|
||||||
|
|
||||||
local function byte(value, offset)
|
|
||||||
return bit.band(bit.rshift(value, offset), 0xFF)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function rgb(color)
|
|
||||||
color = vim.api.nvim_get_color_by_name(color)
|
|
||||||
|
|
||||||
if color == -1 then
|
|
||||||
color = vim.opt.background:get() == 'dark' and 000 or 255255255
|
|
||||||
end
|
|
||||||
|
|
||||||
return { byte(color, 16), byte(color, 8), byte(color, 0) }
|
|
||||||
end
|
|
||||||
|
|
||||||
local function parse_color(color)
|
|
||||||
if color == nil then
|
|
||||||
return print('invalid color')
|
|
||||||
end
|
|
||||||
|
|
||||||
color = color:lower()
|
|
||||||
|
|
||||||
if not color:find('#') and color ~= 'none' then
|
|
||||||
color = require('rose-pine.palette')[color]
|
|
||||||
or vim.api.nvim_get_color_by_name(color)
|
|
||||||
end
|
|
||||||
|
|
||||||
return color
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param fg string foreground color
|
|
||||||
---@param bg string background color
|
|
||||||
---@param alpha number number between 0 (background) and 1 (foreground)
|
|
||||||
util.blend = function(fg, bg, alpha)
|
|
||||||
local fg_rgb = rgb(parse_color(fg))
|
|
||||||
local bg_rgb = rgb(parse_color(bg))
|
|
||||||
|
|
||||||
local function blend_channel(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
|
|
||||||
|
|
||||||
return string.format(
|
|
||||||
'#%02X%02X%02X',
|
|
||||||
blend_channel(1),
|
|
||||||
blend_channel(2),
|
|
||||||
blend_channel(3)
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param group string
|
|
||||||
---@param color table<string, any>
|
|
||||||
util.highlight = function(group, color)
|
|
||||||
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 ''
|
|
||||||
|
|
||||||
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
|
|
||||||
66
lua/rose-pine/utilities.lua
Normal file
66
lua/rose-pine/utilities.lua
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
local utilities = {}
|
||||||
|
|
||||||
|
---@param color string
|
||||||
|
local function color_to_rgb(color)
|
||||||
|
local function byte(value, offset)
|
||||||
|
return bit.band(bit.rshift(value, offset), 0xFF)
|
||||||
|
end
|
||||||
|
|
||||||
|
local new_color = vim.api.nvim_get_color_by_name(color)
|
||||||
|
if new_color == -1 then
|
||||||
|
new_color = vim.opt.background:get() == "dark" and 000 or 255255255
|
||||||
|
end
|
||||||
|
|
||||||
|
return { byte(new_color, 16), byte(new_color, 8), byte(new_color, 0) }
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param color string Palette key or hex value
|
||||||
|
local function parse_color(color)
|
||||||
|
if color == nil then
|
||||||
|
return print("Invalid color")
|
||||||
|
end
|
||||||
|
|
||||||
|
color = color:lower()
|
||||||
|
|
||||||
|
if not color:find("#") and color ~= "NONE" then
|
||||||
|
color = require("rose-pine.palette")[color] or vim.api.nvim_get_color_by_name(color)
|
||||||
|
end
|
||||||
|
|
||||||
|
return color
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param fg string Foreground color
|
||||||
|
---@param bg string Background color
|
||||||
|
---@param alpha number Between 0 (background) and 1 (foreground)
|
||||||
|
local function blend(fg, bg, alpha)
|
||||||
|
local fg_rgb = color_to_rgb(fg)
|
||||||
|
local bg_rgb = color_to_rgb(bg)
|
||||||
|
|
||||||
|
local function blend_channel(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
|
||||||
|
|
||||||
|
return string.format("#%02X%02X%02X", blend_channel(1), blend_channel(2), blend_channel(3))
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param group string
|
||||||
|
---@param highlight table<string, any>
|
||||||
|
function utilities.highlight(group, highlight, blend_on)
|
||||||
|
local fg = highlight.fg and parse_color(highlight.fg) or "NONE"
|
||||||
|
local bg = highlight.bg and parse_color(highlight.bg) or "NONE"
|
||||||
|
local sp = highlight.sp and parse_color(highlight.sp) or "NONE"
|
||||||
|
|
||||||
|
if highlight.blend ~= nil and (highlight.blend >= 0 and highlight.blend <= 100) and bg ~= nil then
|
||||||
|
bg = blend(bg, blend_on or require("rose-pine.palette").base, highlight.blend / 100)
|
||||||
|
end
|
||||||
|
|
||||||
|
highlight.fg = fg
|
||||||
|
highlight.bg = bg
|
||||||
|
highlight.sp = sp
|
||||||
|
-- highlight = vim.tbl_extend("force", highlight, { fg = fg, bg = bg, sp = sp })
|
||||||
|
|
||||||
|
vim.api.nvim_set_hl(0, group, highlight)
|
||||||
|
end
|
||||||
|
|
||||||
|
return utilities
|
||||||
142
readme.md
142
readme.md
|
|
@ -11,30 +11,20 @@
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Install
|
## Getting started
|
||||||
|
|
||||||
**[Paq](https://github.com/savq/paq-nvim)**
|
Install `rose-pine/neovim` using your favourite plugin manager:
|
||||||
|
|
||||||
|
**paq-nvim**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
require('paq')({
|
{ 'rose-pine/neovim', as = 'rose-pine' }
|
||||||
{ 'rose-pine/neovim', as = 'rose-pine' }
|
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**[lazy.nvim](https://github.com/folke/lazy.nvim)**
|
**lazy.nvim**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
require("lazy").setup({
|
{ 'rose-pine/neovim', name = 'rose-pine' }
|
||||||
{ 'rose-pine/neovim', name = 'rose-pine' }
|
|
||||||
})
|
|
||||||
```
|
|
||||||
|
|
||||||
**[packer.nvim](https://github.com/wbthomason/packer.nvim)**
|
|
||||||
|
|
||||||
```lua
|
|
||||||
require('packer').startup(function(use)
|
|
||||||
use({ 'rose-pine/neovim', as = 'rose-pine' })
|
|
||||||
end)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Gallery
|
## Gallery
|
||||||
|
|
@ -53,75 +43,85 @@ end)
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
> [!NOTE]
|
> [!IMPORTANT]
|
||||||
> Options should be set **before** colorscheme
|
> Configure options _before_ setting colorscheme.
|
||||||
|
|
||||||
Variant respects `vim.o.background`, using dawn when light and `dark_variant` when dark
|
Rosé Pine has three variants: main, moon, and dawn. By default, `vim.o.background` is followed, using dawn when light and `dark_variant` when dark.
|
||||||
|
|
||||||
|
Colour values accept named colours from the [Rosé Pine palette](https://rosepinetheme.com/palette/ingredients/), e.g. "foam", or valid hex, e.g. "#fa8072".
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
require('rose-pine').setup({
|
require('rose-pine').setup({
|
||||||
--- @usage 'auto'|'main'|'moon'|'dawn'
|
variant = "auto", -- auto, main, moon, or dawn
|
||||||
variant = 'auto',
|
dark_variant = "main", -- main, moon, or dawn
|
||||||
--- @usage 'main'|'moon'|'dawn'
|
dim_inactive_windows = false,
|
||||||
dark_variant = 'main',
|
extend_background_behind_borders = false,
|
||||||
bold_vert_split = false,
|
|
||||||
dim_nc_background = false,
|
|
||||||
disable_background = false,
|
|
||||||
disable_float_background = false,
|
|
||||||
disable_italics = false,
|
|
||||||
|
|
||||||
--- @usage string hex value or named color from rosepinetheme.com/palette
|
styles = {
|
||||||
groups = {
|
bold = true,
|
||||||
background = 'base',
|
italic = true,
|
||||||
background_nc = '_experimental_nc',
|
transparency = false,
|
||||||
panel = 'surface',
|
},
|
||||||
panel_nc = 'base',
|
|
||||||
border = 'highlight_med',
|
|
||||||
comment = 'muted',
|
|
||||||
link = 'iris',
|
|
||||||
punctuation = 'subtle',
|
|
||||||
|
|
||||||
error = 'love',
|
groups = {
|
||||||
hint = 'iris',
|
border = "muted",
|
||||||
info = 'foam',
|
link = "iris",
|
||||||
warn = 'gold',
|
panel = "surface",
|
||||||
|
|
||||||
headings = {
|
error = "love",
|
||||||
h1 = 'iris',
|
hint = "iris",
|
||||||
h2 = 'foam',
|
info = "foam",
|
||||||
h3 = 'rose',
|
warn = "gold",
|
||||||
h4 = 'gold',
|
|
||||||
h5 = 'pine',
|
|
||||||
h6 = 'foam',
|
|
||||||
}
|
|
||||||
-- or set all headings at once
|
|
||||||
-- headings = 'subtle'
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Change specific vim highlight groups
|
git_add = "foam",
|
||||||
-- https://github.com/rose-pine/neovim/wiki/Recipes
|
git_change = "rose",
|
||||||
highlight_groups = {
|
git_delete = "love",
|
||||||
ColorColumn = { bg = 'rose' },
|
git_dirty = "rose",
|
||||||
|
git_ignore = "muted",
|
||||||
|
git_merge = "iris",
|
||||||
|
git_rename = "pine",
|
||||||
|
git_stage = "iris",
|
||||||
|
git_text = "rose",
|
||||||
|
git_untracked = "subtle",
|
||||||
|
|
||||||
-- Blend colours against the "base" background
|
headings = {
|
||||||
CursorLine = { bg = 'foam', blend = 10 },
|
h1 = "iris",
|
||||||
StatusLine = { fg = 'love', bg = 'love', blend = 10 },
|
h2 = "foam",
|
||||||
|
h3 = "rose",
|
||||||
|
h4 = "gold",
|
||||||
|
h5 = "pine",
|
||||||
|
h6 = "foam",
|
||||||
|
},
|
||||||
|
-- Alternatively, set all headings at once.
|
||||||
|
-- headings = "subtle",
|
||||||
|
},
|
||||||
|
|
||||||
-- By default each group adds to the existing config.
|
highlight_groups = {
|
||||||
-- If you only want to set what is written in this config exactly,
|
-- Comment = { fg = "foam" }
|
||||||
-- you can set the inherit option:
|
-- VertSplit = { fg = "muted", bg = "muted" }
|
||||||
Search = { bg = 'gold', inherit = false },
|
},
|
||||||
}
|
|
||||||
|
before_highlight = function(group, highlight, palette)
|
||||||
|
-- Disable all undercurls.
|
||||||
|
-- if highlight.undercurl then
|
||||||
|
-- highlight.undercurl = false
|
||||||
|
-- end
|
||||||
|
--
|
||||||
|
-- Change palette colour.
|
||||||
|
-- if highlight.fg == palette.pine then
|
||||||
|
-- highlight.fg = palette.foam
|
||||||
|
-- end
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Set colorscheme after options
|
|
||||||
vim.cmd('colorscheme rose-pine')
|
vim.cmd('colorscheme rose-pine')
|
||||||
|
-- vim.cmd('colorscheme rose-pine-main')
|
||||||
|
-- vim.cmd('colorscheme rose-pine-moon')
|
||||||
|
-- vim.cmd('colorscheme rose-pine-dawn')
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
We welcome and appreciate any help in creating a lovely experience for all.
|
We welcome and appreciate contributions of any kind. Create an issue or start a discussion for any proposed changes. Pull requests are encouraged for supporting additional plugins.
|
||||||
|
|
||||||
- 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)
|
Feel free to update the [wiki](https://github.com/rose-pine/neovim/wiki/) with any [recipes](https://github.com/rose-pine/neovim/wiki/Recipes).
|
||||||
- [Adding new highlight groups](https://github.com/rose-pine/neovim/issues/6#issuecomment-962466323)
|
|
||||||
- [Palette reference by name](https://rosepinetheme.com/palette)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue