mirror of
https://github.com/rose-pine/neovim.git
synced 2025-10-15 12:38:53 +02:00
Compare commits
No commits in common. "main" and "v0.0.1" have entirely different histories.
27 changed files with 630 additions and 2202 deletions
|
|
@ -1,12 +0,0 @@
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
charset = utf-8
|
|
||||||
end_of_line = lf
|
|
||||||
indent_style = tab
|
|
||||||
insert_final_newline = true
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
|
|
||||||
[*.{yaml,yml}]
|
|
||||||
indent_size = 2
|
|
||||||
indent_style = space
|
|
||||||
54
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
54
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
|
|
@ -1,54 +0,0 @@
|
||||||
name: Bug Report
|
|
||||||
description: File a bug/issue
|
|
||||||
title: "bug: "
|
|
||||||
labels: [bug]
|
|
||||||
body:
|
|
||||||
- type: markdown
|
|
||||||
attributes:
|
|
||||||
value: |
|
|
||||||
**Before** reporting an issue, make sure to read the [documentation](https://github.com/rose-pine/neovim) and search [existing issues](https://github.com/rose-pine/neovim/issues). Usage questions such as ***"How do I...?"*** belong in [Discussions](https://github.com/rose-pine/neovim/discussions) and will be closed.
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: "Neovim version (nvim -v)"
|
|
||||||
placeholder: "0.8.0 commit db1b0ee3b30f"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: "Terminal / multiplexer"
|
|
||||||
placeholder: "Kitty / tmux"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Describe the bug
|
|
||||||
description: A clear and concise description of what the bug is. Please include screenshots if possible and any related errors you see in Neovim.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Repro
|
|
||||||
description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua`
|
|
||||||
value: |
|
|
||||||
vim.o.packpath = "/tmp/nvim/site"
|
|
||||||
|
|
||||||
local plugins = {
|
|
||||||
rose_pine = "https://github.com/rose-pine/neovim",
|
|
||||||
-- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE
|
|
||||||
}
|
|
||||||
|
|
||||||
for name, url in pairs(plugins) do
|
|
||||||
local install_path = "/tmp/nvim/site/pack/test/start/" .. name
|
|
||||||
if vim.fn.isdirectory(install_path) == 0 then
|
|
||||||
vim.fn.system({ "git", "clone", "--depth=1", url, install_path })
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
require("rose-pine").setup({
|
|
||||||
-- ADD ROSÉ PINE CONFIG THAT IS _NECESSARY_ TO REPRODUCE THE ISSUE
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd("colorscheme rose-pine")
|
|
||||||
render: Lua
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
17
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
17
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
|
|
@ -1,17 +0,0 @@
|
||||||
name: Feature Request
|
|
||||||
description: Suggest a new feature
|
|
||||||
title: "feature: "
|
|
||||||
labels: [enhancement]
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
attributes:
|
|
||||||
label: Describe the solution you'd like
|
|
||||||
description: A clear and concise description of what you want to happen.
|
|
||||||
- type: textarea
|
|
||||||
validations:
|
|
||||||
required: false
|
|
||||||
attributes:
|
|
||||||
label: Additional context
|
|
||||||
description: Add any other context or screenshots about the feature request here.
|
|
||||||
82
changelog.md
82
changelog.md
|
|
@ -1,82 +0,0 @@
|
||||||
# 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 +0,0 @@
|
||||||
package.loaded["rose-pine.palette"] = nil
|
|
||||||
require("rose-pine").colorscheme("dawn")
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package.loaded["rose-pine.palette"] = nil
|
|
||||||
require("rose-pine").colorscheme("main")
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package.loaded["rose-pine.palette"] = nil
|
|
||||||
require("rose-pine").colorscheme("moon")
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
package.loaded["rose-pine.palette"] = nil
|
|
||||||
require("rose-pine").colorscheme()
|
|
||||||
9
colors/rose-pine.vim
Normal file
9
colors/rose-pine.vim
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
lua << EOF
|
||||||
|
package.loaded['rose-pine'] = nil
|
||||||
|
package.loaded['rose-pine.util'] = nil
|
||||||
|
package.loaded['rose-pine.palette'] = nil
|
||||||
|
package.loaded['rose-pine.theme'] = nil
|
||||||
|
package.loaded['rose-pine.functions'] = nil
|
||||||
|
|
||||||
|
require('rose-pine').set()
|
||||||
|
EOF
|
||||||
21
license
21
license
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2023 Rosé Pine
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
local p = require("rose-pine.palette")
|
|
||||||
local config = require("rose-pine.config")
|
|
||||||
|
|
||||||
local bg_base = p.base
|
|
||||||
if config.options.styles.transparency then
|
|
||||||
bg_base = "NONE"
|
|
||||||
end
|
|
||||||
|
|
||||||
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 = bg_base, fg = p.subtle, gui = "bold" },
|
|
||||||
b = { bg = bg_base, fg = p.subtle },
|
|
||||||
c = { bg = bg_base, fg = p.subtle, gui = "italic" },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +1,34 @@
|
||||||
local p = require("rose-pine.palette")
|
local colors = require('rose-pine.palette')
|
||||||
local config = require("rose-pine.config")
|
|
||||||
|
|
||||||
local bg_base = p.surface
|
|
||||||
if config.options.styles.transparency then
|
|
||||||
bg_base = "NONE"
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
normal = {
|
normal = {
|
||||||
a = { bg = p.rose, fg = p.base, gui = "bold" },
|
a = { bg = colors.rose, fg = colors.base, gui = 'bold' },
|
||||||
b = { bg = p.overlay, fg = p.rose },
|
b = { bg = colors.overlay, fg = colors.rose },
|
||||||
c = { bg = bg_base, fg = p.text },
|
c = { bg = colors.base, fg = colors.text },
|
||||||
},
|
},
|
||||||
insert = {
|
insert = {
|
||||||
a = { bg = p.foam, fg = p.base, gui = "bold" },
|
a = { bg = colors.foam, fg = colors.base, gui = 'bold' },
|
||||||
b = { bg = p.overlay, fg = p.foam },
|
b = { bg = colors.overlay, fg = colors.foam },
|
||||||
c = { bg = bg_base, fg = p.text },
|
c = { bg = colors.base, fg = colors.text },
|
||||||
},
|
},
|
||||||
visual = {
|
visual = {
|
||||||
a = { bg = p.iris, fg = p.base, gui = "bold" },
|
a = { bg = colors.iris, fg = colors.base, gui = 'bold' },
|
||||||
b = { bg = p.overlay, fg = p.iris },
|
b = { bg = colors.overlay, fg = colors.iris },
|
||||||
c = { bg = bg_base, fg = p.text },
|
c = { bg = colors.base, fg = colors.text },
|
||||||
},
|
},
|
||||||
replace = {
|
replace = {
|
||||||
a = { bg = p.pine, fg = p.base, gui = "bold" },
|
a = { bg = colors.pine, fg = colors.base, gui = 'bold' },
|
||||||
b = { bg = p.overlay, fg = p.pine },
|
b = { bg = colors.overlay, fg = colors.pine },
|
||||||
c = { bg = bg_base, fg = p.text },
|
c = { bg = colors.base, fg = colors.text },
|
||||||
},
|
},
|
||||||
command = {
|
command = {
|
||||||
a = { bg = p.love, fg = p.base, gui = "bold" },
|
a = { bg = colors.love, fg = colors.base, gui = 'bold' },
|
||||||
b = { bg = p.overlay, fg = p.love },
|
b = { bg = colors.overlay, fg = colors.love },
|
||||||
c = { bg = bg_base, fg = p.text },
|
c = { bg = colors.base, fg = colors.text },
|
||||||
},
|
},
|
||||||
inactive = {
|
inactive = {
|
||||||
a = { bg = bg_base, fg = p.muted, gui = "bold" },
|
a = { bg = colors.base, fg = colors.inactive, gui = 'bold' },
|
||||||
b = { bg = bg_base, fg = p.muted },
|
b = { bg = colors.base, fg = colors.inactive },
|
||||||
c = { bg = bg_base, fg = p.muted },
|
c = { bg = colors.base, fg = colors.inactive },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1242
lua/rose-pine.lua
1242
lua/rose-pine.lua
File diff suppressed because it is too large
Load diff
|
|
@ -1,176 +0,0 @@
|
||||||
---@alias Variant "main" | "moon" | "dawn"
|
|
||||||
---@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 { link: string, inherit: boolean } | { fg: string, bg: string, sp: string, bold: boolean, italic: boolean, undercurl: boolean, underline: boolean, underdouble: boolean, underdotted: boolean, underdashed: boolean, strikethrough: boolean, inherit: boolean }
|
|
||||||
|
|
||||||
local config = {}
|
|
||||||
|
|
||||||
---@class Options
|
|
||||||
config.options = {
|
|
||||||
---Set the desired variant: "auto" will follow the vim background,
|
|
||||||
---defaulting to `dark_variant` or "main" for dark and "dawn" for light.
|
|
||||||
---@type "auto" | Variant
|
|
||||||
variant = "auto",
|
|
||||||
|
|
||||||
---Set the desired dark variant when `options.variant` is set to "auto".
|
|
||||||
---@type Variant
|
|
||||||
dark_variant = "main",
|
|
||||||
|
|
||||||
---Differentiate between active and inactive windows and panels.
|
|
||||||
dim_inactive_windows = false,
|
|
||||||
|
|
||||||
---Extend background behind borders. Appearance differs based on which
|
|
||||||
---border characters you are using.
|
|
||||||
extend_background_behind_borders = true,
|
|
||||||
|
|
||||||
enable = {
|
|
||||||
legacy_highlights = true,
|
|
||||||
migrations = true,
|
|
||||||
terminal = true,
|
|
||||||
},
|
|
||||||
|
|
||||||
styles = {
|
|
||||||
bold = true,
|
|
||||||
italic = true,
|
|
||||||
transparency = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
---@type table<string, table<string, string>>
|
|
||||||
palette = {},
|
|
||||||
|
|
||||||
---@type table<string, string | PaletteColor>
|
|
||||||
groups = {
|
|
||||||
border = "muted",
|
|
||||||
link = "iris",
|
|
||||||
panel = "surface",
|
|
||||||
|
|
||||||
error = "love",
|
|
||||||
hint = "iris",
|
|
||||||
info = "foam",
|
|
||||||
ok = "leaf",
|
|
||||||
warn = "gold",
|
|
||||||
note = "pine",
|
|
||||||
todo = "rose",
|
|
||||||
|
|
||||||
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
|
|
||||||
h1 = "iris",
|
|
||||||
h2 = "foam",
|
|
||||||
h3 = "rose",
|
|
||||||
h4 = "gold",
|
|
||||||
h5 = "pine",
|
|
||||||
h6 = "leaf",
|
|
||||||
|
|
||||||
---@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",
|
|
||||||
---@deprecated Expects a table with values h1...h6
|
|
||||||
-- headings = "text",
|
|
||||||
},
|
|
||||||
|
|
||||||
---@type table<string, Highlight>
|
|
||||||
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.highlight_groups["NormalFloat"]`
|
|
||||||
-- disable_float_background = false,
|
|
||||||
---@deprecated Replaced by `options.styles.italic`
|
|
||||||
-- disable_italics = false,
|
|
||||||
---@deprecated Replaced by `options.highlight_groups`
|
|
||||||
-- bold_vert_split = false
|
|
||||||
}
|
|
||||||
|
|
||||||
local function migrate(options)
|
|
||||||
if options.bold_vert_split then
|
|
||||||
local border = options.groups.border or "muted"
|
|
||||||
options.highlight_groups["VertSplit"] = { fg = border, bg = border }
|
|
||||||
options.highlight_groups["WinSeparator"] = { fg = border, bg = border }
|
|
||||||
end
|
|
||||||
|
|
||||||
if options.disable_background then
|
|
||||||
options.highlight_groups["Normal"] = { bg = "NONE" }
|
|
||||||
end
|
|
||||||
|
|
||||||
if options.disable_float_background then
|
|
||||||
options.highlight_groups["NormalFloat"] = { bg = "NONE" }
|
|
||||||
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 and 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 = not (options.disable_bold or options.disable_bolds) and options.styles.bold or false
|
|
||||||
|
|
||||||
-- Similar to bold options, `disable_italic` never existed but could be a
|
|
||||||
-- common typo of the actual `disable_italics`.
|
|
||||||
options.styles.italic = not (options.disable_italic or options.disable_italics) and options.styles.italic or false
|
|
||||||
|
|
||||||
-- Set h1 through h6 to the same color if only one is specified
|
|
||||||
if type(options.groups.headings) == "string" then
|
|
||||||
options.groups.h1 = options.groups.headings
|
|
||||||
options.groups.h2 = options.groups.headings
|
|
||||||
options.groups.h3 = options.groups.headings
|
|
||||||
options.groups.h4 = options.groups.headings
|
|
||||||
options.groups.h5 = options.groups.headings
|
|
||||||
options.groups.h6 = options.groups.headings
|
|
||||||
elseif options.groups.headings == "table" then
|
|
||||||
options.groups.h1 = options.groups.headings.h1 or options.groups.h1
|
|
||||||
options.groups.h2 = options.groups.headings.h2 or options.groups.h2
|
|
||||||
options.groups.h3 = options.groups.headings.h3 or options.groups.h3
|
|
||||||
options.groups.h4 = options.groups.headings.h4 or options.groups.h4
|
|
||||||
options.groups.h5 = options.groups.headings.h5 or options.groups.h5
|
|
||||||
options.groups.h6 = options.groups.headings.h6 or options.groups.h6
|
|
||||||
end
|
|
||||||
options.groups.headings = nil
|
|
||||||
|
|
||||||
return options
|
|
||||||
end
|
|
||||||
|
|
||||||
---@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
|
|
||||||
35
lua/rose-pine/functions.lua
Normal file
35
lua/rose-pine/functions.lua
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
local select_variant = function(variant)
|
||||||
|
vim.g.rose_pine_variant = variant
|
||||||
|
local formatted_variant = ''
|
||||||
|
if variant == 'base' then
|
||||||
|
formatted_variant = ''
|
||||||
|
else
|
||||||
|
formatted_variant = variant:sub(1, 1):upper() .. variant:sub(2)
|
||||||
|
end
|
||||||
|
print('Rosé Pine', formatted_variant)
|
||||||
|
vim.cmd([[colorscheme rose-pine]])
|
||||||
|
end
|
||||||
|
|
||||||
|
local toggle_variant = function(variants)
|
||||||
|
local options = variants or { 'base', 'moon', 'dawn' }
|
||||||
|
local index = {}
|
||||||
|
for k, v in pairs(options) do
|
||||||
|
index[v] = k
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.g.rose_pine_variant_switch == nil then
|
||||||
|
-- Ensure theme toggles from correct position
|
||||||
|
vim.g.rose_pine_variant_switch = index[vim.g.rose_pine_variant] or 0
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.g.rose_pine_variant_switch = (
|
||||||
|
vim.g.rose_pine_variant_switch % table.getn(options)
|
||||||
|
) + 1
|
||||||
|
|
||||||
|
select_variant(options[vim.g.rose_pine_variant_switch])
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
select_variant = select_variant,
|
||||||
|
toggle_variant = toggle_variant,
|
||||||
|
}
|
||||||
7
lua/rose-pine/init.lua
Normal file
7
lua/rose-pine/init.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
local util = require('rose-pine.util')
|
||||||
|
|
||||||
|
local set = function()
|
||||||
|
util.load()
|
||||||
|
end
|
||||||
|
|
||||||
|
return { set = set }
|
||||||
|
|
@ -1,78 +1,64 @@
|
||||||
local options = require("rose-pine.config").options
|
local palette = {
|
||||||
local variants = {
|
base = '#191724',
|
||||||
main = {
|
surface = '#1f1d2e',
|
||||||
_nc = "#16141f",
|
overlay = '#26233a',
|
||||||
base = "#191724",
|
inactive = '#555169',
|
||||||
surface = "#1f1d2e",
|
subtle = '#6e6a86',
|
||||||
overlay = "#26233a",
|
text = '#e0def4',
|
||||||
muted = "#6e6a86",
|
love = '#eb6f92',
|
||||||
subtle = "#908caa",
|
gold = '#f6c177',
|
||||||
text = "#e0def4",
|
rose = '#ebbcba',
|
||||||
love = "#eb6f92",
|
pine = '#31748f',
|
||||||
gold = "#f6c177",
|
foam = '#9ccfd8',
|
||||||
rose = "#ebbcba",
|
iris = '#c4a7e7',
|
||||||
pine = "#31748f",
|
highlight = '#2a2837',
|
||||||
foam = "#9ccfd8",
|
highlight_inactive = '#211f2d',
|
||||||
iris = "#c4a7e7",
|
highlight_overlay = '#3a384a',
|
||||||
leaf = "#95b1ac",
|
none = 'NONE',
|
||||||
highlight_low = "#21202e",
|
|
||||||
highlight_med = "#403d52",
|
|
||||||
highlight_high = "#524f67",
|
|
||||||
none = "NONE",
|
|
||||||
},
|
|
||||||
moon = {
|
|
||||||
_nc = "#1f1d30",
|
|
||||||
base = "#232136",
|
|
||||||
surface = "#2a273f",
|
|
||||||
overlay = "#393552",
|
|
||||||
muted = "#6e6a86",
|
|
||||||
subtle = "#908caa",
|
|
||||||
text = "#e0def4",
|
|
||||||
love = "#eb6f92",
|
|
||||||
gold = "#f6c177",
|
|
||||||
rose = "#ea9a97",
|
|
||||||
pine = "#3e8fb0",
|
|
||||||
foam = "#9ccfd8",
|
|
||||||
iris = "#c4a7e7",
|
|
||||||
leaf = "#95b1ac",
|
|
||||||
highlight_low = "#2a283e",
|
|
||||||
highlight_med = "#44415a",
|
|
||||||
highlight_high = "#56526e",
|
|
||||||
none = "NONE",
|
|
||||||
},
|
|
||||||
dawn = {
|
|
||||||
_nc = "#f8f0e7",
|
|
||||||
base = "#faf4ed",
|
|
||||||
surface = "#fffaf3",
|
|
||||||
overlay = "#f2e9e1",
|
|
||||||
muted = "#9893a5",
|
|
||||||
subtle = "#797593",
|
|
||||||
text = "#464261",
|
|
||||||
love = "#b4637a",
|
|
||||||
gold = "#ea9d34",
|
|
||||||
rose = "#d7827e",
|
|
||||||
pine = "#286983",
|
|
||||||
foam = "#56949f",
|
|
||||||
iris = "#907aa9",
|
|
||||||
leaf = "#6d8f89",
|
|
||||||
highlight_low = "#f4ede8",
|
|
||||||
highlight_med = "#dfdad9",
|
|
||||||
highlight_high = "#cecacd",
|
|
||||||
none = "NONE",
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.palette ~= nil and next(options.palette) then
|
if
|
||||||
-- handle variant specific overrides
|
vim.g.rose_pine_variant == 'dawn'
|
||||||
for variant_name, override_palette in pairs(options.palette) do
|
or vim.g.rose_pine_variant == 'rose-pine-dawn'
|
||||||
if variants[variant_name] then
|
then
|
||||||
variants[variant_name] = vim.tbl_extend("force", variants[variant_name], override_palette or {})
|
palette = {
|
||||||
end
|
base = '#faf4ed',
|
||||||
end
|
surface = '#fffaf3',
|
||||||
|
overlay = '#f2e9de',
|
||||||
|
inactive = '#9893a5',
|
||||||
|
subtle = '#6e6a86',
|
||||||
|
text = '#575279',
|
||||||
|
love = '#b4637a',
|
||||||
|
gold = '#ea9d34',
|
||||||
|
rose = '#d7827e',
|
||||||
|
pine = '#286983',
|
||||||
|
foam = '#56949f',
|
||||||
|
iris = '#907aa9',
|
||||||
|
highlight = '#eee9e6',
|
||||||
|
highlight_inactive = '#f2ede9',
|
||||||
|
highlight_overlay = '#e4dfde',
|
||||||
|
}
|
||||||
|
elseif
|
||||||
|
vim.g.rose_pine_variant == 'moon'
|
||||||
|
or vim.g.rose_pine_variant == 'rose-pine-moon'
|
||||||
|
then
|
||||||
|
palette = {
|
||||||
|
base = '#232136',
|
||||||
|
surface = '#2a273f',
|
||||||
|
overlay = '#393552',
|
||||||
|
inactive = '#59546d',
|
||||||
|
subtle = '#817c9c',
|
||||||
|
text = '#e0def4',
|
||||||
|
love = '#eb6f92',
|
||||||
|
gold = '#f6c177',
|
||||||
|
rose = '#ea9a97',
|
||||||
|
pine = '#3e8fb0',
|
||||||
|
foam = '#9ccfd8',
|
||||||
|
iris = '#c4a7e7',
|
||||||
|
highlight = '#312f44',
|
||||||
|
highlight_inactive = '#2a283d',
|
||||||
|
highlight_overlay = '#3f3c53',
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
if variants[options.variant] ~= nil then
|
return palette
|
||||||
return variants[options.variant]
|
|
||||||
end
|
|
||||||
|
|
||||||
return vim.o.background == "light" and variants.dawn or variants[options.dark_variant or "main"]
|
|
||||||
|
|
|
||||||
|
|
@ -1,223 +0,0 @@
|
||||||
--- Rosé Pine for bufferline
|
|
||||||
--- https://github.com/akinsho/bufferline.nvim
|
|
||||||
---
|
|
||||||
--- @usage
|
|
||||||
--- local highlights = require("rose-pine.plugins.bufferline")
|
|
||||||
--- require("bufferline").setup({ highlights = highlights })
|
|
||||||
|
|
||||||
local p = require("rose-pine.palette")
|
|
||||||
|
|
||||||
return {
|
|
||||||
-- fill = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- background = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- tab = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
tab_selected = {
|
|
||||||
fg = p.text,
|
|
||||||
bg = p.overlay,
|
|
||||||
},
|
|
||||||
-- tab_close = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- close_button = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- close_button_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- close_button_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
buffer_visible = {
|
|
||||||
fg = p.subtle,
|
|
||||||
bg = p.base,
|
|
||||||
},
|
|
||||||
buffer_selected = {
|
|
||||||
fg = p.text,
|
|
||||||
bg = p.surface,
|
|
||||||
bold = true,
|
|
||||||
italic = true,
|
|
||||||
},
|
|
||||||
-- diagnostic = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- diagnostic_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- diagnostic_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- },
|
|
||||||
-- info = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- info_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- info_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- info_diagnostic = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- info_diagnostic_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- info_diagnostic_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning_diagnostic = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning_diagnostic_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- warning_diagnostic_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = warning_diagnostic_fg,
|
|
||||||
-- },
|
|
||||||
-- error = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- error_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- error_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- error_diagnostic = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- error_diagnostic_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- error_diagnostic_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- sp = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- modified = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- modified_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- modified_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- duplicate_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- italic = true,
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- duplicate_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- italic = true,
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- duplicate = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- italic = true,
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- separator_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- separator_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- separator = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- indicator_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- },
|
|
||||||
-- pick_selected = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- italic = true,
|
|
||||||
-- },
|
|
||||||
-- pick_visible = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- },
|
|
||||||
-- pick = {
|
|
||||||
-- fg = "<color-value-here>",
|
|
||||||
-- bg = "<color-value-here>",
|
|
||||||
-- bold = true,
|
|
||||||
-- italic = true,
|
|
||||||
-- },
|
|
||||||
}
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
--- Rosé Pine for galaxyline fork
|
|
||||||
--- https://github.com/NTBBloodbath/galaxyline.nvim
|
|
||||||
---
|
|
||||||
--- @usage
|
|
||||||
--- local highlights = require("rose-pine.plugins.galaxyline")
|
|
||||||
|
|
||||||
local p = require("rose-pine.palette")
|
|
||||||
|
|
||||||
return {
|
|
||||||
bg = p.surface,
|
|
||||||
fg = p.text,
|
|
||||||
fg_alt = p.subtle,
|
|
||||||
yellow = p.gold,
|
|
||||||
cyan = p.rose,
|
|
||||||
green = p.pine,
|
|
||||||
orange = p.muted,
|
|
||||||
magenta = p.iris,
|
|
||||||
blue = p.foam,
|
|
||||||
red = p.love,
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
--- Rosé Pine for markid
|
|
||||||
--- https://github.com/David-Kunz/markid
|
|
||||||
---
|
|
||||||
--- @usage
|
|
||||||
--- local highlights = require("rose-pine.plugins.markid")
|
|
||||||
--- require("nvim-treesitter.configs").setup({ markid = { enable = true, colors = highlights } })
|
|
||||||
|
|
||||||
local p = require("rose-pine.palette")
|
|
||||||
|
|
||||||
return { p.foam, p.rose, p.iris }
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
--- Rosé Pine for Obsidian(epwalsh)
|
|
||||||
--- https://github.com/epwalsh/obsidian.nvim
|
|
||||||
---
|
|
||||||
--- @usage
|
|
||||||
--- local highlights = require("rose-pine.plugins.obsidian")
|
|
||||||
--- require("obsidian").setup({ ui = {hl_groups = highlights} })
|
|
||||||
|
|
||||||
local p = require("rose-pine.palette")
|
|
||||||
|
|
||||||
return {
|
|
||||||
ObsidianBullet = { fg = p.muted },
|
|
||||||
ObsidianRefText = { underline = true, fg = p.iris },
|
|
||||||
ObsidianDone = { bold = true, fg = p.foam }
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
--- Rosé Pine for toggleterm
|
|
||||||
--- https://github.com/akinsho/toggleterm.nvim
|
|
||||||
---
|
|
||||||
--- @usage
|
|
||||||
--- local highlights = require("rose-pine.plugins.toggleterm")
|
|
||||||
--- require("toggleterm").setup({ highlights = highlights })
|
|
||||||
|
|
||||||
return {
|
|
||||||
Normal = { link = "Normal" },
|
|
||||||
NormalFloat = { link = "Normal" },
|
|
||||||
FloatBorder = { link = "FloatBorder" },
|
|
||||||
SignColumn = { link = "SignColumn" },
|
|
||||||
StatusLine = { link = "StatusLine" },
|
|
||||||
StatusLineNC = { link = "StatusLineNC" },
|
|
||||||
}
|
|
||||||
353
lua/rose-pine/theme.lua
Normal file
353
lua/rose-pine/theme.lua
Normal file
|
|
@ -0,0 +1,353 @@
|
||||||
|
local p = require('rose-pine.palette')
|
||||||
|
|
||||||
|
local theme = {}
|
||||||
|
|
||||||
|
theme.loadSyntax = function()
|
||||||
|
local syntax = {
|
||||||
|
Boolean = { fg = p.gold },
|
||||||
|
Character = { fg = p.gold },
|
||||||
|
Comment = {
|
||||||
|
fg = p.subtle,
|
||||||
|
style = vim.g.rose_pine_enable_italics and 'italic',
|
||||||
|
},
|
||||||
|
Conditional = { fg = p.pine },
|
||||||
|
Constant = { fg = p.gold },
|
||||||
|
Debug = { fg = p.rose },
|
||||||
|
Define = { fg = p.iris },
|
||||||
|
Delimiter = { fg = p.rose },
|
||||||
|
Error = { fg = p.love },
|
||||||
|
Exception = { fg = p.pine },
|
||||||
|
Float = { fg = p.gold },
|
||||||
|
Function = { fg = p.rose },
|
||||||
|
Identifier = { fg = p.rose },
|
||||||
|
-- Ignore = { fg = '' },
|
||||||
|
Include = { fg = p.iris },
|
||||||
|
Keyword = { fg = p.pine },
|
||||||
|
Label = { fg = p.foam },
|
||||||
|
Macro = { fg = p.iris },
|
||||||
|
Number = { fg = p.gold },
|
||||||
|
Operator = { fg = p.subtle },
|
||||||
|
PreCondit = { fg = p.iris },
|
||||||
|
PreProc = { fg = p.iris },
|
||||||
|
Repeat = { fg = p.pine },
|
||||||
|
Special = { fg = p.rose },
|
||||||
|
SpecialChar = { fg = p.rose },
|
||||||
|
SpecialComment = { fg = p.iris },
|
||||||
|
Statement = { fg = p.pine },
|
||||||
|
StorageClass = { fg = p.foam },
|
||||||
|
String = { fg = p.gold },
|
||||||
|
Structure = { fg = p.foam },
|
||||||
|
Tag = { fg = p.rose },
|
||||||
|
Title = { fg = p.text },
|
||||||
|
Todo = { fg = p.iris },
|
||||||
|
Type = { fg = p.foam },
|
||||||
|
Typedef = { fg = p.foam },
|
||||||
|
Underlined = { fg = p.foam, style = 'underline' },
|
||||||
|
|
||||||
|
-- html
|
||||||
|
htmlArg = { fg = p.iris },
|
||||||
|
htmlEndTag = { fg = p.subtle },
|
||||||
|
htmlLink = { fg = p.text },
|
||||||
|
htmlTag = { fg = p.subtle },
|
||||||
|
htmlTagN = { fg = p.love },
|
||||||
|
htmlTagName = { fg = p.foam },
|
||||||
|
}
|
||||||
|
|
||||||
|
return syntax
|
||||||
|
end
|
||||||
|
|
||||||
|
theme.loadEditor = function()
|
||||||
|
local editor = {
|
||||||
|
-- ColorColumn = {},
|
||||||
|
-- Conceal = {},
|
||||||
|
-- Cursor = {},
|
||||||
|
-- CursorColumn = {},
|
||||||
|
-- CursorIM = {},
|
||||||
|
CursorLine = { bg = p.highlight_inactive },
|
||||||
|
CursorLineNr = { fg = p.text },
|
||||||
|
DarkenedPanel = { bg = p.surface },
|
||||||
|
DarkenedStatusline = { bg = p.surface },
|
||||||
|
DiffAdd = { fg = p.foam },
|
||||||
|
DiffChange = { fg = p.rose },
|
||||||
|
DiffDelete = { fg = p.love },
|
||||||
|
DiffText = { fg = p.text },
|
||||||
|
Directory = { fg = p.foam, bg = p.none },
|
||||||
|
-- EndOfBuffer = {},
|
||||||
|
ErrorMsg = { fg = p.love, style = 'bold' },
|
||||||
|
FloatBorder = { fg = p.highlight, bg = p.surface },
|
||||||
|
-- FoldColumn = {},
|
||||||
|
Folded = { fg = p.text, bg = p.surface },
|
||||||
|
IncSearch = { bg = p.highlight },
|
||||||
|
LineNr = { fg = p.inactive },
|
||||||
|
MatchParen = { fg = p.text, bg = p.overlay },
|
||||||
|
-- ModeMsg = {},
|
||||||
|
MoreMsg = { fg = p.iris },
|
||||||
|
NonText = { fg = p.inactive },
|
||||||
|
Normal = { fg = p.text },
|
||||||
|
-- NormalFloat = {},
|
||||||
|
Pmenu = { fg = p.subtle, bg = p.surface },
|
||||||
|
PmenuSbar = { bg = p.overlay },
|
||||||
|
PmenuSel = { fg = p.text, bg = p.overlay },
|
||||||
|
PmenuThumb = { bg = p.inactive },
|
||||||
|
Question = { fg = p.gold },
|
||||||
|
-- QuickFixLine = {},
|
||||||
|
Search = { fg = p.iris, bg = p.highlight_overlay },
|
||||||
|
SpecialKey = { fg = p.foam },
|
||||||
|
SpellBad = { style = 'undercurl', sp = p.love },
|
||||||
|
SpellCap = { style = 'undercurl', sp = p.subtle },
|
||||||
|
SpellLocal = { style = 'undercurl', sp = p.subtle },
|
||||||
|
SpellRare = { style = 'undercurl', sp = p.subtle },
|
||||||
|
SignColumn = {},
|
||||||
|
StatusLine = { fg = p.text, bg = p.surface },
|
||||||
|
StatusLineNC = { fg = p.subtle, bg = p.surface },
|
||||||
|
-- StatusLineTerm = {},
|
||||||
|
-- StatusLineTermNC = {},
|
||||||
|
-- TabLine = {},
|
||||||
|
-- TabLineFill = {},
|
||||||
|
-- TabLineSel = {},
|
||||||
|
Title = { fg = p.rose },
|
||||||
|
VertSplit = { fg = p.overlay },
|
||||||
|
Visual = { bg = p.highlight },
|
||||||
|
-- VisualNOS = {},
|
||||||
|
WarningMsg = { fg = p.gold },
|
||||||
|
-- Whitespace = {},
|
||||||
|
-- WildMenu = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
if vim.g.rose_pine_disable_background == true then
|
||||||
|
editor.Normal = { fg = p.text, bg = p.none }
|
||||||
|
editor.SignColumn = { fg = p.text, bg = p.none }
|
||||||
|
else
|
||||||
|
editor.Normal = { fg = p.text, bg = p.base }
|
||||||
|
editor.SignColumn = { fg = p.text, bg = p.base }
|
||||||
|
end
|
||||||
|
|
||||||
|
return editor
|
||||||
|
end
|
||||||
|
|
||||||
|
theme.loadTerminal = function()
|
||||||
|
-- black
|
||||||
|
vim.g.terminal_color_0 = p.overlay
|
||||||
|
vim.g.terminal_color_8 = p.subtle
|
||||||
|
-- red
|
||||||
|
vim.g.terminal_color_1 = p.love
|
||||||
|
vim.g.terminal_color_9 = p.love
|
||||||
|
-- green
|
||||||
|
vim.g.terminal_color_2 = p.pine
|
||||||
|
vim.g.terminal_color_10 = p.pine
|
||||||
|
-- yellow
|
||||||
|
vim.g.terminal_color_3 = p.gold
|
||||||
|
vim.g.terminal_color_11 = p.gold
|
||||||
|
-- blue
|
||||||
|
vim.g.terminal_color_4 = p.foam
|
||||||
|
vim.g.terminal_color_12 = p.foam
|
||||||
|
-- magenta
|
||||||
|
vim.g.terminal_color_5 = p.iris
|
||||||
|
vim.g.terminal_color_13 = p.iris
|
||||||
|
-- cyan
|
||||||
|
vim.g.terminal_color_6 = p.rose
|
||||||
|
vim.g.terminal_color_14 = p.rose
|
||||||
|
-- white
|
||||||
|
vim.g.terminal_color_7 = p.text
|
||||||
|
vim.g.terminal_color_15 = p.text
|
||||||
|
end
|
||||||
|
|
||||||
|
theme.loadTreesitter = function()
|
||||||
|
local treesitter = {
|
||||||
|
-- TSAnnotation = {},
|
||||||
|
-- TSAttribute = {},
|
||||||
|
TSBoolean = { fg = p.rose },
|
||||||
|
-- TSCharacter = {},
|
||||||
|
TSComment = {
|
||||||
|
fg = p.subtle,
|
||||||
|
style = vim.g.rose_pine_enable_italics and 'italic',
|
||||||
|
},
|
||||||
|
-- TSConditional = {},
|
||||||
|
TSConstBuiltin = { fg = p.love },
|
||||||
|
-- TSConstMacro = {},
|
||||||
|
TSConstant = { fg = p.foam },
|
||||||
|
TSConstructor = { fg = p.foam },
|
||||||
|
-- TSEmphasis = {},
|
||||||
|
-- TSError = {},
|
||||||
|
-- TSException = {},
|
||||||
|
-- TSField = {},
|
||||||
|
-- TSFloat = {},
|
||||||
|
TSFuncBuiltin = { fg = p.love },
|
||||||
|
-- TSFuncMacro = {},
|
||||||
|
TSFunction = { fg = p.rose },
|
||||||
|
TSInclude = { fg = p.pine },
|
||||||
|
TSKeyword = { fg = p.pine },
|
||||||
|
-- TSKeywordFunction = {},
|
||||||
|
TSKeywordOperator = { fg = p.pine },
|
||||||
|
TSLabel = { fg = p.foam },
|
||||||
|
-- TSLiteral = {},
|
||||||
|
-- TSMethod = {},
|
||||||
|
-- TSNamespace = {},
|
||||||
|
-- TSNone = {},
|
||||||
|
-- TSNumber = {},
|
||||||
|
TSOperator = { fg = p.pine },
|
||||||
|
TSParameter = {
|
||||||
|
fg = p.iris,
|
||||||
|
style = vim.g.rose_pine_enable_italics and 'italic',
|
||||||
|
},
|
||||||
|
-- TSParameterReference = {},
|
||||||
|
TSProperty = {
|
||||||
|
fg = p.iris,
|
||||||
|
style = vim.g.rose_pine_enable_italics and 'italic',
|
||||||
|
},
|
||||||
|
TSPunctBracket = { fg = p.subtle },
|
||||||
|
TSPunctDelimiter = { fg = p.subtle },
|
||||||
|
TSPunctSpecial = { fg = p.subtle },
|
||||||
|
-- TSRepeat = {},
|
||||||
|
-- TSStrike = {},
|
||||||
|
TSString = { fg = p.gold },
|
||||||
|
TSStringEscape = { fg = p.pine },
|
||||||
|
-- TSStringRegex = {},
|
||||||
|
-- TSSymbol = {},
|
||||||
|
TSTag = { fg = p.foam },
|
||||||
|
TSTagDelimiter = { fg = p.subtle },
|
||||||
|
TSText = { fg = p.text },
|
||||||
|
-- TSTitle = {},
|
||||||
|
-- TSType = {},
|
||||||
|
-- TSTypeBuiltin = {},
|
||||||
|
TSURI = { fg = p.gold },
|
||||||
|
-- TSUnderline = {},
|
||||||
|
TSVariable = {
|
||||||
|
fg = p.text,
|
||||||
|
style = vim.g.rose_pine_enable_italics and 'italic',
|
||||||
|
},
|
||||||
|
TSVariableBuiltin = { fg = p.love },
|
||||||
|
}
|
||||||
|
|
||||||
|
return treesitter
|
||||||
|
end
|
||||||
|
|
||||||
|
theme.loadLsp = function()
|
||||||
|
local lsp = {
|
||||||
|
LspDiagnosticsDefaultError = { fg = p.love },
|
||||||
|
LspDiagnosticsDefaultHint = { fg = p.iris },
|
||||||
|
LspDiagnosticsDefaultInformation = { fg = p.foam },
|
||||||
|
LspDiagnosticsDefaultWarning = { fg = p.gold },
|
||||||
|
LspDiagnosticsFloatingError = { fg = p.love },
|
||||||
|
LspDiagnosticsFloatingHint = { fg = p.iris },
|
||||||
|
LspDiagnosticsFloatingInformation = { fg = p.foam },
|
||||||
|
LspDiagnosticsFloatingWarning = { fg = p.gold },
|
||||||
|
LspDiagnosticsSignError = { fg = p.love },
|
||||||
|
LspDiagnosticsSignHint = { fg = p.iris },
|
||||||
|
LspDiagnosticsSignInformation = { fg = p.foam },
|
||||||
|
LspDiagnosticsSignWarning = { fg = p.gold },
|
||||||
|
LspDiagnosticsUnderlineError = { style = 'undercurl', sp = p.love },
|
||||||
|
LspDiagnosticsUnderlineHint = { style = 'undercurl', sp = p.iris },
|
||||||
|
LspDiagnosticsUnderlineInformation = { style = 'undercurl', sp = p.foam },
|
||||||
|
LspDiagnosticsUnderlineWarning = { style = 'undercurl', sp = p.gold },
|
||||||
|
LspDiagnosticsVirtualTextError = { fg = p.love },
|
||||||
|
LspDiagnosticsVirtualTextHint = { fg = p.iris },
|
||||||
|
LspDiagnosticsVirtualTextInformation = { fg = p.foam },
|
||||||
|
LspDiagnosticsVirtualTextWarning = { fg = p.gold },
|
||||||
|
LspReferenceRead = { fg = p.rose, bg = p.highlight },
|
||||||
|
LspReferenceText = { fg = p.rose, bg = p.highlight },
|
||||||
|
LspReferenceWrite = { fg = p.rose, bg = p.highlight },
|
||||||
|
}
|
||||||
|
|
||||||
|
return lsp
|
||||||
|
end
|
||||||
|
|
||||||
|
theme.loadPlugins = function()
|
||||||
|
local plugins = {
|
||||||
|
-- barbar.nvim
|
||||||
|
-- https://github.com/romgrk/barbar.nvim
|
||||||
|
BufferTabpageFill = { bg = p.none },
|
||||||
|
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 },
|
||||||
|
BufferInactive = { fg = p.subtle },
|
||||||
|
BufferInactiveIndex = { fg = p.subtle },
|
||||||
|
BufferInactiveMod = { fg = p.foam },
|
||||||
|
BufferInactiveSign = { fg = p.subtle },
|
||||||
|
BufferVisible = { fg = p.subtle },
|
||||||
|
BufferVisibleIndex = { fg = p.subtle },
|
||||||
|
BufferVisibleMod = { fg = p.foam },
|
||||||
|
BufferVisibleSign = { fg = p.subtle },
|
||||||
|
|
||||||
|
-- gitsigns.nvim
|
||||||
|
-- https://github.com/lewis6991/gitsigns.nvim
|
||||||
|
SignAdd = { fg = p.foam },
|
||||||
|
SignChange = { fg = p.rose },
|
||||||
|
SignDelete = { fg = p.love },
|
||||||
|
GitSignsAdd = { fg = p.foam },
|
||||||
|
GitSignsChange = { fg = p.rose },
|
||||||
|
GitSignsDelete = { fg = p.love },
|
||||||
|
|
||||||
|
-- modes.nvim
|
||||||
|
-- https://github.com/mvllow/modes.nvim
|
||||||
|
ModesCopy = { bg = p.gold },
|
||||||
|
ModesDelete = { bg = p.love },
|
||||||
|
ModesInsert = { bg = p.foam },
|
||||||
|
ModesVisual = { bg = p.iris },
|
||||||
|
|
||||||
|
-- nvim-tree.lua
|
||||||
|
-- https://github.com/kyazdani42/nvim-tree.lua
|
||||||
|
NvimTreeNormal = { fg = p.text },
|
||||||
|
|
||||||
|
NvimTreeEmptyFolderName = { fg = p.inactive },
|
||||||
|
NvimTreeFolderIcon = { fg = p.subtle },
|
||||||
|
NvimTreeFolderName = { fg = p.foam },
|
||||||
|
NvimTreeOpenedFile = { fg = p.text, bg = p.highlight },
|
||||||
|
NvimTreeOpenedFolderName = { fg = p.foam },
|
||||||
|
NvimTreeRootFolder = { fg = p.iris },
|
||||||
|
|
||||||
|
NvimTreeGitDeleted = { fg = p.love },
|
||||||
|
NvimTreeGitDirty = { fg = p.rose },
|
||||||
|
NvimTreeGitMerge = { fg = p.iris },
|
||||||
|
NvimTreeGitNew = { fg = p.foam },
|
||||||
|
NvimTreeGitRenamed = { fg = p.pine },
|
||||||
|
NvimTreeGitStaged = { fg = p.iris },
|
||||||
|
|
||||||
|
NvimTreeFileDeleted = { fg = p.love },
|
||||||
|
NvimTreeFileDirty = { fg = p.rose },
|
||||||
|
NvimTreeFileMerge = { fg = p.iris },
|
||||||
|
NvimTreeFileNew = { fg = p.foam },
|
||||||
|
NvimTreeFileRenamed = { fg = p.pine },
|
||||||
|
NvimTreeFileStaged = { fg = p.iris },
|
||||||
|
|
||||||
|
-- which-key.nvim
|
||||||
|
-- https://github.com/folke/which-key.nvim
|
||||||
|
WhichKey = { fg = p.iris },
|
||||||
|
WhichKeyGroup = { fg = p.foam },
|
||||||
|
WhichKeySeparator = { fg = p.subtle },
|
||||||
|
WhichKeyDesc = { fg = p.gold },
|
||||||
|
WhichKeyFloat = { bg = p.surface },
|
||||||
|
WhichKeyValue = { fg = p.rose },
|
||||||
|
|
||||||
|
-- todo-comments.nvim
|
||||||
|
-- https://github.com/folke/todo-comments.nvim
|
||||||
|
TodoBgFIX = { fg = '#000000', bg = p.love },
|
||||||
|
TodoFgFIX = { fg = p.love, bg = p.base },
|
||||||
|
TodoSignFIX = { fg = p.love, bg = p.base },
|
||||||
|
|
||||||
|
TodoBgTODO = { fg = '#000000', bg = p.rose },
|
||||||
|
TodoFgTODO = { fg = p.rose, bg = p.base },
|
||||||
|
TodoSignTODO = { fg = p.rose, bg = p.base },
|
||||||
|
|
||||||
|
TodoBgHACK = { fg = '#ffffff', bg = p.pine },
|
||||||
|
TodoFgHACK = { fg = p.pine, bg = p.base },
|
||||||
|
TodoSignHACK = { fg = p.pine, bg = p.base },
|
||||||
|
|
||||||
|
TodoBgWARN = { fg = '#000000', bg = p.gold },
|
||||||
|
TodoFgWARN = { fg = p.gold, bg = p.base },
|
||||||
|
TodoSignWARN = { fg = p.gold, bg = p.base },
|
||||||
|
|
||||||
|
TodoBgPERF = { fg = '#000000', bg = p.foam },
|
||||||
|
TodoFgPERF = { fg = p.foam, bg = p.base },
|
||||||
|
TodoSignPERF = { fg = p.foam, bg = p.base },
|
||||||
|
|
||||||
|
TodoBgNOTE = { fg = '#000000', bg = p.iris },
|
||||||
|
TodoFgNOTE = { fg = p.iris, bg = p.base },
|
||||||
|
TodoSignNOTE = { fg = p.iris, bg = p.base },
|
||||||
|
}
|
||||||
|
|
||||||
|
return plugins
|
||||||
|
end
|
||||||
|
|
||||||
|
return theme
|
||||||
81
lua/rose-pine/util.lua
Normal file
81
lua/rose-pine/util.lua
Normal file
|
|
@ -0,0 +1,81 @@
|
||||||
|
local util = {}
|
||||||
|
local theme = require('rose-pine.theme')
|
||||||
|
|
||||||
|
util.highlight = function(group, color)
|
||||||
|
local style = color.style and 'gui=' .. color.style or 'gui=NONE'
|
||||||
|
local fg = color.fg and 'guifg=' .. color.fg or 'guifg=NONE'
|
||||||
|
local bg = color.bg and 'guibg=' .. color.bg or 'guibg=NONE'
|
||||||
|
local sp = color.sp and 'guisp=' .. color.sp or ''
|
||||||
|
|
||||||
|
local hl = 'highlight '
|
||||||
|
.. group
|
||||||
|
.. ' '
|
||||||
|
.. style
|
||||||
|
.. ' '
|
||||||
|
.. fg
|
||||||
|
.. ' '
|
||||||
|
.. bg
|
||||||
|
.. ' '
|
||||||
|
.. sp
|
||||||
|
|
||||||
|
vim.cmd(hl)
|
||||||
|
if color.link then
|
||||||
|
vim.cmd('highlight! link ' .. group .. ' ' .. color.link)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function util.load()
|
||||||
|
vim.cmd('hi clear')
|
||||||
|
if vim.fn.exists('syntax_on') then
|
||||||
|
vim.cmd('syntax reset')
|
||||||
|
end
|
||||||
|
if
|
||||||
|
vim.g.rose_pine_variant == 'dawn'
|
||||||
|
or vim.g.rose_pine_variant == 'rose-pine-dawn'
|
||||||
|
then
|
||||||
|
vim.opt.background = 'light'
|
||||||
|
else
|
||||||
|
vim.opt.background = 'dark'
|
||||||
|
end
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
vim.g.colors_name = 'rose-pine'
|
||||||
|
|
||||||
|
local async
|
||||||
|
async = vim.loop.new_async(vim.schedule_wrap(function()
|
||||||
|
theme.loadTerminal()
|
||||||
|
local plugins = theme.loadPlugins()
|
||||||
|
local treesitter = theme.loadTreesitter()
|
||||||
|
local lsp = theme.loadLsp()
|
||||||
|
|
||||||
|
for group, colors in pairs(plugins) do
|
||||||
|
util.highlight(group, colors)
|
||||||
|
end
|
||||||
|
|
||||||
|
for group, colors in pairs(treesitter) do
|
||||||
|
util.highlight(group, colors)
|
||||||
|
end
|
||||||
|
|
||||||
|
for group, colors in pairs(lsp) do
|
||||||
|
util.highlight(group, colors)
|
||||||
|
end
|
||||||
|
|
||||||
|
async:close()
|
||||||
|
end))
|
||||||
|
|
||||||
|
-- load priority groups first
|
||||||
|
local editor = theme.loadEditor()
|
||||||
|
local syntax = theme.loadSyntax()
|
||||||
|
|
||||||
|
for group, colors in pairs(editor) do
|
||||||
|
util.highlight(group, colors)
|
||||||
|
end
|
||||||
|
|
||||||
|
for group, colors in pairs(syntax) do
|
||||||
|
util.highlight(group, colors)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- load enhancements (eg. lsp, treesitter, plugins)
|
||||||
|
async:send()
|
||||||
|
end
|
||||||
|
|
||||||
|
return util
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
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
|
|
||||||
|
|
||||||
local color_cache = {}
|
|
||||||
|
|
||||||
---@param color string Palette key or hex value
|
|
||||||
function utilities.parse_color(color)
|
|
||||||
if color_cache[color] then
|
|
||||||
return color_cache[color]
|
|
||||||
end
|
|
||||||
|
|
||||||
if color == nil then
|
|
||||||
print("Invalid color: " .. color)
|
|
||||||
return nil
|
|
||||||
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
|
|
||||||
|
|
||||||
color_cache[color] = color
|
|
||||||
return color
|
|
||||||
end
|
|
||||||
|
|
||||||
local blend_cache = {}
|
|
||||||
|
|
||||||
---@param fg string Foreground color
|
|
||||||
---@param bg string Background color
|
|
||||||
---@param alpha number Between 0 (background) and 1 (foreground)
|
|
||||||
function utilities.blend(fg, bg, alpha)
|
|
||||||
local cache_key = fg .. bg .. alpha
|
|
||||||
if blend_cache[cache_key] then
|
|
||||||
return blend_cache[cache_key]
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
local result = string.format("#%02X%02X%02X", blend_channel(1), blend_channel(2), blend_channel(3))
|
|
||||||
|
|
||||||
blend_cache[cache_key] = result
|
|
||||||
return result
|
|
||||||
end
|
|
||||||
|
|
||||||
return utilities
|
|
||||||
177
readme.md
177
readme.md
|
|
@ -11,151 +11,102 @@
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Getting started
|
## Install
|
||||||
|
|
||||||
Install `rose-pine/neovim` using your favourite package manager:
|
Install via your preferred package manager
|
||||||
|
|
||||||
### [pam.nvim](https://github.com/mvllow/pam.nvim)
|
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
{ source = "rose-pine/neovim", as = "rose-pine" }
|
-- Packer
|
||||||
|
use({ 'rose-pine/neovim', as = 'rose-pine' })
|
||||||
```
|
```
|
||||||
|
|
||||||
### [lazy.nvim](https://lazy.folke.io/installation)
|
## Usage
|
||||||
|
|
||||||
**Structured Setup**
|
Enable `rose-pine` colorscheme
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
-- lua/plugins/rose-pine.lua
|
-- Lua
|
||||||
return {
|
vim.cmd('colorscheme rose-pine')
|
||||||
"rose-pine/neovim",
|
|
||||||
name = "rose-pine",
|
|
||||||
config = function()
|
|
||||||
vim.cmd("colorscheme rose-pine")
|
|
||||||
end
|
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
**Single file**
|
```vim
|
||||||
|
" Vimscript
|
||||||
|
colorscheme rose-pine
|
||||||
|
```
|
||||||
|
|
||||||
|
Enable [lualine](https://github.com/hoob3rt/lualine.nvim) plugin
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
{ "rose-pine/neovim", name = "rose-pine" }
|
-- Lua
|
||||||
|
require('lualine').setup({
|
||||||
|
options = {
|
||||||
|
theme = 'rose-pine'
|
||||||
|
}
|
||||||
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Plugin Support
|
||||||
|
|
||||||
|
- [Treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
|
||||||
|
- [LSP diagnostics](https://neovim.io/doc/user/lsp.html)
|
||||||
|
- [Barbar](https://github.com/romgrk/barbar.nvim)
|
||||||
|
- [Gitsigns](https://github.com/lewis6991/gitsigns.nvim)
|
||||||
|
- [Modes](https://github.com/mvllow/modes.nvim)
|
||||||
|
- [NvimTree](https://github.com/kyazdani42/nvim-tree.lua)
|
||||||
|
- [WhichKey](https://github.com/folke/which-key.nvim)
|
||||||
|
- [Todo Comments](https://github.com/folke/todo-comments.nvim)
|
||||||
|
- [Lualine](https://github.com/hoob3rt/lualine.nvim)
|
||||||
|
|
||||||
## Gallery
|
## Gallery
|
||||||
|
|
||||||
**Rosé Pine**
|
**Rosé Pine**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Rosé Pine Moon**
|
**Rosé Pine Moon**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Rosé Pine Dawn**
|
**Rosé Pine Dawn**
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> Configure options _before_ setting colorscheme.
|
|
||||||
|
|
||||||
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({
|
-- Set variant
|
||||||
variant = "auto", -- auto, main, moon, or dawn
|
-- @usage 'base' | 'moon' | 'dawn' | 'rose-pine[-moon][-dawn]'
|
||||||
dark_variant = "main", -- main, moon, or dawn
|
vim.g.rose_pine_variant = 'base'
|
||||||
dim_inactive_windows = false,
|
|
||||||
extend_background_behind_borders = true,
|
|
||||||
|
|
||||||
enable = {
|
-- Enable italics
|
||||||
terminal = true,
|
vim.g.rose_pine_enable_italics = true
|
||||||
legacy_highlights = true, -- Improve compatibility for previous versions of Neovim
|
|
||||||
migrations = true, -- Handle deprecated options automatically
|
|
||||||
},
|
|
||||||
|
|
||||||
styles = {
|
-- Use terminal background
|
||||||
bold = true,
|
-- Note: Set to true to fix any funky background colors
|
||||||
italic = true,
|
vim.g.rose_pine_disable_background = false
|
||||||
transparency = false,
|
|
||||||
},
|
|
||||||
|
|
||||||
groups = {
|
|
||||||
border = "muted",
|
|
||||||
link = "iris",
|
|
||||||
panel = "surface",
|
|
||||||
|
|
||||||
error = "love",
|
|
||||||
hint = "iris",
|
|
||||||
info = "foam",
|
|
||||||
note = "pine",
|
|
||||||
todo = "rose",
|
|
||||||
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",
|
|
||||||
|
|
||||||
h1 = "iris",
|
|
||||||
h2 = "foam",
|
|
||||||
h3 = "rose",
|
|
||||||
h4 = "gold",
|
|
||||||
h5 = "pine",
|
|
||||||
h6 = "foam",
|
|
||||||
},
|
|
||||||
|
|
||||||
palette = {
|
|
||||||
-- Override the builtin palette per variant
|
|
||||||
-- moon = {
|
|
||||||
-- base = '#18191a',
|
|
||||||
-- overlay = '#363738',
|
|
||||||
-- },
|
|
||||||
},
|
|
||||||
|
|
||||||
-- NOTE: Highlight groups are extended (merged) by default. Disable this
|
|
||||||
-- per group via `inherit = false`
|
|
||||||
highlight_groups = {
|
|
||||||
-- Comment = { fg = "foam" },
|
|
||||||
-- StatusLine = { fg = "love", bg = "love", blend = 15 },
|
|
||||||
-- VertSplit = { fg = "muted", bg = "muted" },
|
|
||||||
-- Visual = { fg = "base", bg = "text", 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,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd("colorscheme rose-pine")
|
|
||||||
-- vim.cmd("colorscheme rose-pine-main")
|
|
||||||
-- vim.cmd("colorscheme rose-pine-moon")
|
|
||||||
-- vim.cmd("colorscheme rose-pine-dawn")
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!NOTE]
|
## Functions
|
||||||
> Visit the [wiki](https://github.com/rose-pine/neovim/wiki) for [plugin configurations](https://github.com/rose-pine/neovim/wiki/Plugin-configurations) and [recipes](https://github.com/rose-pine/neovim/wiki/Recipes).
|
|
||||||
|
|
||||||
## Contributing
|
```lua
|
||||||
|
-- Toggle between the three variants
|
||||||
|
require('rose-pine.functions').toggle_variant()
|
||||||
|
|
||||||
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 or [treesitter improvements](https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md#highlights).
|
-- Toggle between base and dawn
|
||||||
|
require('rose-pine.functions').toggle_variant({'base', 'dawn'})
|
||||||
|
|
||||||
Feel free to update the [wiki](https://github.com/rose-pine/neovim/wiki/) with any [recipes](https://github.com/rose-pine/neovim/wiki/Recipes).
|
-- Switch to specified variant
|
||||||
|
require('rose-pine.functions').select_variant('moon')
|
||||||
|
```
|
||||||
|
|
||||||
|
## Keymaps
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- Toggle variant
|
||||||
|
vim.api.nvim_set_keymap('n', '<c-m>', [[<cmd>lua require('rose-pine.functions').toggle_variant()<cr>]], { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- Select each variant
|
||||||
|
vim.api.nvim_set_keymap('n', '<c-8>', [[<cmd>lua require('rose-pine.functions').select_variant('dawn')<cr>]], { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<c-9>', [[<cmd>lua require('rose-pine.functions').select_variant('moon')<cr>]], { noremap = true, silent = true })
|
||||||
|
vim.api.nvim_set_keymap('n', '<c-0>', [[<cmd>lua require('rose-pine.functions').select_variant('base')<cr>]], { noremap = true, silent = true })
|
||||||
|
```
|
||||||
|
|
|
||||||
3
stylua.toml
Normal file
3
stylua.toml
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
column_width = 80
|
||||||
|
indent_type = "Tabs"
|
||||||
|
quote_style = "AutoPreferSingle"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue