mirror of
https://github.com/rose-pine/neovim.git
synced 2025-10-15 12:38:53 +02:00
Compare commits
191 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
72a04c4065 |
||
|
|
0e70556c8c |
||
|
|
72befaffea |
||
|
|
f93360149e |
||
|
|
83c66bcadb |
||
|
|
6b9840790c | ||
|
|
d195ed8673 | ||
|
|
a67f5ef34b | ||
|
|
39ec539f83 | ||
|
|
5ccc379822 | ||
|
|
d7dc9cd3f2 | ||
|
|
44739383b9 | ||
|
|
8b216f7252 | ||
|
|
0511701746 | ||
|
|
946de320f4 | ||
|
|
340cf5ed5e | ||
|
|
f01eac6eed | ||
|
|
3d71ab02f2 | ||
|
|
0ca4bfbc6f | ||
|
|
8db1217704 | ||
|
|
2b88dfb054 | ||
|
|
ffd5b69948 | ||
|
|
6b51153905 | ||
|
|
40f03c4df1 | ||
|
|
463742691b | ||
|
|
c306f13158 | ||
|
|
fc418a716f | ||
|
|
36526815ee | ||
|
|
a449bb2599 | ||
|
|
5e7bf83782 | ||
|
|
1ebe0a5171 | ||
|
|
8869e546d4 | ||
|
|
2f44ef189f | ||
|
|
22f873c7db | ||
|
|
33a1ba3126 | ||
|
|
fe9e661cda | ||
|
|
94ffdb7748 | ||
|
|
d97cc7fcd7 | ||
|
|
7f0b8c4c7f | ||
|
|
c14da532fa | ||
|
|
8b1a2e73d2 | ||
|
|
d6112a7c56 | ||
|
|
535240c846 | ||
|
|
f7c01f07ee | ||
|
|
656f360ded | ||
|
|
5929bc8683 | ||
|
|
bf7ceb32fa | ||
|
|
3bbd8a865c | ||
|
|
afb46f9b66 | ||
|
|
f2bf6e8d49 | ||
|
|
2f1733d36f | ||
|
|
c4b55e85fb | ||
|
|
fe5f4e11f7 | ||
|
|
69b3aa9500 | ||
|
|
71852123cc | ||
|
|
6d476a5c64 | ||
|
|
958dce3da9 | ||
|
|
511e82e272 | ||
|
|
f67828be44 | ||
|
|
cbc2064f4c | ||
|
|
c8477ee978 | ||
|
|
8d9c83d145 | ||
|
|
465b7dc623 | ||
|
|
e4c22a9163 | ||
|
|
01dc90af2f | ||
|
|
63f4613365 | ||
|
|
1f22d4e97e | ||
|
|
a959c73910 | ||
|
|
3dbb8a99bd | ||
|
|
e901a53e41 | ||
|
|
c8e97915d1 | ||
|
|
12ace889a0 | ||
|
|
e28cda232b | ||
|
|
ea3f15ca95 | ||
|
|
4372c4eb49 | ||
|
|
95e9767165 | ||
|
|
9d0e1b70d9 | ||
|
|
75d145fa08 | ||
|
|
4452ecd140 | ||
|
|
0b77ef0e7b | ||
|
|
8514c638bc | ||
|
|
e62a61166e | ||
|
|
7ed74e3f24 | ||
|
|
f4d51d67ee | ||
|
|
aa74893a06 | ||
|
|
1ffdf27819 | ||
|
|
e0674e5e5c | ||
|
|
79e0d756b9 | ||
|
|
46044020c6 | ||
|
|
1edcf47562 | ||
|
|
188190f285 | ||
|
|
bfa2d2b2fb | ||
|
|
2c892088f9 | ||
|
|
76b6d830f6 | ||
|
|
82285ba9f1 | ||
|
|
86fa83761e | ||
|
|
29477a109a | ||
|
|
84a88f68e1 | ||
|
|
c48de5d8f8 | ||
|
|
8f37719a51 | ||
|
|
bca840fc90 | ||
|
|
70c641a0b7 | ||
|
|
eb4c5591c7 | ||
|
|
805a183dde | ||
|
|
c552fcadac | ||
|
|
3b3ca9ebb9 | ||
|
|
4e0e82b3af | ||
|
|
838b33cdc4 | ||
|
|
9ecd30d749 | ||
|
|
ab6ab41da0 | ||
|
|
0fb313c3c5 | ||
|
|
eb057bd6dd | ||
|
|
75bb6e5a6d | ||
|
|
89bcc4b197 | ||
|
|
9cb8497413 | ||
|
|
15eeca1d44 | ||
|
|
adc339c315 | ||
|
|
196cb4cb06 | ||
|
|
8b63bcd142 | ||
|
|
3044a86a2c | ||
|
|
88dfcf9e8a | ||
|
|
3eb035f569 | ||
|
|
6fd3a3f1b5 | ||
|
|
d500424a30 | ||
|
|
af49f208f0 | ||
|
|
5e48e3083a | ||
|
|
8e66255eee | ||
|
|
576c0d2cb1 | ||
|
|
61ea7ce033 | ||
|
|
36feaf500f | ||
|
|
2a7381e9ab | ||
|
|
826458a62c | ||
|
|
832f94a957 | ||
|
|
80695a625c | ||
|
|
a68fd96801 | ||
|
|
022be54f7d | ||
|
|
8f3894b5b8 | ||
|
|
16a4739664 | ||
|
|
9e30b45caf | ||
|
|
6d91e39c28 | ||
|
|
61e22c730b | ||
|
|
b33cdf76cd | ||
|
|
7f6a7364de | ||
|
|
d1e3278a45 | ||
|
|
37fa09c6d2 | ||
|
|
9fd19a9514 | ||
|
|
db7e63846f | ||
|
|
8ce63c8692 | ||
|
|
148a6d2577 | ||
|
|
4b6d23ff2e | ||
|
|
d04e8b2aa5 | ||
|
|
3eac7f3baa | ||
|
|
e67b0bfdfe | ||
|
|
39dd687ed9 | ||
|
|
47dd2ad6ba | ||
|
|
95dd29d70c | ||
|
|
506de581e5 | ||
|
|
006aac9d67 | ||
|
|
04fa9d94a5 | ||
|
|
28edf05036 | ||
|
|
b0724442eb | ||
|
|
c253ca2586 | ||
|
|
c3762c935e | ||
|
|
4a3b4512fc | ||
|
|
bc07e54924 | ||
|
|
a60b0e6581 | ||
|
|
23685a0a2e | ||
|
|
aeec916cba | ||
|
|
15894e3f21 | ||
|
|
1ef267ddcc | ||
|
|
c68bfa077b | ||
|
|
de2a00774d | ||
|
|
853112468d | ||
|
|
c38b23c022 | ||
|
|
b10a5c3432 | ||
|
|
49647d12b4 | ||
|
|
e153a6b7eb | ||
|
|
2f7d458414 | ||
|
|
1346db5bde | ||
|
|
2dea84a91f | ||
|
|
3fb07a770f | ||
|
|
f3c534e4be | ||
|
|
64986b857d | ||
|
|
7c398c943c | ||
|
|
64c5952bc7 | ||
|
|
317a7c8473 | ||
|
|
c207a62f52 | ||
|
|
6cbc72a75d | ||
|
|
0e23ee652d | ||
|
|
acee7a0b09 | ||
|
|
73c5046bf3 |
28 changed files with 2160 additions and 855 deletions
12
.editorconfig
Normal file
12
.editorconfig
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
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
Normal file
54
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
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
Normal file
17
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
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.
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
column_width = 100
|
|
||||||
indent_type = "Tabs"
|
|
||||||
indent_width = 3
|
|
||||||
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 = "..." },
|
||||||
|
+ }
|
||||||
|
```
|
||||||
2
colors/rose-pine-dawn.lua
Normal file
2
colors/rose-pine-dawn.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
package.loaded["rose-pine.palette"] = nil
|
||||||
|
require("rose-pine").colorscheme("dawn")
|
||||||
2
colors/rose-pine-main.lua
Normal file
2
colors/rose-pine-main.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
package.loaded["rose-pine.palette"] = nil
|
||||||
|
require("rose-pine").colorscheme("main")
|
||||||
2
colors/rose-pine-moon.lua
Normal file
2
colors/rose-pine-moon.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
package.loaded["rose-pine.palette"] = nil
|
||||||
|
require("rose-pine").colorscheme("moon")
|
||||||
2
colors/rose-pine.lua
Normal file
2
colors/rose-pine.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
package.loaded["rose-pine.palette"] = nil
|
||||||
|
require("rose-pine").colorscheme()
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
lua package.loaded['rose-pine'] = nil
|
|
||||||
lua package.loaded['rose-pine.config'] = nil
|
|
||||||
lua package.loaded['rose-pine.palette'] = nil
|
|
||||||
lua package.loaded['rose-pine.theme'] = nil
|
|
||||||
|
|
||||||
lua require('rose-pine').colorscheme()
|
|
||||||
21
license
Normal file
21
license
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Rosé Pine
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
@ -1,26 +1,32 @@
|
||||||
local p = require('rose-pine.palette')
|
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 {
|
return {
|
||||||
normal = {
|
normal = {
|
||||||
a = { bg = p.surface, fg = p.rose, gui = 'bold' },
|
a = { bg = p.surface, fg = p.rose, gui = "bold" },
|
||||||
b = { bg = p.surface, fg = p.text },
|
b = { bg = p.surface, fg = p.text },
|
||||||
c = { bg = p.surface, fg = p.subtle, gui = 'italic' },
|
c = { bg = p.surface, fg = p.subtle, gui = "italic" },
|
||||||
},
|
},
|
||||||
insert = {
|
insert = {
|
||||||
a = { bg = p.surface, fg = p.foam, gui = 'bold' },
|
a = { bg = p.surface, fg = p.foam, gui = "bold" },
|
||||||
},
|
},
|
||||||
visual = {
|
visual = {
|
||||||
a = { bg = p.surface, fg = p.iris, gui = 'bold' },
|
a = { bg = p.surface, fg = p.iris, gui = "bold" },
|
||||||
},
|
},
|
||||||
replace = {
|
replace = {
|
||||||
a = { bg = p.surface, fg = p.pine, gui = 'bold' },
|
a = { bg = p.surface, fg = p.pine, gui = "bold" },
|
||||||
},
|
},
|
||||||
command = {
|
command = {
|
||||||
a = { bg = p.surface, fg = p.love, gui = 'bold' },
|
a = { bg = p.surface, fg = p.love, gui = "bold" },
|
||||||
},
|
},
|
||||||
inactive = {
|
inactive = {
|
||||||
a = { bg = p.base, fg = p.subtle, gui = 'bold' },
|
a = { bg = bg_base, fg = p.subtle, gui = "bold" },
|
||||||
b = { bg = p.base, fg = p.subtle },
|
b = { bg = bg_base, fg = p.subtle },
|
||||||
c = { bg = p.base, fg = p.subtle, gui = 'italic' },
|
c = { bg = bg_base, fg = p.subtle, gui = "italic" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,40 @@
|
||||||
local p = require('rose-pine.palette')
|
local p = 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 = p.rose, fg = p.base, gui = "bold" },
|
||||||
b = { bg = p.overlay, fg = p.rose },
|
b = { bg = p.overlay, fg = p.rose },
|
||||||
c = { bg = p.base, fg = p.text },
|
c = { bg = bg_base, fg = p.text },
|
||||||
},
|
},
|
||||||
insert = {
|
insert = {
|
||||||
a = { bg = p.foam, fg = p.base, gui = 'bold' },
|
a = { bg = p.foam, fg = p.base, gui = "bold" },
|
||||||
b = { bg = p.overlay, fg = p.foam },
|
b = { bg = p.overlay, fg = p.foam },
|
||||||
c = { bg = p.base, fg = p.text },
|
c = { bg = bg_base, fg = p.text },
|
||||||
},
|
},
|
||||||
visual = {
|
visual = {
|
||||||
a = { bg = p.iris, fg = p.base, gui = 'bold' },
|
a = { bg = p.iris, fg = p.base, gui = "bold" },
|
||||||
b = { bg = p.overlay, fg = p.iris },
|
b = { bg = p.overlay, fg = p.iris },
|
||||||
c = { bg = p.base, fg = p.text },
|
c = { bg = bg_base, fg = p.text },
|
||||||
},
|
},
|
||||||
replace = {
|
replace = {
|
||||||
a = { bg = p.pine, fg = p.base, gui = 'bold' },
|
a = { bg = p.pine, fg = p.base, gui = "bold" },
|
||||||
b = { bg = p.overlay, fg = p.pine },
|
b = { bg = p.overlay, fg = p.pine },
|
||||||
c = { bg = p.base, fg = p.text },
|
c = { bg = bg_base, fg = p.text },
|
||||||
},
|
},
|
||||||
command = {
|
command = {
|
||||||
a = { bg = p.love, fg = p.base, gui = 'bold' },
|
a = { bg = p.love, fg = p.base, gui = "bold" },
|
||||||
b = { bg = p.overlay, fg = p.love },
|
b = { bg = p.overlay, fg = p.love },
|
||||||
c = { bg = p.base, fg = p.text },
|
c = { bg = bg_base, fg = p.text },
|
||||||
},
|
},
|
||||||
inactive = {
|
inactive = {
|
||||||
a = { bg = p.base, fg = p.muted, gui = 'bold' },
|
a = { bg = bg_base, fg = p.muted, gui = "bold" },
|
||||||
b = { bg = p.base, fg = p.muted },
|
b = { bg = bg_base, fg = p.muted },
|
||||||
c = { bg = p.base, fg = p.muted },
|
c = { bg = bg_base, fg = p.muted },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1242
lua/rose-pine.lua
Normal file
1242
lua/rose-pine.lua
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,23 +0,0 @@
|
||||||
local p = require('rose-pine.palette')
|
|
||||||
|
|
||||||
-- TODO: Someone who uses bufferline.nvim is free to PR with this addition
|
|
||||||
-- `:h bufferline-highlights`
|
|
||||||
--
|
|
||||||
-- The intended use would be (or any better solution):
|
|
||||||
--
|
|
||||||
-- ```
|
|
||||||
-- local highlights = require('rose-pine.bufferline')
|
|
||||||
-- require('bufferline').setup({
|
|
||||||
-- highlights = highlights
|
|
||||||
-- })
|
|
||||||
-- ```
|
|
||||||
return {
|
|
||||||
fill = {
|
|
||||||
guifg = p.text,
|
|
||||||
guibg = p.base,
|
|
||||||
},
|
|
||||||
background = {
|
|
||||||
guifg = p.text,
|
|
||||||
guibg = p.base,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,74 +1,176 @@
|
||||||
local palette = require('rose-pine.palette')
|
---@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 function opt(key, default)
|
local config = {}
|
||||||
key = 'rose_pine_' .. key
|
|
||||||
|
|
||||||
if vim.g[key] == nil then
|
---@class Options
|
||||||
return default
|
config.options = {
|
||||||
end
|
---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",
|
||||||
|
|
||||||
if vim.g[key] == 0 or vim.g[key] == false then
|
---Set the desired dark variant when `options.variant` is set to "auto".
|
||||||
return false
|
---@type Variant
|
||||||
end
|
dark_variant = "main",
|
||||||
|
|
||||||
return vim.g[key]
|
---Differentiate between active and inactive windows and panels.
|
||||||
end
|
dim_inactive_windows = false,
|
||||||
|
|
||||||
local config = {
|
---Extend background behind borders. Appearance differs based on which
|
||||||
variant = opt('variant', 'main'),
|
---border characters you are using.
|
||||||
|
extend_background_behind_borders = true,
|
||||||
|
|
||||||
bold_vertical_split_line = opt('bold_vertical_split_line', false),
|
enable = {
|
||||||
disable_italics = opt('disable_italics', false),
|
legacy_highlights = true,
|
||||||
disable_background = opt('disable_background', false),
|
migrations = true,
|
||||||
disable_float_background = opt('disable_float_background', false),
|
terminal = true,
|
||||||
inactive_background = opt('inactive_background', false),
|
|
||||||
|
|
||||||
colors = {
|
|
||||||
border = palette.highlight_med,
|
|
||||||
comment = palette.muted,
|
|
||||||
link = palette.iris,
|
|
||||||
punctuation = palette.subtle,
|
|
||||||
|
|
||||||
error = palette.love,
|
|
||||||
hint = palette.iris,
|
|
||||||
info = palette.foam,
|
|
||||||
warn = palette.gold,
|
|
||||||
|
|
||||||
git_add = palette.foam,
|
|
||||||
git_change = palette.rose,
|
|
||||||
git_delete = palette.love,
|
|
||||||
git_dirty = palette.rose,
|
|
||||||
git_ignore = palette.muted,
|
|
||||||
git_merge = palette.iris,
|
|
||||||
git_rename = palette.pine,
|
|
||||||
git_stage = palette.iris,
|
|
||||||
git_text = palette.rose,
|
|
||||||
|
|
||||||
---@type string|table<string, string>
|
|
||||||
headings = {
|
|
||||||
h1 = palette.iris,
|
|
||||||
h2 = palette.foam,
|
|
||||||
h3 = palette.rose,
|
|
||||||
h4 = palette.gold,
|
|
||||||
h5 = palette.pine,
|
|
||||||
h6 = palette.foam,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
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 colors = vim.g.rose_pine_colors or {}
|
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 type(colors.headings) == 'string' then
|
if options.disable_background then
|
||||||
colors.headings = {
|
options.highlight_groups["Normal"] = { bg = "NONE" }
|
||||||
h1 = colors.headings,
|
end
|
||||||
h2 = colors.headings,
|
|
||||||
h3 = colors.headings,
|
if options.disable_float_background then
|
||||||
h4 = colors.headings,
|
options.highlight_groups["NormalFloat"] = { bg = "NONE" }
|
||||||
h5 = colors.headings,
|
end
|
||||||
h6 = colors.headings,
|
|
||||||
}
|
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
|
end
|
||||||
|
|
||||||
config.colors = vim.tbl_deep_extend('force', config.colors, colors)
|
---@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
|
return config
|
||||||
|
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
local present, galaxyline_colors = pcall(require, 'galaxyline.themes.colors')
|
|
||||||
if not present then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local palette = require('rose-pine.palette')
|
|
||||||
|
|
||||||
galaxyline_colors['rose-pine'] = {
|
|
||||||
bg = palette.overlay,
|
|
||||||
fg = palette.text,
|
|
||||||
fg_alt = palette.subtle,
|
|
||||||
blue = palette.foam,
|
|
||||||
cyan = palette.foam,
|
|
||||||
green = palette.muted,
|
|
||||||
magenta = palette.iris,
|
|
||||||
orange = palette.rose,
|
|
||||||
red = palette.love,
|
|
||||||
yellow = palette.gold,
|
|
||||||
}
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
local M = {}
|
|
||||||
|
|
||||||
function M.colorscheme()
|
|
||||||
if vim.g.colors_name then
|
|
||||||
vim.cmd('hi clear')
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.opt.termguicolors = true
|
|
||||||
vim.g.colors_name = 'rose-pine'
|
|
||||||
|
|
||||||
-- Match terminal theme if no variant is set
|
|
||||||
if vim.g.rose_pine_variant == nil and vim.o.background == 'light' then
|
|
||||||
vim.g.rose_pine_variant = 'dawn'
|
|
||||||
elseif vim.g.rose_pine_variant == 'dawn' then
|
|
||||||
vim.o.background = 'light'
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param group string
|
|
||||||
---@param color table<string, string>
|
|
||||||
local function highlight(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
|
|
||||||
|
|
||||||
for group, colors in pairs(require('rose-pine.theme')) do
|
|
||||||
highlight(group, colors)
|
|
||||||
end
|
|
||||||
|
|
||||||
require('rose-pine.galaxyline.theme')
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.set(variant)
|
|
||||||
vim.g.rose_pine_variant = variant
|
|
||||||
vim.cmd('colorscheme rose-pine')
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.toggle(variants)
|
|
||||||
variants = variants or { 'main', 'moon', 'dawn' }
|
|
||||||
|
|
||||||
local index = {}
|
|
||||||
for k, v in pairs(variants) do
|
|
||||||
index[v] = k
|
|
||||||
end
|
|
||||||
|
|
||||||
if vim.g.rose_pine_current_variant == nil then
|
|
||||||
vim.g.rose_pine_current_variant = index[vim.g.rose_pine_variant] or 0
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.g.rose_pine_current_variant = (vim.g.rose_pine_current_variant % #variants) + 1
|
|
||||||
|
|
||||||
M.set(variants[vim.g.rose_pine_current_variant])
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
|
|
@ -1,68 +1,78 @@
|
||||||
|
local options = require("rose-pine.config").options
|
||||||
local variants = {
|
local variants = {
|
||||||
main = {
|
main = {
|
||||||
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 = '#31748f',
|
rose = "#ebbcba",
|
||||||
foam = '#9ccfd8',
|
pine = "#31748f",
|
||||||
iris = '#c4a7e7',
|
foam = "#9ccfd8",
|
||||||
highlight_low = '#21202e',
|
iris = "#c4a7e7",
|
||||||
highlight_med = '#403d52',
|
leaf = "#95b1ac",
|
||||||
highlight_high = '#524f67',
|
highlight_low = "#21202e",
|
||||||
opacity = 0.1,
|
highlight_med = "#403d52",
|
||||||
|
highlight_high = "#524f67",
|
||||||
|
none = "NONE",
|
||||||
},
|
},
|
||||||
moon = {
|
moon = {
|
||||||
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',
|
leaf = "#95b1ac",
|
||||||
highlight_high = '#56526e',
|
highlight_low = "#2a283e",
|
||||||
opacity = 0.1,
|
highlight_med = "#44415a",
|
||||||
|
highlight_high = "#56526e",
|
||||||
|
none = "NONE",
|
||||||
},
|
},
|
||||||
dawn = {
|
dawn = {
|
||||||
base = '#faf4ed',
|
_nc = "#f8f0e7",
|
||||||
surface = '#fffaf3',
|
base = "#faf4ed",
|
||||||
overlay = '#f2e9e1',
|
surface = "#fffaf3",
|
||||||
muted = '#9893a5',
|
overlay = "#f2e9e1",
|
||||||
subtle = '#797593',
|
muted = "#9893a5",
|
||||||
text = '#575279',
|
subtle = "#797593",
|
||||||
love = '#b4637a',
|
text = "#464261",
|
||||||
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',
|
leaf = "#6d8f89",
|
||||||
highlight_high = '#cecacd',
|
highlight_low = "#f4ede8",
|
||||||
opacity = 0.05,
|
highlight_med = "#dfdad9",
|
||||||
|
highlight_high = "#cecacd",
|
||||||
|
none = "NONE",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local palette = variants.main
|
if options.palette ~= nil and next(options.palette) then
|
||||||
|
-- handle variant specific overrides
|
||||||
if string.match(vim.g.rose_pine_variant or '', 'moon') then
|
for variant_name, override_palette in pairs(options.palette) do
|
||||||
palette = variants.moon
|
if variants[variant_name] then
|
||||||
elseif string.match(vim.g.rose_pine_variant or '', 'dawn') then
|
variants[variant_name] = vim.tbl_extend("force", variants[variant_name], override_palette or {})
|
||||||
palette = variants.dawn
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.tbl_deep_extend('force', palette, { none = 'NONE' })
|
if variants[options.variant] ~= nil then
|
||||||
|
return variants[options.variant]
|
||||||
|
end
|
||||||
|
|
||||||
return palette
|
return vim.o.background == "light" and variants.dawn or variants[options.dark_variant or "main"]
|
||||||
|
|
|
||||||
223
lua/rose-pine/plugins/bufferline.lua
Normal file
223
lua/rose-pine/plugins/bufferline.lua
Normal file
|
|
@ -0,0 +1,223 @@
|
||||||
|
--- 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,
|
||||||
|
-- },
|
||||||
|
}
|
||||||
20
lua/rose-pine/plugins/galaxyline.lua
Normal file
20
lua/rose-pine/plugins/galaxyline.lua
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
--- 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,
|
||||||
|
}
|
||||||
10
lua/rose-pine/plugins/markid.lua
Normal file
10
lua/rose-pine/plugins/markid.lua
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
--- 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 }
|
||||||
14
lua/rose-pine/plugins/obsidian.lua
Normal file
14
lua/rose-pine/plugins/obsidian.lua
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
--- 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 }
|
||||||
|
}
|
||||||
15
lua/rose-pine/plugins/toggleterm.lua
Normal file
15
lua/rose-pine/plugins/toggleterm.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
--- 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" },
|
||||||
|
}
|
||||||
|
|
@ -1,460 +0,0 @@
|
||||||
local palette = require('rose-pine.palette')
|
|
||||||
local config = require('rose-pine.config')
|
|
||||||
local util = require('rose-pine.util')
|
|
||||||
|
|
||||||
local group = config.colors
|
|
||||||
|
|
||||||
local maybe_italic = 'italic'
|
|
||||||
if config.disable_italics == true then
|
|
||||||
maybe_italic = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
local background = palette.base
|
|
||||||
if config.disable_background then
|
|
||||||
background = palette.none
|
|
||||||
end
|
|
||||||
|
|
||||||
local float_background = palette.surface
|
|
||||||
if config.disable_float_background then
|
|
||||||
float_background = palette.none
|
|
||||||
end
|
|
||||||
|
|
||||||
local inactive_background = palette.none
|
|
||||||
if config.inactive_background then
|
|
||||||
inactive_background = util.blend('#000000', palette.base, palette.opacity)
|
|
||||||
end
|
|
||||||
|
|
||||||
local vert_split_background = palette.none
|
|
||||||
if config.bold_vertical_split_line then
|
|
||||||
vert_split_background = palette.overlay
|
|
||||||
end
|
|
||||||
|
|
||||||
local theme = {
|
|
||||||
ColorColumn = { bg = palette.highlight_high },
|
|
||||||
Conceal = { bg = palette.none },
|
|
||||||
-- Cursor = {},
|
|
||||||
CursorColumn = { bg = palette.overlay },
|
|
||||||
-- CursorIM = {},
|
|
||||||
CursorLine = { bg = palette.overlay },
|
|
||||||
CursorLineNr = { fg = palette.text },
|
|
||||||
DarkenedPanel = { bg = palette.surface },
|
|
||||||
DarkenedStatusline = { bg = palette.surface },
|
|
||||||
DiffAdd = { bg = util.blend(group.git_add, palette.base, 0.5) },
|
|
||||||
DiffChange = { bg = palette.overlay },
|
|
||||||
DiffDelete = { bg = util.blend(group.git_delete, palette.base, 0.5) },
|
|
||||||
DiffText = { bg = util.blend(group.git_text, palette.base, 0.5) },
|
|
||||||
diffAdded = { link = 'DiffAdd' },
|
|
||||||
diffChanged = { link = 'DiffChange' },
|
|
||||||
diffRemoved = { link = 'DiffDelete' },
|
|
||||||
Directory = { fg = palette.foam, bg = palette.none },
|
|
||||||
-- EndOfBuffer = {},
|
|
||||||
ErrorMsg = { fg = palette.love, style = 'bold' },
|
|
||||||
FloatBorder = { fg = group.border },
|
|
||||||
FoldColumn = { fg = palette.muted },
|
|
||||||
Folded = { fg = palette.text, bg = palette.surface },
|
|
||||||
IncSearch = { fg = palette.base, bg = palette.rose },
|
|
||||||
LineNr = { fg = palette.muted },
|
|
||||||
MatchParen = { fg = palette.text, bg = palette.highlight_med },
|
|
||||||
ModeMsg = { fg = palette.subtle },
|
|
||||||
MoreMsg = { fg = palette.iris },
|
|
||||||
NonText = { fg = palette.muted },
|
|
||||||
Normal = { fg = palette.text, bg = background },
|
|
||||||
NormalFloat = { fg = palette.text, bg = float_background },
|
|
||||||
NormalNC = { fg = palette.text, bg = inactive_background },
|
|
||||||
NvimInternalError = { fg = '#ffffff', bg = palette.love },
|
|
||||||
Pmenu = { fg = palette.subtle, bg = float_background },
|
|
||||||
PmenuSbar = { bg = palette.highlight_low },
|
|
||||||
PmenuSel = { fg = palette.text, bg = palette.overlay },
|
|
||||||
PmenuThumb = { bg = palette.highlight_med },
|
|
||||||
Question = { fg = palette.gold },
|
|
||||||
-- QuickFixLine = {},
|
|
||||||
-- RedrawDebugNormal = {}
|
|
||||||
RedrawDebugClear = { fg = '#ffffff', bg = palette.gold },
|
|
||||||
RedrawDebugComposed = { fg = '#ffffff', bg = palette.pine },
|
|
||||||
RedrawDebugRecompose = { fg = '#ffffff', bg = palette.love },
|
|
||||||
Search = { bg = palette.highlight_med },
|
|
||||||
SpecialKey = { fg = palette.foam },
|
|
||||||
SpellBad = { sp = palette.love, style = 'undercurl' },
|
|
||||||
SpellCap = { sp = palette.subtle, style = 'undercurl' },
|
|
||||||
SpellLocal = { sp = palette.subtle, style = 'undercurl' },
|
|
||||||
SpellRare = { sp = palette.subtle, style = 'undercurl' },
|
|
||||||
SignColumn = { fg = palette.text, bg = background },
|
|
||||||
StatusLine = { fg = palette.subtle, bg = palette.surface },
|
|
||||||
StatusLineNC = { fg = palette.muted, bg = palette.base },
|
|
||||||
StatusLineTerm = { link = 'StatusLine' },
|
|
||||||
StatusLineTermNC = { link = 'StatusLineNC' },
|
|
||||||
TabLine = { fg = palette.subtle, bg = palette.surface },
|
|
||||||
TabLineFill = { bg = palette.surface },
|
|
||||||
TabLineSel = { fg = palette.text, bg = palette.overlay },
|
|
||||||
Title = { fg = palette.text },
|
|
||||||
VertSplit = { fg = palette.overlay, bg = vert_split_background },
|
|
||||||
Visual = { bg = palette.highlight_med },
|
|
||||||
-- VisualNOS = {},
|
|
||||||
WarningMsg = { fg = palette.gold },
|
|
||||||
-- Whitespace = {},
|
|
||||||
-- WildMenu = {},
|
|
||||||
|
|
||||||
Boolean = { fg = palette.rose },
|
|
||||||
Character = { fg = palette.gold },
|
|
||||||
Comment = { fg = group.comment, style = maybe_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.rose },
|
|
||||||
-- Ignore = {},
|
|
||||||
Include = { fg = palette.iris },
|
|
||||||
Keyword = { fg = palette.pine },
|
|
||||||
Label = { fg = palette.foam },
|
|
||||||
Macro = { fg = palette.iris },
|
|
||||||
Number = { fg = palette.gold },
|
|
||||||
Operator = { fg = palette.subtle },
|
|
||||||
PreCondit = { fg = palette.iris },
|
|
||||||
PreProc = { fg = palette.iris },
|
|
||||||
Repeat = { fg = palette.pine },
|
|
||||||
Special = { fg = palette.rose },
|
|
||||||
SpecialChar = { fg = palette.rose },
|
|
||||||
SpecialComment = { fg = palette.iris },
|
|
||||||
Statement = { fg = palette.pine },
|
|
||||||
StorageClass = { fg = palette.foam },
|
|
||||||
String = { fg = palette.gold },
|
|
||||||
Structure = { fg = palette.foam },
|
|
||||||
Tag = { fg = palette.rose },
|
|
||||||
Todo = { fg = palette.iris },
|
|
||||||
Type = { fg = palette.foam },
|
|
||||||
Typedef = { fg = palette.foam },
|
|
||||||
Underlined = { style = 'underline' },
|
|
||||||
|
|
||||||
htmlArg = { fg = palette.iris },
|
|
||||||
htmlBold = { style = 'bold' },
|
|
||||||
htmlEndTag = { fg = palette.subtle },
|
|
||||||
htmlH1 = { fg = group.headings.h1, style = 'bold' },
|
|
||||||
htmlH2 = { fg = group.headings.h2, style = 'bold' },
|
|
||||||
htmlH3 = { fg = group.headings.h3, style = 'bold' },
|
|
||||||
htmlH4 = { fg = group.headings.h4, style = 'bold' },
|
|
||||||
htmlH5 = { fg = group.headings.h5, style = 'bold' },
|
|
||||||
htmlItalic = { style = maybe_italic },
|
|
||||||
htmlLink = { fg = group.link },
|
|
||||||
htmlTag = { fg = palette.subtle },
|
|
||||||
htmlTagN = { fg = palette.text },
|
|
||||||
htmlTagName = { fg = palette.foam },
|
|
||||||
|
|
||||||
markdownDelimiter = { fg = palette.subtle },
|
|
||||||
markdownH1 = { fg = group.headings.h1, style = 'bold' },
|
|
||||||
markdownH1Delimiter = { link = 'markdownH1' },
|
|
||||||
markdownH2 = { fg = group.headings.h2, style = 'bold' },
|
|
||||||
markdownH2Delimiter = { link = 'markdownH2' },
|
|
||||||
markdownH3 = { fg = group.headings.h3, style = 'bold' },
|
|
||||||
markdownH3Delimiter = { link = 'markdownH3' },
|
|
||||||
markdownH4 = { fg = group.headings.h4, style = 'bold' },
|
|
||||||
markdownH4Delimiter = { link = 'markdownH4' },
|
|
||||||
markdownH5 = { fg = group.headings.h5, style = 'bold' },
|
|
||||||
markdownH5Delimiter = { link = 'markdownH5' },
|
|
||||||
markdownH6 = { fg = group.headings.h6, style = 'bold' },
|
|
||||||
markdownH6Delimiter = { link = 'markdownH6' },
|
|
||||||
markdownLinkText = { fg = group.link, style = 'underline' },
|
|
||||||
markdownUrl = { link = 'markdownLinkText' },
|
|
||||||
|
|
||||||
mkdCode = { fg = palette.foam, style = maybe_italic },
|
|
||||||
mkdCodeDelimiter = { fg = palette.rose },
|
|
||||||
mkdCodeEnd = { fg = palette.foam },
|
|
||||||
mkdCodeStart = { fg = palette.foam },
|
|
||||||
mkdFootnotes = { fg = palette.foam },
|
|
||||||
mkdID = { fg = palette.foam, style = 'underline' },
|
|
||||||
mkdInlineURL = { fg = group.link, style = 'underline' },
|
|
||||||
mkdLink = { link = 'mkdInlineURL' },
|
|
||||||
mkdLinkDef = { link = 'mkdInlineURL' },
|
|
||||||
mkdListItemLine = { fg = palette.text },
|
|
||||||
mkdRule = { fg = palette.subtle },
|
|
||||||
mkdURL = { link = 'mkdInlineURL' },
|
|
||||||
|
|
||||||
DiagnosticError = { fg = group.error },
|
|
||||||
DiagnosticHint = { fg = group.hint },
|
|
||||||
DiagnosticInfo = { fg = group.info },
|
|
||||||
DiagnosticWarn = { fg = group.warn },
|
|
||||||
DiagnosticDefaultError = { fg = group.error },
|
|
||||||
DiagnosticDefaultHint = { fg = group.hint },
|
|
||||||
DiagnosticDefaultInfo = { fg = group.info },
|
|
||||||
DiagnosticDefaultWarn = { fg = group.warn },
|
|
||||||
DiagnosticFloatingError = { fg = group.error },
|
|
||||||
DiagnosticFloatingHint = { fg = group.hint },
|
|
||||||
DiagnosticFloatingInfo = { fg = group.info },
|
|
||||||
DiagnosticFloatingWarn = { fg = group.warn },
|
|
||||||
DiagnosticSignError = { fg = group.error },
|
|
||||||
DiagnosticSignHint = { fg = group.hint },
|
|
||||||
DiagnosticSignInfo = { fg = group.info },
|
|
||||||
DiagnosticSignWarn = { fg = group.warn },
|
|
||||||
DiagnosticUnderlineError = { sp = group.error, style = 'undercurl' },
|
|
||||||
DiagnosticUnderlineHint = { sp = group.hint, style = 'undercurl' },
|
|
||||||
DiagnosticUnderlineInfo = { sp = group.info, style = 'undercurl' },
|
|
||||||
DiagnosticUnderlineWarn = { sp = group.warn, style = 'undercurl' },
|
|
||||||
DiagnosticVirtualTextError = { fg = group.error },
|
|
||||||
DiagnosticVirtualTextHint = { fg = group.hint },
|
|
||||||
DiagnosticVirtualTextInfo = { fg = group.info },
|
|
||||||
DiagnosticVirtualTextWarn = { fg = group.warn },
|
|
||||||
|
|
||||||
LspReferenceText = { fg = palette.rose, bg = palette.highlight_med },
|
|
||||||
LspReferenceRead = { fg = palette.rose, bg = palette.highlight_med },
|
|
||||||
LspReferenceWrite = { fg = palette.rose, bg = palette.highlight_med },
|
|
||||||
|
|
||||||
-- TODO: Deprecate in favour of 0.6.0 groups
|
|
||||||
LspDiagnosticsSignWarning = { link = 'DiagnosticSignWarn' },
|
|
||||||
LspDiagnosticsDefaultWarning = { link = 'DiagnosticDefaultWarn' },
|
|
||||||
LspDiagnosticsFloatingWarning = { link = 'DiagnosticFloatingWarn' },
|
|
||||||
LspDiagnosticsVirtualTextWarning = { link = 'DiagnosticVirtualTextWarn' },
|
|
||||||
LspDiagnosticsUnderlineWarning = { link = 'DiagnosticUnderlineWarn' },
|
|
||||||
LspDiagnosticsSignHint = { link = 'DiagnosticSignHint' },
|
|
||||||
LspDiagnosticsDefaultHint = { link = 'DiagnosticDefaultHint' },
|
|
||||||
LspDiagnosticsVirtualTextHint = { link = 'DiagnosticFloatingHint' },
|
|
||||||
LspDiagnosticsFloatingHint = { link = 'DiagnosticVirtualTextHint' },
|
|
||||||
LspDiagnosticsUnderlineHint = { link = 'DiagnosticUnderlineHint' },
|
|
||||||
LspDiagnosticsSignError = { link = 'DiagnosticSignError' },
|
|
||||||
LspDiagnosticsDefaultError = { link = 'DiagnosticDefaultError' },
|
|
||||||
LspDiagnosticsFloatingError = { link = 'DiagnosticFloatingError' },
|
|
||||||
LspDiagnosticsVirtualTextError = { link = 'DiagnosticVirtualTextError' },
|
|
||||||
LspDiagnosticsUnderlineError = { link = 'DiagnosticUnderlineError' },
|
|
||||||
LspDiagnosticsSignInformation = { link = 'DiagnosticSignInfo' },
|
|
||||||
LspDiagnosticsDefaultInformation = { link = 'DiagnosticDefaultInfo' },
|
|
||||||
LspDiagnosticsFloatingInformation = { link = 'DiagnosticFloatingInfo' },
|
|
||||||
LspDiagnosticsVirtualTextInformation = { link = 'DiagnosticVirtualTextInfo' },
|
|
||||||
LspDiagnosticsUnderlineInformation = { link = 'DiagnosticUnderlineInfo' },
|
|
||||||
|
|
||||||
-- TSAttribute = {},
|
|
||||||
TSBoolean = { link = 'Boolean' },
|
|
||||||
TSCharacter = { link = 'Character' },
|
|
||||||
TSComment = { link = 'Comment' },
|
|
||||||
TSConditional = { link = 'Conditional' },
|
|
||||||
TSConstBuiltin = { fg = palette.love },
|
|
||||||
-- TSConstMacro = {},
|
|
||||||
TSConstant = { fg = palette.foam },
|
|
||||||
TSConstructor = { fg = palette.foam },
|
|
||||||
-- TSEmphasis = {},
|
|
||||||
-- TSError = {},
|
|
||||||
-- TSException = {},
|
|
||||||
TSField = { fg = palette.foam },
|
|
||||||
-- TSFloat = {},
|
|
||||||
TSFuncBuiltin = { fg = palette.love },
|
|
||||||
-- TSFuncMacro = {},
|
|
||||||
TSFunction = { fg = palette.rose },
|
|
||||||
TSInclude = { fg = palette.pine },
|
|
||||||
TSKeyword = { fg = palette.pine },
|
|
||||||
-- TSKeywordFunction = {},
|
|
||||||
TSKeywordOperator = { fg = palette.subtle },
|
|
||||||
TSLabel = { fg = palette.foam },
|
|
||||||
-- TSLiteral = {},
|
|
||||||
-- TSMethod = {},
|
|
||||||
-- TSNamespace = {},
|
|
||||||
-- TSNone = {},
|
|
||||||
TSNumber = { link = 'Number' },
|
|
||||||
TSOperator = { fg = palette.subtle },
|
|
||||||
TSParameter = { fg = palette.iris, style = maybe_italic },
|
|
||||||
-- TSParameterReference = {},
|
|
||||||
TSProperty = { fg = palette.iris, style = maybe_italic },
|
|
||||||
TSPunctBracket = { fg = group.punctuation },
|
|
||||||
TSPunctDelimiter = { fg = group.punctuation },
|
|
||||||
TSPunctSpecial = { fg = group.punctuation },
|
|
||||||
-- TSRepeat = {},
|
|
||||||
-- TSStrike = {},
|
|
||||||
TSString = { link = 'String' },
|
|
||||||
TSStringEscape = { fg = palette.pine },
|
|
||||||
-- TSStringRegex = {},
|
|
||||||
TSStringSpecial = { link = 'TSString' },
|
|
||||||
-- TSSymbol = {},
|
|
||||||
TSTag = { fg = palette.foam },
|
|
||||||
TSTagDelimiter = { fg = palette.subtle },
|
|
||||||
TSText = { fg = palette.text },
|
|
||||||
TSTitle = { fg = group.headings.h1, style = 'bold' },
|
|
||||||
TSType = { link = 'Type' },
|
|
||||||
-- TSTypeBuiltin = {},
|
|
||||||
TSURI = { fg = group.link },
|
|
||||||
-- TSUnderline = {},
|
|
||||||
TSVariable = { fg = palette.text, style = maybe_italic },
|
|
||||||
TSVariableBuiltin = { 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 = palette.base, bg = palette.base },
|
|
||||||
BufferVisible = { fg = palette.subtle },
|
|
||||||
BufferVisibleIndex = { fg = palette.subtle },
|
|
||||||
BufferVisibleMod = { fg = palette.foam },
|
|
||||||
BufferVisibleSign = { fg = palette.muted },
|
|
||||||
BufferVisibleTarget = { fg = palette.gold },
|
|
||||||
|
|
||||||
-- lewis6991/gitsigns.nvim
|
|
||||||
GitSignsAdd = { fg = group.git_add },
|
|
||||||
GitSignsChange = { fg = group.git_change },
|
|
||||||
GitSignsDelete = { fg = group.git_delete },
|
|
||||||
SignAdd = { link = 'GitSignsAdd' },
|
|
||||||
SignChange = { link = 'GitSignsChange' },
|
|
||||||
SignDelete = { link = 'GitSignsDelete' },
|
|
||||||
|
|
||||||
-- 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 = palette.love },
|
|
||||||
NvimTreeFileDirty = { fg = palette.rose },
|
|
||||||
NvimTreeFileMerge = { fg = palette.iris },
|
|
||||||
NvimTreeFileNew = { fg = palette.foam },
|
|
||||||
NvimTreeFileRenamed = { fg = palette.pine },
|
|
||||||
NvimTreeFileStaged = { fg = palette.iris },
|
|
||||||
NvimTreeFolderIcon = { fg = palette.subtle },
|
|
||||||
NvimTreeFolderName = { fg = palette.foam },
|
|
||||||
NvimTreeGitDeleted = { fg = group.git_delete },
|
|
||||||
NvimTreeGitDirty = { fg = group.git_dirty },
|
|
||||||
NvimTreeGitIgnored = { fg = group.git_ignore },
|
|
||||||
NvimTreeGitMerge = { fg = group.git_merge },
|
|
||||||
NvimTreeGitNew = { fg = group.git_add },
|
|
||||||
NvimTreeGitRenamed = { fg = group.git_rename },
|
|
||||||
NvimTreeGitStaged = { fg = group.git_stage },
|
|
||||||
NvimTreeImageFile = { fg = palette.text },
|
|
||||||
NvimTreeNormal = { fg = palette.text },
|
|
||||||
NvimTreeOpenedFile = { fg = palette.text, bg = palette.highlight_med },
|
|
||||||
NvimTreeOpenedFolderName = { fg = palette.foam },
|
|
||||||
NvimTreeRootFolder = { fg = palette.iris },
|
|
||||||
NvimTreeSpecialFile = { link = 'NvimTreeNormal' },
|
|
||||||
NvimTreeWindowPicker = { fg = palette.base, bg = palette.iris },
|
|
||||||
|
|
||||||
-- folke/which-key.nvim
|
|
||||||
WhichKey = { fg = palette.iris },
|
|
||||||
WhichKeyGroup = { fg = palette.foam },
|
|
||||||
WhichKeySeparator = { fg = palette.subtle },
|
|
||||||
WhichKeyDesc = { fg = palette.gold },
|
|
||||||
WhichKeyFloat = { bg = palette.surface },
|
|
||||||
WhichKeyValue = { fg = palette.rose },
|
|
||||||
|
|
||||||
-- luka-reineke/indent-blankline.nvim
|
|
||||||
IndentBlanklineChar = { fg = palette.muted },
|
|
||||||
|
|
||||||
-- hrsh7th/nvim-cmp
|
|
||||||
CmpItemAbbr = { fg = palette.subtle },
|
|
||||||
CmpItemAbbrDeprecated = { fg = palette.subtle, style = 'strikethrough' },
|
|
||||||
CmpItemAbbrMatch = { fg = palette.text, style = 'bold' },
|
|
||||||
CmpItemAbbrMatchFuzzy = { fg = palette.text, style = 'bold' },
|
|
||||||
CmpItemKind = { fg = palette.iris },
|
|
||||||
CmpItemKindClass = { fg = palette.gold },
|
|
||||||
CmpItemKindFunction = { fg = palette.iris },
|
|
||||||
CmpItemKindInterface = { fg = palette.gold },
|
|
||||||
CmpItemKindMethod = { fg = palette.iris },
|
|
||||||
CmpItemKindSnippet = { fg = palette.iris },
|
|
||||||
CmpItemKindVariable = { fg = palette.foam },
|
|
||||||
|
|
||||||
-- TimUntersberger/neogit
|
|
||||||
NeogitDiffAddHighlight = { fg = palette.foam, bg = palette.highlight_med },
|
|
||||||
NeogitDiffContextHighlight = { bg = palette.highlight_low },
|
|
||||||
NeogitDiffDeleteHighlight = { fg = palette.love, bg = palette.highlight_med },
|
|
||||||
NeogitHunkHeader = { bg = palette.highlight_low },
|
|
||||||
NeogitHunkHeaderHighlight = { bg = palette.highlight_low },
|
|
||||||
|
|
||||||
-- vimwiki/vimwiki
|
|
||||||
VimwikiHR = { fg = palette.subtle },
|
|
||||||
VimwikiHeader1 = { fg = group.headings.h1, style = 'bold' },
|
|
||||||
VimwikiHeader2 = { fg = group.headings.h2, style = 'bold' },
|
|
||||||
VimwikiHeader3 = { fg = group.headings.h3, style = 'bold' },
|
|
||||||
VimwikiHeader4 = { fg = group.headings.h4, style = 'bold' },
|
|
||||||
VimwikiHeader5 = { fg = group.headings.h5, style = 'bold' },
|
|
||||||
VimwikiHeader6 = { fg = group.headings.h6, style = 'bold' },
|
|
||||||
VimwikiHeaderChar = { fg = palette.pine },
|
|
||||||
VimwikiLink = { fg = group.link, style = 'underline' },
|
|
||||||
VimwikiList = { fg = palette.iris },
|
|
||||||
VimwikiNoExistsLink = { fg = palette.love },
|
|
||||||
|
|
||||||
-- nvim-neorg/neorg
|
|
||||||
NeorgHeading1Prefix = { fg = group.headings.h1, style = 'bold' },
|
|
||||||
NeorgHeading1Title = { link = 'NeorgHeading1Prefix' },
|
|
||||||
NeorgHeading2Prefix = { fg = group.headings.h2, style = 'bold' },
|
|
||||||
NeorgHeading2Title = { link = 'NeorgHeading2Prefix' },
|
|
||||||
NeorgHeading3Prefix = { fg = group.headings.h3, style = 'bold' },
|
|
||||||
NeorgHeading3Title = { link = 'NeorgHeading3Prefix' },
|
|
||||||
NeorgHeading4Prefix = { fg = group.headings.h4, style = 'bold' },
|
|
||||||
NeorgHeading4Title = { link = 'NeorgHeading4Prefix' },
|
|
||||||
NeorgHeading5Prefix = { fg = group.headings.h5, style = 'bold' },
|
|
||||||
NeorgHeading5Title = { link = 'NeorgHeading5Prefix' },
|
|
||||||
NeorgHeading6Prefix = { fg = group.headings.h6, style = 'bold' },
|
|
||||||
NeorgHeading6Title = { link = 'NeorgHeading6Prefix' },
|
|
||||||
NeorgMarkerTitle = { fg = palette.text, style = 'bold' },
|
|
||||||
|
|
||||||
-- tami5/lspsaga.nvim (fork of glepnir/lspsaga.nvim)
|
|
||||||
DefinitionCount = { fg = palette.rose },
|
|
||||||
DefinitionIcon = { fg = palette.rose },
|
|
||||||
DefintionPreviewTitle = { fg = palette.rose, style = 'bold' },
|
|
||||||
LspFloatWinBorder = { fg = group.border },
|
|
||||||
LspFloatWinNormal = { bg = palette.base },
|
|
||||||
LspSagaAutoPreview = { fg = palette.subtle },
|
|
||||||
LspSagaCodeActionBorder = { fg = group.border },
|
|
||||||
LspSagaCodeActionContent = { fg = palette.foam },
|
|
||||||
LspSagaCodeActionTitle = { fg = palette.gold, style = 'bold' },
|
|
||||||
LspSagaCodeActionTruncateLine = { link = 'LspSagaCodeActionBorder' },
|
|
||||||
LspSagaDefPreviewBorder = { fg = group.border },
|
|
||||||
LspSagaDiagnosticBorder = { fg = group.border },
|
|
||||||
LspSagaDiagnosticHeader = { fg = palette.gold, style = 'bold' },
|
|
||||||
LspSagaDiagnosticTruncateLine = { link = 'LspSagaDiagnosticBorder' },
|
|
||||||
LspSagaDocTruncateLine = { link = 'LspSagaHoverBorder' },
|
|
||||||
LspSagaFinderSelection = { fg = palette.gold },
|
|
||||||
LspSagaHoverBorder = { fg = group.border },
|
|
||||||
LspSagaLspFinderBorder = { fg = group.border },
|
|
||||||
LspSagaRenameBorder = { fg = palette.pine },
|
|
||||||
LspSagaRenamePromptPrefix = { fg = palette.love },
|
|
||||||
LspSagaShTruncateLine = { link = 'LspSagaSignatureHelpBorder' },
|
|
||||||
LspSagaSignatureHelpBorder = { fg = palette.pine },
|
|
||||||
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.highlight_high },
|
|
||||||
PounceAcceptBest = { fg = palette.base, bg = palette.gold },
|
|
||||||
PounceGap = { link = 'Search' },
|
|
||||||
PounceMatch = { link = 'Search' },
|
|
||||||
|
|
||||||
-- nvim-telescope/telescope.nvim
|
|
||||||
TelescopeBorder = { fg = group.border },
|
|
||||||
TelescopeMatching = { fg = palette.rose },
|
|
||||||
TelescopeNormal = { fg = palette.subtle },
|
|
||||||
TelescopePromptNormal = { fg = palette.text },
|
|
||||||
TelescopePromptPrefix = { fg = palette.subtle },
|
|
||||||
TelescopeSelection = { fg = palette.text, bg = palette.overlay },
|
|
||||||
TelescopeSelectionCaret = { fg = palette.rose, bg = palette.overlay },
|
|
||||||
TelescopeTitle = { fg = palette.subtle },
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
return theme
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
local util = {}
|
|
||||||
|
|
||||||
local function get_byte(value, offset)
|
|
||||||
return bit.band(bit.rshift(value, offset), 0xFF)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_color(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 { get_byte(color, 16), get_byte(color, 8), get_byte(color, 0) }
|
|
||||||
end
|
|
||||||
|
|
||||||
---@param fg string foreground color
|
|
||||||
---@param bg string background color
|
|
||||||
---@param alpha number number between 0 (background) and 1 (foreground)
|
|
||||||
function util.blend(fg, bg, alpha)
|
|
||||||
bg = get_color(bg)
|
|
||||||
fg = get_color(fg)
|
|
||||||
|
|
||||||
local function blend_channel(i)
|
|
||||||
local ret = (alpha * fg[i] + ((1 - alpha) * bg[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
|
|
||||||
|
|
||||||
return util
|
|
||||||
65
lua/rose-pine/utilities.lua
Normal file
65
lua/rose-pine/utilities.lua
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
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
|
||||||
205
readme.md
205
readme.md
|
|
@ -11,144 +11,151 @@
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## Usage
|
## Getting started
|
||||||
|
|
||||||
|
Install `rose-pine/neovim` using your favourite package manager:
|
||||||
|
|
||||||
|
### [pam.nvim](https://github.com/mvllow/pam.nvim)
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
use({
|
{ source = "rose-pine/neovim", as = "rose-pine" }
|
||||||
'rose-pine/neovim',
|
|
||||||
as = 'rose-pine',
|
|
||||||
-- tag = '...',
|
|
||||||
config = function()
|
|
||||||
vim.cmd('colorscheme rose-pine')
|
|
||||||
end
|
|
||||||
})
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Plugins
|
### [lazy.nvim](https://lazy.folke.io/installation)
|
||||||
|
|
||||||
> PR's are more than welcome if your favourite plugin is missing
|
**Structured Setup**
|
||||||
|
|
||||||
- [neovim diagnostics](https://neovim.io/doc/user/lsp.html)
|
|
||||||
- [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter)
|
|
||||||
- [barbar.nvim](https://github.com/romgrk/barbar.nvim)
|
|
||||||
- [gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim)
|
|
||||||
- [mode.nvim](https://github.com/mvllow/modes.nvim)
|
|
||||||
- [nvim-tree.lua](https://github.com/kyazdani42/nvim-tree.lua)
|
|
||||||
- [which-key.nvim](https://github.com/folke/which-key.nvim)
|
|
||||||
- [indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim)
|
|
||||||
- [neogit](https://github.com/TimUntersberger/neogit)
|
|
||||||
- [neorg](https://github.com/nvim-neorg/neorg)
|
|
||||||
- [lspsaga.nvim](https://github.com/tami5/lspsaga.nvim)
|
|
||||||
- [pounce.nvim](https://github.com/rlane/pounce.nvim)
|
|
||||||
- [telescope.nvim](https://github.com/nvim-telescope/telescope.nvim)
|
|
||||||
- [lualine.nvim](https://github.com/nvim-lualine/lualine.nvim)
|
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
use({
|
-- lua/plugins/rose-pine.lua
|
||||||
'nvim-lualine/lualine.nvim',
|
return {
|
||||||
-- Fix mismatch palette between variants
|
"rose-pine/neovim",
|
||||||
event = 'ColorScheme',
|
name = "rose-pine",
|
||||||
config = function()
|
config = function()
|
||||||
require('lualine').setup({
|
vim.cmd("colorscheme rose-pine")
|
||||||
options = {
|
|
||||||
---@usage 'rose-pine' | 'rose-pine-alt'
|
|
||||||
theme = 'rose-pine'
|
|
||||||
}
|
|
||||||
})
|
|
||||||
end
|
end
|
||||||
})
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
- [galaxyline.nvim fork](https://github.com/NTBBloodbath/galaxyline.nvim)
|
**Single file**
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local colors = require("galaxyline.themes.colors")["rose-pine"]
|
{ "rose-pine/neovim", name = "rose-pine" }
|
||||||
```
|
```
|
||||||
|
|
||||||
## Gallery
|
## Gallery
|
||||||
|
|
||||||
**Rosé Pine**
|
**Rosé Pine**
|
||||||
|
|
||||||

|

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

|

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

|

|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
|
|
||||||
> Options should be set **before** colorscheme
|
> [!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
|
||||||
-- set theme variant, matching terminal theme if unset
|
require("rose-pine").setup({
|
||||||
-- @usage 'main' | 'moon' | 'dawn'
|
variant = "auto", -- auto, main, moon, or dawn
|
||||||
vim.g.rose_pine_variant = ''
|
dark_variant = "main", -- main, moon, or dawn
|
||||||
|
dim_inactive_windows = false,
|
||||||
|
extend_background_behind_borders = true,
|
||||||
|
|
||||||
vim.g.rose_pine_bold_vertical_split_line = false
|
enable = {
|
||||||
vim.g.rose_pine_disable_background = false
|
terminal = true,
|
||||||
vim.g.rose_pine_disable_float_background = false
|
legacy_highlights = true, -- Improve compatibility for previous versions of Neovim
|
||||||
vim.g.rose_pine_disable_italics = false
|
migrations = true, -- Handle deprecated options automatically
|
||||||
vim.g.rose_pine_inactive_background = false
|
},
|
||||||
|
|
||||||
local palette = require('rose-pine.palette')
|
styles = {
|
||||||
vim.g.rose_pine_colors = {
|
bold = true,
|
||||||
border = palette.highlight_med,
|
italic = true,
|
||||||
comment = palette.muted,
|
transparency = false,
|
||||||
link = palette.iris,
|
},
|
||||||
punctuation = palette.subtle,
|
|
||||||
|
|
||||||
error = palette.love,
|
groups = {
|
||||||
hint = palette.iris,
|
border = "muted",
|
||||||
info = palette.foam,
|
link = "iris",
|
||||||
warn = palette.gold,
|
panel = "surface",
|
||||||
|
|
||||||
git_add = palette.foam,
|
error = "love",
|
||||||
git_change = palette.rose,
|
hint = "iris",
|
||||||
git_delete = palette.love,
|
info = "foam",
|
||||||
git_dirty = palette.rose,
|
note = "pine",
|
||||||
git_ignore = palette.muted,
|
todo = "rose",
|
||||||
git_merge = palette.iris,
|
warn = "gold",
|
||||||
git_rename = palette.pine,
|
|
||||||
git_stage = palette.iris,
|
|
||||||
git_text = palette.rose,
|
|
||||||
|
|
||||||
-- or set all headings to one colour: `headings = palette.text`
|
git_add = "foam",
|
||||||
headings = {
|
git_change = "rose",
|
||||||
h1 = palette.iris,
|
git_delete = "love",
|
||||||
h2 = palette.foam,
|
git_dirty = "rose",
|
||||||
h3 = palette.rose,
|
git_ignore = "muted",
|
||||||
h4 = palette.gold,
|
git_merge = "iris",
|
||||||
h5 = palette.pine,
|
git_rename = "pine",
|
||||||
h6 = palette.foam,
|
git_stage = "iris",
|
||||||
},
|
git_text = "rose",
|
||||||
}
|
git_untracked = "subtle",
|
||||||
|
|
||||||
-- Set colorscheme after options
|
h1 = "iris",
|
||||||
vim.cmd('colorscheme rose-pine')
|
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")
|
||||||
```
|
```
|
||||||
|
|
||||||
## Suggested keymaps
|
> [!NOTE]
|
||||||
|
> 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).
|
||||||
```lua
|
|
||||||
-- toggle between all variants
|
|
||||||
vim.keymap.set('n', '<leader>tt', require('rose-pine').toggle)
|
|
||||||
|
|
||||||
-- or toggle between some variants
|
|
||||||
vim.keymap.set('n', '<leader>tt', function() return require('rose-pine').toggle({'moon', 'dawn'}) end)
|
|
||||||
|
|
||||||
-- set variant
|
|
||||||
vim.keymap.set('n', '<leader>t1', function() return require('rose-pine').set('main') end)
|
|
||||||
vim.keymap.set('n', '<leader>t2', function() return require('rose-pine').set('moon') end)
|
|
||||||
vim.keymap.set('n', '<leader>t3', function() return require('rose-pine').set('dawn') end)
|
|
||||||
```
|
|
||||||
|
|
||||||
## 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 or [treesitter improvements](https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md#highlights).
|
||||||
|
|
||||||
- [Get highlight groups under cursor](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)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue