Compare commits

..

191 commits

Author SHA1 Message Date
Antoine Bertin
72a04c4065
feat: add AvantePromptInput highlight support (#368)
* feat: add AvantePromptInput highlight support
2025-08-24 09:50:23 -05:00
HieuDao-code
0e70556c8c
feat(diffview.nvim): add support for sindrets/diffview.nvim (#369) 2025-08-24 09:47:05 -05:00
Dawid Karpiński
72befaffea
fix: do not clear blend prop from highlight (#351)
* add private built-in blend override

---------

Co-authored-by: mvllow <mvllow@icloud.com>
2025-07-18 15:25:55 -05:00
fdcote
f93360149e
feat: add ModesFormat (#367) 2025-06-26 16:32:32 -05:00
Adrian Schneider
83c66bcadb
feat(grug-far): add highlight groups for add/remove results (#366) 2025-06-26 12:31:24 -05:00
fdcote
6b9840790c feat: add QuickFixLine (#357) 2025-05-05 12:13:20 -05:00
Andrei Heidelbacher
d195ed8673 feat(blink.cmp): improve BlinkCmpDoc contrast between current line (#356) 2025-05-01 16:55:24 -05:00
Andrei Heidelbacher
a67f5ef34b fix(blink.cmp): remove dedicated BlinkCmpDoc highlight (#355)
The default `BlinkCmpDoc` highlight is linked to `NormalFloat`, which is
a sensible default. However, due to overriding the default link with
only `fg` provided, the `bg` is cleared and the documentation popup is
indistinguishable from regular text.

This change is technically a no-op in terms of intended palette, because
`NormalFloat` should already use `palette.text`, and only fixes the
cleared `bg` bug.
2025-04-30 20:53:00 -05:00
Andrei Heidelbacher
39ec539f83 feat(lualine): change background from base to surface (#354)
This change improves the contrast of the statusline while aligning with the theme's spec.
2025-04-30 20:02:53 -05:00
aileot
5ccc379822 fix: set background=light if variant is "dawn" (#349)
* fix: set `background=light` if variant is "dawn"

This change might fix https://github.com/rose-pine/neovim/issues/321

* Update lua/rose-pine.lua

* fix: restrict variants that override `&background`

The other variant params are considered as if "auto"
2025-03-31 10:27:19 -05:00
stelo
d7dc9cd3f2 feat: extends DapUIType fg to iris (#348) 2025-03-11 21:25:25 -05:00
mvllow
44739383b9 docs: add highlight group examples with blend and inherit options 2025-02-25 19:58:52 -06:00
Tiago
8b216f7252 feat: add support for vim-sneak (#342) 2025-02-23 15:19:21 -06:00
mvllow
0511701746 feat: use experimental darker text for dawn 2025-02-05 19:49:14 -06:00
mvllow
946de320f4 fix: strip non-standard blend properties 2025-02-05 19:36:24 -06:00
mvllow
340cf5ed5e feat(perf): cache colors for up to 3x speed improvements 2025-02-05 19:35:55 -06:00
mvllow
f01eac6eed fix: invalid palette format 2025-02-03 11:28:57 -06:00
mvllow
3d71ab02f2 feat: reduce background opacity for special comments 2025-02-03 11:06:21 -06:00
mvllow
0ca4bfbc6f feat: set attribute style 2025-02-03 11:05:57 -06:00
mvllow
8db1217704 feat: use consistent variable styles 2025-02-03 11:05:44 -06:00
mvllow
2b88dfb054 refactor: update documentation 2025-02-03 11:05:20 -06:00
aileot
ffd5b69948 refactor(gitsigns): avoid redundant links (#336)
The `SignAdd`, `SignChange`, and `SignDelete` are never referenced by
any other highlight definitions than the previous `GitSigns` ones before
this change.

The isolated definitions are only left for backward compatibility.
2025-02-02 15:09:20 -06:00
Patrick Haun
6b51153905 More obvious match highlight in snacks.picker (#335) 2025-01-15 14:28:37 -06:00
Federico Minaya
40f03c4df1 feat: add snacks indent highlights (#334) 2025-01-14 15:20:19 -06:00
mvllow
463742691b feat: add Notify*Body highlights
Fixes #331
2025-01-08 09:37:09 -06:00
mvllow
c306f13158 feat: use blended iris for visual
Fixes #277
2025-01-08 09:09:59 -06:00
mvllow
fc418a716f fix: lualine transparency
Fixes #333
2025-01-07 09:47:00 -06:00
YarLama
36526815ee Update readme.md (#328)
* Update readme.md

Extended description for Structured Setup lazy.nvim

* Update readme.md

---------

Co-authored-by: mvllow <mvllow@icloud.com>
2024-12-10 09:50:19 -06:00
Metin Yalcinkaya
a449bb2599 feat: added highlight support for Saghen/blink.cmp (#329)
Closes #326
2024-12-10 09:39:28 -06:00
Anupam Basu
5e7bf83782 feat: add highlight support for epwalsh/obsidian.nvim (#323)
---------

Co-authored-by: mvllow <mvllow@icloud.com>
2024-10-23 18:59:08 -04:00
mvllow
1ebe0a5171 feat: use gold for search
Closes #305
2024-10-08 10:22:29 -05:00
not
8869e546d4 feat(transparency): support trouble.nvim (#319) 2024-08-25 13:09:15 -05:00
not
2f44ef189f feat: use neutral colours for search (#318) 2024-08-25 12:41:35 -05:00
not
22f873c7db fix: palette typo (#317) 2024-08-25 12:37:07 -05:00
dav-cho
33a1ba3126 fix: wrong spelling for palette (#316) 2024-08-25 12:35:29 -05:00
Aaron Pham
fe9e661cda feat(plugins): add support for avante.nvim (#315) 2024-08-25 12:20:43 -05:00
jostaub
94ffdb7748 feat: palette overrides (#307)
* feat: palette overrides

* removed option all from palett override

* removed dead code forgotten in last commit

* fix typo in readme and simplified comment

Co-authored-by: not <mvllow@icloud.com>

---------

Co-authored-by: not <mvllow@icloud.com>
2024-08-14 13:40:33 -05:00
Allan Deutsch
d97cc7fcd7 fix: nvim-notify background (#308) 2024-08-12 15:59:44 -05:00
Vlad
7f0b8c4c7f chore: markdown.nvim renamed to render-markdown.nvim (#309)
Reference to change:
aeb5cec617
2024-08-05 15:59:59 -05:00
Shaun Clayton
c14da532fa feat: add support for grug-far.nvim (#304)
* feat: add support for grug-far.nvim

* fix: change link for results match to `CurSearch`

Co-authored-by: not <mvllow@icloud.com>

* fix: add highlights for line numbers

---------

Co-authored-by: not <mvllow@icloud.com>
2024-07-25 16:47:21 -05:00
Shaun Clayton
8b1a2e73d2 feat: add support for markdown.nvim (#303)
* feat: add support for markdown.nvim

* fix: tweaked some highlights to achieve better appearance

* fix: adjust heading highlights to use group linking
2024-07-24 16:29:39 -05:00
not
d6112a7c56 fix(transparency): lualine separator (#301)
Fixes #288
2024-07-23 21:51:43 -05:00
not
535240c846 feat: highlight neotree tabs (#300)
Fixes #263
2024-07-23 19:17:59 -05:00
Shaun Clayton
f7c01f07ee fix: fzf-lua invisible selection (#299)
* fix: invisible text in selection in fzf-lua

* fix: correct bg color for FzfLuaNormal

* fix: invisible text in selection in fzf-lua

* fix: correct bg color for FzfLuaNormal

* fix: change linking and add highlight for FzfLuaFilePart

* fix: linking to 'FloatTitle' for WhichKeyTitle

This works the same as the original fix, confirmed by testing
against nvim 0.10.0 and nightly.

Prefer linking over previous solution.
2024-07-23 16:56:40 -05:00
not
656f360ded feat: improve diff text (#297) 2024-07-22 16:07:45 -05:00
not
5929bc8683 feat: improve float transparency (#298) 2024-07-22 11:12:10 -05:00
Shaun Clayton
bf7ceb32fa chore: update mini-icons highlights to use appropriate colors (#295) 2024-07-22 10:17:13 -05:00
Shaun Clayton
3bbd8a865c fix: broken transparency for treesitter-context (#294) 2024-07-22 00:23:59 -05:00
Shaun Clayton
afb46f9b66 fix: add missing highlight (#293) 2024-07-21 23:06:14 -05:00
Shaun Clayton
f2bf6e8d49 feat: add support for rainbow-delimiters.nvim (#292) 2024-07-21 16:39:15 -05:00
Shaun Clayton
2f1733d36f feat: add support for icons in which-key.nvim (#291)
* feat: add icon support for which-key.nvim

* fix: incorrect color reference

* feat: set WhichKeyIcon hl group to 'pine' by default

Used when the colors option is set to false.
2024-07-21 16:12:11 -05:00
Shaun Clayton
c4b55e85fb feat(palette): add initial support for new color leaf (#290)
* feat(palette): add new color 'leaf'

* feat: add  highlight groups to defaults
2024-07-21 13:17:17 -05:00
Shaun Clayton
fe5f4e11f7 chore: update highlights for which-key.nvim (#287)
* chore: update highlights for which-key.nvim

* fix: revert placement of WhichKeyFloat hl group

* feat: add additional highlight groups for icons in which-key

* Revert "feat: add additional highlight groups for icons in which-key"

Need to come up with a different solution.

This reverts commit 18d70420a2.

* fix: use explicit fg and bg for WhichKeyTitle

* Revert "fix: use explicit fg and bg for WhichKeyTitle"

Breaks extend_background_behind_borders again... Oops

This reverts commit 1389556a19.
2024-07-15 10:21:08 -05:00
Ilya Kuporosov
69b3aa9500 fix: link @lsp.type.comment.c, @lsp.type.comment.cpp to @comment (#282)
It fixes branches of conditional directives like `#if` and `#ifdef` in C and C++
appearing as if they both are true, without breaking TODO comments.
2024-07-03 16:23:19 -05:00
not
71852123cc feat: set matching background on MiniFilesTitle (#280) 2024-06-27 12:55:27 -05:00
Evgeni Chasnovski
6d476a5c64 feat: add explicit full 'mini.nvim' support (#279) 2024-06-27 12:51:35 -05:00
not
958dce3da9 feat: support upcoming modes.nvim update (#274)
[modes.nvim](https://github.com/mvllow/modes.nvim) is about to
incorporate replace mode.
2024-06-09 10:48:51 -05:00
abvee
511e82e272 Added ["@float"] to default_highlights (#272) (#273) 2024-05-25 21:52:38 -05:00
not
f67828be44 Revert "feat: new themes for lualine (#267)" (#269)
This reverts commit cbc2064f4c.
2024-05-14 09:42:41 -05:00
PRIZ ;]
cbc2064f4c feat: new themes for lualine (#267) 2024-05-10 12:22:41 -05:00
Hayden Rouille
c8477ee978 For transparency, remove BG for buffers and gray out the text (#265) 2024-04-18 09:48:05 -05:00
not
8d9c83d145 format (#264) 2024-04-09 13:00:32 -05:00
Dhruvin Shah
465b7dc623 feat: adding vim-illuminate highlights (#262) 2024-04-09 12:57:04 -05:00
Adam K
e4c22a9163 fix(python): import semantic_tokens from basedpyright (#257)
* fix(python): import semantic_tokens from basedpyright

* fix: restores svelte string highlights
2024-04-09 12:56:29 -05:00
Dave Greene
01dc90af2f Fixed enum use vs magic string (#261) 2024-03-29 22:39:26 -05:00
Julius Rüberg
63f4613365 feat: add highlights for nvim-treesitter-context (#260) 2024-03-29 19:51:22 -05:00
not
1f22d4e97e feat: add mini.diff (#259) 2024-03-28 19:32:00 -05:00
Jaehwang Jung
a959c73910 fix: clear autocmd when changing colorscheme (#254) 2024-03-23 13:53:11 -05:00
not
3dbb8a99bd feat: highlight lsp variable constant (#246)
Closes #245
2024-03-19 18:51:46 -05:00
James Knight
e901a53e41 feat: add mini.statusline highlights (#250) 2024-03-15 12:08:52 -05:00
Andrew
c8e97915d1 feat: add highlight groups for folke/trouble.nvim (#248) 2024-03-05 08:47:17 -06:00
Fitrah
12ace889a0 fix(migrate): avoid ternary 'falls through' state (#242)
See: https://riptutorial.com/lua/example/26503/emulating-ternary-operator-with--and---or--logical-operators-#undefined
2024-02-14 09:58:18 -06:00
not
e28cda232b feat: prioritise semantic variable highlighting (#240) 2024-02-11 20:11:47 -06:00
not
ea3f15ca95 fix: markdown delimiter (#238) 2024-02-08 13:44:50 -06:00
not
4372c4eb49 feat: improve markdown syntax (#237)
* types: update highlight type

* feat: improve markdown highlighting
2024-02-08 13:42:03 -06:00
Maxim Kozhukh
95e9767165 feat: use treesitter highlights for @lsp.type.variable (#233) 2024-01-29 09:57:21 -06:00
Lin Tinusgrag
9d0e1b70d9 feat: make markdown headings distinguishable with treesitter (#232) 2024-01-29 09:54:19 -06:00
Maxim Kozhukh
75d145fa08 fix: unable to override linked groups (#230) 2024-01-29 09:48:02 -06:00
Eric Milford
4452ecd140 feat: Add support for Neotest (#225)
https://github.com/nvim-neotest/neotest/
2024-01-27 21:02:37 -06:00
not
0b77ef0e7b chore: update variable highlights (#226) 2024-01-27 20:34:00 -06:00
Wahyu Wiyoko
8514c638bc fix: misspelled highlight group name (#223) 2024-01-27 09:43:15 -06:00
not
e62a61166e fix: regression in options (#221)
* fix: headings not migrating to flat options

* fix: invalid key when using inherit
2024-01-26 21:43:53 -06:00
not
7ed74e3f24 feat: add new treesitter highlights (#217)
* feat: add WinBar and WinBarNC

* feat: add new treesitter highlight groups

* perf: parse necessary values upfront

This commit no longer parses each highlight group, but rather user
config values only.

* fix: titles are no longer dynamically coloured

Closes #216 #218 #219
2024-01-26 14:12:54 -06:00
not
f4d51d67ee feat: add mini.clue and mini.pick (#215) 2024-01-18 10:28:16 -06:00
not
aa74893a06 fix: unlink TabLine from StatusLine (#214) 2024-01-16 08:31:18 -06:00
atinylittleshell
1ffdf27819 feat(transparency): remove lualine background (#212) 2024-01-14 21:28:49 -06:00
not
e0674e5e5c feat: support folke/flash.nvim (#211) 2024-01-12 20:46:04 -06:00
Robin Gruyters
79e0d756b9 chore: update highlights for indent-blanklines (#210) 2024-01-12 20:39:12 -06:00
not
46044020c6 feat: improve neogit support (#209)
* feat: improve neogit support

* add change copied
2024-01-09 15:44:36 -06:00
not
1edcf47562 fix: mismatched WinSeparator background (#208)
* fix: mismatched WinSeparator background

* feat: use border group for bolded vert split

* fix: Pmenu fg typo
2024-01-08 09:43:57 -06:00
not
188190f285 revert: improve palette contrast (#207)
This commit restores the official palette colours. A future update will
address contrast.
2024-01-08 09:27:46 -06:00
not
bfa2d2b2fb feat(transparency): remove more backgrounds (#205)
* feat(transparency): remove border background

* chore(transparency): remove telescope selection caret background
2024-01-07 23:41:02 -06:00
not
2c892088f9 fix: transparency not affecting Normal background (#204) 2024-01-07 19:27:50 -06:00
not
76b6d830f6 feat!: enable extend_background_behind_borders by default (#201) 2024-01-07 17:55:48 -06:00
not
82285ba9f1 fix: none palette value (#200) 2024-01-07 17:35:36 -06:00
not
86fa83761e feat: re-add inherit option for custom highlight groups (#198) 2024-01-07 15:39:30 -06:00
not
29477a109a feat!: add new options with better support for transparency (#185)
This commit adds a few new options and improves transparency support.

Enable transparency styles:

```lua
styles = { transparency = true }
```

Feedback is appreciated!
2024-01-07 13:42:09 -06:00
mortezadadgar
84a88f68e1 Add support for fzf-lua (#194)
In a attempt make it more like telescope colors.
2024-01-07 13:14:25 -06:00
not
c48de5d8f8 Update readme.md (#181) 2023-10-25 14:43:34 -05:00
not
8f37719a51 docs: fix readme typo (#179) 2023-07-28 23:04:08 +02:00
not
bca840fc90 docs: update installation (#178) 2023-07-28 23:03:23 +02:00
Tobias Sommer
70c641a0b7 docs: add inherit option (#175)
* Remove the option, which is not longer implemented
* Add an example for the inherit highlight config
2023-07-22 16:31:03 +02:00
Asthestarsfalll
eb4c5591c7 feat: color for flash (#174) 2023-07-21 10:09:29 +02:00
Niamh Ferns
805a183dde feat!: custom user highlight groups are merged with Rosé Pine defaults (#171)
Configuring `highlight_groups` now merge by default. For example, to add italics without changing the colour:

```diff
- Keyword = { fg = "pine", italic = true }
+ Keyword = { italic = true }
```

Opt out of this behaviour via `inherit = false`.
2023-07-15 17:04:58 +02:00
not
c552fcadac feat: update tag and includes for consistency with semantic tokens (#168) 2023-06-21 16:34:13 +02:00
not
3b3ca9ebb9 feat: change @method from iris to rose (#167)
Closes #164
2023-06-21 15:37:44 +02:00
Pedro Cattori
4e0e82b3af feat: colors for hop (#165) 2023-06-19 19:48:24 +02:00
Pedro Cattori
838b33cdc4 feat: colors for neo-tree (#166) 2023-06-19 19:48:02 +02:00
Sebastian Wiegandt
9ecd30d749 Improve Treesitter heading highlighting for Markdown (#163) 2023-06-10 23:56:22 +02:00
mvllow
ab6ab41da0 chore: clean up types and setup logic 2023-06-07 00:14:45 +02:00
mvllow
0fb313c3c5 fix: reset palette when switching colorschemes 2023-05-28 17:25:09 +02:00
not
eb057bd6dd Update bug_report.yml (#157) 2023-04-30 16:27:50 -05:00
not
75bb6e5a6d Update bug_report.yml 2023-04-27 12:23:40 -05:00
not
89bcc4b197 Update bug_report.yml 2023-04-27 12:22:09 -05:00
Fitrah
9cb8497413 fix: reset @lsp.type.comment (#155) 2023-04-18 11:29:36 -05:00
Егор Мартынов
15eeca1d44 fix(indent-blankline): fix italic indent lines (#154) 2023-04-12 18:02:24 -05:00
not
adc339c315 docs: remove empty setup function (#151) 2023-03-30 17:04:49 -05:00
not
196cb4cb06 chore: update config types (#150) 2023-03-30 13:00:32 -05:00
mvllow
8b63bcd142 feat: update bufferline selected tab
Ref #149
2023-03-30 12:23:39 -05:00
mvllow
3044a86a2c Merge branch 'main' of github.com:rose-pine/neovim 2023-03-23 14:03:19 -05:00
mvllow
88dfcf9e8a feat: match editor background for GitSigns* gutter 2023-03-23 14:02:37 -05:00
Егор Мартынов
3eb035f569 feat: add lsp injected highlights (#148) 2023-03-23 08:17:32 -05:00
mvllow
6fd3a3f1b5 feat: alias _experimental_nc to nc in the palette 2023-03-22 18:44:38 -05:00
Pedro Cattori
d500424a30 feat: highlights for goolord/alpha-nvim (#146) 2023-03-19 09:37:25 -05:00
mvllow
af49f208f0 groups.background now overrides all base instances 2023-03-12 14:35:16 -05:00
Jakub Theimer
5e48e3083a add highlights for mini.indentscope (#144) 2023-03-09 12:22:33 -06:00
Will Leinweber
8e66255eee Add popup title bar color for NeoTree (#140) 2023-03-08 09:10:19 -06:00
Егор Мартынов
576c0d2cb1 add @lsp.type highlight groups (add support for lsp semantic token groups) (#141) 2023-03-08 09:09:04 -06:00
Егор Мартынов
61ea7ce033 feat: add NoiceCursor highlight group (#138) 2023-03-07 21:45:48 -06:00
not
36feaf500f docs: remove empty setup function (#137) 2023-03-06 15:20:48 -06:00
not
2a7381e9ab feat: update navic colours (#136) 2023-03-06 15:07:12 -06:00
not
826458a62c feat: add background_nc and panel_nc groups (#130) (#132) 2023-03-06 14:40:10 -06:00
Jakub Theimer
832f94a957 Add highlights for nvim-navic (#135) 2023-03-06 14:35:28 -06:00
Tom Marien
80695a625c feat: added leap highlight groups (#133) 2023-03-04 09:17:46 -06:00
Brian Di Palma
a68fd96801 fix: Make extent/size of floating windows clearer (#129) 2023-02-24 12:06:25 -06:00
not
022be54f7d Update readme.md 2023-02-23 14:34:03 -06:00
mvllow
8f3894b5b8 fix: transparent Pmenu when disable_float_background
Closes #124
2023-02-23 14:03:14 -06:00
not
16a4739664 Merge canary (#114)
* feat!: use new highlight api

* feat: support custom highlight blending

Example:

```
{
	highlight_groups = {
		StatusLine = { bg = 'love', blend = 10 }
	}
}
```

* refactor: move config into separate file

* wip: update semantic tokens

* ci: add issue templates

Thanks to https://github.com/folke/lazy.nvim for the inspiration!

* ci: fix template formatting

* chore: update editorconfig

* fix: decouple more backgrounds from floats

* change `@tag.attribute` to iris

* add cursor highlights

Closes #121

* match link underline colour

* improve `dim_nc_background` behaviour

ref #123

* feat: expose each variant as individual theme

ref #98

* feat: update tokens

ref #107

* feat: distinguish between `CmpItemKind`'s
2023-02-22 13:25:36 -06:00
not
9e30b45caf Update readme.md 2023-01-17 21:09:31 -05:00
not
6d91e39c28 Update bug_report.yml 2023-01-17 21:07:28 -05:00
mvllow
61e22c730b fix: decouple StatusLine background from floats 2023-01-16 23:42:14 -05:00
mvllow
b33cdf76cd chore: update editorconfig 2023-01-13 14:11:12 -05:00
mvllow
7f6a7364de ci: fix template formatting 2023-01-13 13:58:29 -05:00
mvllow
d1e3278a45 ci: add issue templates
Thanks to https://github.com/folke/lazy.nvim for the inspiration!
2023-01-13 13:55:30 -05:00
Arkady Rost
37fa09c6d2 Fixed Telescope background in case when config.disable_background = true and (#110)
config.disable_float_background = false

Co-authored-by: Arkady Rost <arost@almworks.com>
2023-01-03 12:47:51 -06:00
Zakhary Kaplan
9fd19a9514 fix: indent-blankline missing hlGroups (#108) 2022-12-27 11:23:58 -06:00
not
db7e63846f create license
closes #106
2022-12-03 11:10:00 -05:00
numToStr
8ce63c8692 chore: rename colors/rose-pine.{vim => lua} (#105) 2022-11-20 09:39:24 -05:00
Slotos
148a6d2577 Ease up diff backgrounds (#104)
Lower the blend intensity to leave sufficient colour difference for the eye to catch on.
2022-11-08 20:45:19 -05:00
Slotos
4b6d23ff2e Ease up diff backgrounds (#104)
Lower the blend intensity to leave sufficient colour difference for the eye to catch on.
2022-11-08 20:39:38 -05:00
Pedro Carreño
d04e8b2aa5 fix: bufferline deprecated names (#102) 2022-10-24 12:26:41 -05:00
Myuwi
3eac7f3baa fix: add support for @* treesitter highlight groups (#101) 2022-10-20 15:15:40 -05:00
Mi Yu
e67b0bfdfe feat: Add neovim :checkhealth highlight groups (#100) 2022-10-03 10:39:52 -04:00
Daniel
39dd687ed9 feat: Add support to markid (#97) (#99) 2022-09-20 09:40:30 -04:00
Guilherme de Andrade
47dd2ad6ba docs: remove tag option from Packer snippet (#96) 2022-09-18 12:22:07 -04:00
mvllow
95dd29d70c reduce SpellBad importance 2022-09-06 17:28:48 -04:00
gdnand
506de581e5 ADD: dashboard hlGroups (#90) 2022-08-14 08:59:26 -04:00
Will Leinweber
006aac9d67 feat: Add nvim-dap-ui highlight groups (#87) 2022-07-16 23:08:57 -04:00
mvllow
04fa9d94a5 refactor(nvim-tree): link folder names 2022-07-08 19:53:27 -04:00
mvllow
28edf05036 feat: allow overriding unset highlight groups 2022-06-16 00:52:16 -04:00
mvllow
b0724442eb refactor: remove deprecation messages 2022-06-16 00:52:16 -04:00
mvllow
c253ca2586 docs: move supported plugins to the wiki 2022-06-16 00:52:16 -04:00
mvllow
c3762c935e refactor!: move galaxyline theme to rose-pine.plugins.galaxyline 2022-06-16 00:51:29 -04:00
mvllow
4a3b4512fc refactor: format and remove unused values
- update format rules
- update plugin file headers
- remove unused opacity from palette
2022-06-16 00:43:09 -04:00
mvllow
bc07e54924 chore: reduce contrast of ColorColumn
To override highlights: https://github.com/rose-pine/neovim#options
2022-06-14 11:59:22 -04:00
mvllow
a60b0e6581 feat: support WildMenu 2022-06-14 11:34:50 -04:00
crows
23685a0a2e feat: improve contrast of the FloatTitle (#83) 2022-06-02 11:07:52 -04:00
fvrests
aeec916cba link to packer.nvim 2022-05-14 11:58:12 -04:00
Will Leinweber
15894e3f21 Add CurSearch highlight group (#81) 2022-05-06 12:34:05 -04:00
Fitrah Muhammad
1ef267ddcc add LspCodelensXXX highlight group (#80) 2022-04-25 16:32:28 -04:00
not
c68bfa077b Update readme.md 2022-04-19 09:09:57 -05:00
Will Leinweber
de2a00774d chore: move image to github cdn (#78) 2022-04-19 09:07:45 -05:00
not
853112468d docs: remove duplicated usage 2022-04-15 13:02:57 -04:00
not
c38b23c022 add toggleterm highlights and initial bufferline highlights (#77) 2022-04-15 09:16:03 -04:00
Fitrah Muhammad
b10a5c3432 add LspReferenceXXX highlight group (#75) 2022-04-11 10:19:35 -04:00
not
49647d12b4 docs: update readme 2022-04-09 16:27:39 -04:00
not
e153a6b7eb add highlight groups (#74) 2022-04-01 12:28:34 -04:00
mvllow
2f7d458414 docs: add groups.background and groups.panel 2022-03-17 13:42:41 -04:00
mvllow
1346db5bde add groups.background and groups.panel
closes #73
2022-03-17 13:41:33 -04:00
Will Leinweber
2dea84a91f fix: Re-add nvim-notify highlights (#72) (#72) 2022-03-09 22:21:17 -05:00
mvllow
3fb07a770f fix named blend styles
ref #70
2022-02-18 11:13:01 -06:00
mvllow
f3c534e4be update punctuation colour 2022-02-15 22:37:52 -06:00
mvllow
64986b857d fix user options not being applied
closes #69
2022-02-14 15:20:30 -06:00
not
7c398c943c Update readme.md 2022-02-14 09:43:34 -06:00
Brian Di Palma
64c5952bc7 Update readme.md (#68) 2022-02-14 07:36:36 -06:00
not
317a7c8473 breaking: move to lua config (#64)
Co-authored-by: fvrests <fvrests@icloud.com>
2022-02-13 16:18:23 -06:00
not
c207a62f52 Update readme.md 2022-02-10 16:04:33 -06:00
not
6cbc72a75d Update readme.md 2022-02-10 10:31:12 -06:00
Daniel Mathiot
0e23ee652d feat: Add nvim-notify highlights (#66) 2022-02-08 12:47:47 -06:00
mvllow
acee7a0b09 reduce contrast of cursorline and cursorcolumn
closes #65
2022-02-08 08:58:59 -06:00
mvllow
73c5046bf3 docs: update tag 2022-02-07 12:12:17 -06:00
28 changed files with 2160 additions and 855 deletions

12
.editorconfig Normal file
View 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
View 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

View 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.

View file

@ -1,6 +0,0 @@
column_width = 100
indent_type = "Tabs"
indent_width = 3
line_endings = "Unix"
quote_style = "AutoPreferSingle"

82
changelog.md Normal file
View 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 = "..." },
+ }
```

View file

@ -0,0 +1,2 @@
package.loaded["rose-pine.palette"] = nil
require("rose-pine").colorscheme("dawn")

View file

@ -0,0 +1,2 @@
package.loaded["rose-pine.palette"] = nil
require("rose-pine").colorscheme("main")

View file

@ -0,0 +1,2 @@
package.loaded["rose-pine.palette"] = nil
require("rose-pine").colorscheme("moon")

2
colors/rose-pine.lua Normal file
View file

@ -0,0 +1,2 @@
package.loaded["rose-pine.palette"] = nil
require("rose-pine").colorscheme()

View file

@ -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
View 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.

View file

@ -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 {
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 },
c = { bg = p.surface, fg = p.subtle, gui = 'italic' },
c = { bg = p.surface, fg = p.subtle, gui = "italic" },
},
insert = {
a = { bg = p.surface, fg = p.foam, gui = 'bold' },
a = { bg = p.surface, fg = p.foam, gui = "bold" },
},
visual = {
a = { bg = p.surface, fg = p.iris, gui = 'bold' },
a = { bg = p.surface, fg = p.iris, gui = "bold" },
},
replace = {
a = { bg = p.surface, fg = p.pine, gui = 'bold' },
a = { bg = p.surface, fg = p.pine, gui = "bold" },
},
command = {
a = { bg = p.surface, fg = p.love, gui = 'bold' },
a = { bg = p.surface, fg = p.love, gui = "bold" },
},
inactive = {
a = { bg = p.base, fg = p.subtle, gui = 'bold' },
b = { bg = p.base, fg = p.subtle },
c = { bg = p.base, fg = p.subtle, gui = 'italic' },
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" },
},
}

View file

@ -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 {
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 },
c = { bg = p.base, fg = p.text },
c = { bg = bg_base, fg = p.text },
},
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 },
c = { bg = p.base, fg = p.text },
c = { bg = bg_base, fg = p.text },
},
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 },
c = { bg = p.base, fg = p.text },
c = { bg = bg_base, fg = p.text },
},
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 },
c = { bg = p.base, fg = p.text },
c = { bg = bg_base, fg = p.text },
},
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 },
c = { bg = p.base, fg = p.text },
c = { bg = bg_base, fg = p.text },
},
inactive = {
a = { bg = p.base, fg = p.muted, gui = 'bold' },
b = { bg = p.base, fg = p.muted },
c = { bg = p.base, fg = p.muted },
a = { bg = bg_base, fg = p.muted, gui = "bold" },
b = { bg = bg_base, fg = p.muted },
c = { bg = bg_base, fg = p.muted },
},
}

1242
lua/rose-pine.lua Normal file

File diff suppressed because it is too large Load diff

View file

@ -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,
},
}

View file

@ -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)
key = 'rose_pine_' .. key
local config = {}
if vim.g[key] == nil then
return default
end
---@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",
if vim.g[key] == 0 or vim.g[key] == false then
return false
end
---Set the desired dark variant when `options.variant` is set to "auto".
---@type Variant
dark_variant = "main",
return vim.g[key]
end
---Differentiate between active and inactive windows and panels.
dim_inactive_windows = false,
local config = {
variant = opt('variant', 'main'),
---Extend background behind borders. Appearance differs based on which
---border characters you are using.
extend_background_behind_borders = true,
bold_vertical_split_line = opt('bold_vertical_split_line', false),
disable_italics = opt('disable_italics', false),
disable_background = opt('disable_background', false),
disable_float_background = opt('disable_float_background', false),
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,
},
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 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
colors.headings = {
h1 = colors.headings,
h2 = colors.headings,
h3 = colors.headings,
h4 = colors.headings,
h5 = colors.headings,
h6 = colors.headings,
}
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
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

View file

@ -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,
}

View file

@ -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

View file

@ -1,68 +1,78 @@
local options = require("rose-pine.config").options
local variants = {
main = {
base = '#191724',
surface = '#1f1d2e',
overlay = '#26233a',
muted = '#6e6a86',
subtle = '#908caa',
text = '#e0def4',
love = '#eb6f92',
gold = '#f6c177',
rose = '#ebbcba',
pine = '#31748f',
foam = '#9ccfd8',
iris = '#c4a7e7',
highlight_low = '#21202e',
highlight_med = '#403d52',
highlight_high = '#524f67',
opacity = 0.1,
_nc = "#16141f",
base = "#191724",
surface = "#1f1d2e",
overlay = "#26233a",
muted = "#6e6a86",
subtle = "#908caa",
text = "#e0def4",
love = "#eb6f92",
gold = "#f6c177",
rose = "#ebbcba",
pine = "#31748f",
foam = "#9ccfd8",
iris = "#c4a7e7",
leaf = "#95b1ac",
highlight_low = "#21202e",
highlight_med = "#403d52",
highlight_high = "#524f67",
none = "NONE",
},
moon = {
base = '#232136',
surface = '#2a273f',
overlay = '#393552',
muted = '#6e6a86',
subtle = '#908caa',
text = '#e0def4',
love = '#eb6f92',
gold = '#f6c177',
rose = '#ea9a97',
pine = '#3e8fb0',
foam = '#9ccfd8',
iris = '#c4a7e7',
highlight_low = '#2a283e',
highlight_med = '#44415a',
highlight_high = '#56526e',
opacity = 0.1,
_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 = {
base = '#faf4ed',
surface = '#fffaf3',
overlay = '#f2e9e1',
muted = '#9893a5',
subtle = '#797593',
text = '#575279',
love = '#b4637a',
gold = '#ea9d34',
rose = '#d7827e',
pine = '#286983',
foam = '#56949f',
iris = '#907aa9',
highlight_low = '#f4ede8',
highlight_med = '#dfdad9',
highlight_high = '#cecacd',
opacity = 0.05,
_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",
},
}
local palette = variants.main
if string.match(vim.g.rose_pine_variant or '', 'moon') then
palette = variants.moon
elseif string.match(vim.g.rose_pine_variant or '', 'dawn') then
palette = variants.dawn
if options.palette ~= nil and next(options.palette) then
-- handle variant specific overrides
for variant_name, override_palette in pairs(options.palette) do
if variants[variant_name] then
variants[variant_name] = vim.tbl_extend("force", variants[variant_name], override_palette or {})
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"]

View 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,
-- },
}

View 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,
}

View 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 }

View 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 }
}

View 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" },
}

View file

@ -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

View file

@ -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

View 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
View file

@ -11,144 +11,151 @@
</a>
</p>
## Usage
## Getting started
Install `rose-pine/neovim` using your favourite package manager:
### [pam.nvim](https://github.com/mvllow/pam.nvim)
```lua
use({
'rose-pine/neovim',
as = 'rose-pine',
-- tag = '...',
config = function()
vim.cmd('colorscheme rose-pine')
end
})
{ source = "rose-pine/neovim", as = "rose-pine" }
```
## Plugins
### [lazy.nvim](https://lazy.folke.io/installation)
> PR's are more than welcome if your favourite plugin is missing
- [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)
**Structured Setup**
```lua
use({
'nvim-lualine/lualine.nvim',
-- Fix mismatch palette between variants
event = 'ColorScheme',
-- lua/plugins/rose-pine.lua
return {
"rose-pine/neovim",
name = "rose-pine",
config = function()
require('lualine').setup({
options = {
---@usage 'rose-pine' | 'rose-pine-alt'
theme = 'rose-pine'
}
})
vim.cmd("colorscheme rose-pine")
end
})
}
```
- [galaxyline.nvim fork](https://github.com/NTBBloodbath/galaxyline.nvim)
**Single file**
```lua
local colors = require("galaxyline.themes.colors")["rose-pine"]
{ "rose-pine/neovim", name = "rose-pine" }
```
## Gallery
**Rosé Pine**
![Rosé Pine with Neovim](assets/rose-pine.png)
![Rosé Pine with Neovim](https://user-images.githubusercontent.com/1973/163921570-0f577baf-3199-4f09-9779-a7eb9238151a.png)
**Rosé Pine Moon**
![Rosé Pine Moon with Neovim](assets/rose-pine-moon.png)
![Rosé Pine Moon with Neovim](https://user-images.githubusercontent.com/1973/163921620-d3acd0d2-d227-4d28-a5e8-97ff22e56c6d.png)
**Rosé Pine Dawn**
![Rosé Pine Dawn with Neovim](assets/rose-pine-dawn.png)
![Rosé Pine Dawn with Neovim](https://user-images.githubusercontent.com/1973/163921656-644a2db3-c55c-4e89-9bdd-39cdd7a2681b.png)
## 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
-- set theme variant, matching terminal theme if unset
-- @usage 'main' | 'moon' | 'dawn'
vim.g.rose_pine_variant = ''
require("rose-pine").setup({
variant = "auto", -- auto, main, moon, or dawn
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
vim.g.rose_pine_disable_background = false
vim.g.rose_pine_disable_float_background = false
vim.g.rose_pine_disable_italics = false
vim.g.rose_pine_inactive_background = false
enable = {
terminal = true,
legacy_highlights = true, -- Improve compatibility for previous versions of Neovim
migrations = true, -- Handle deprecated options automatically
},
local palette = require('rose-pine.palette')
vim.g.rose_pine_colors = {
border = palette.highlight_med,
comment = palette.muted,
link = palette.iris,
punctuation = palette.subtle,
styles = {
bold = true,
italic = true,
transparency = false,
},
error = palette.love,
hint = palette.iris,
info = palette.foam,
warn = palette.gold,
groups = {
border = "muted",
link = "iris",
panel = "surface",
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,
error = "love",
hint = "iris",
info = "foam",
note = "pine",
todo = "rose",
warn = "gold",
-- or set all headings to one colour: `headings = palette.text`
headings = {
h1 = palette.iris,
h2 = palette.foam,
h3 = palette.rose,
h4 = palette.gold,
h5 = palette.pine,
h6 = palette.foam,
},
}
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",
-- Set colorscheme after options
vim.cmd('colorscheme rose-pine')
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")
```
## Suggested keymaps
```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)
```
> [!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).
## 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)
- [Adding new highlight groups](https://github.com/rose-pine/neovim/issues/6#issuecomment-962466323)
Feel free to update the [wiki](https://github.com/rose-pine/neovim/wiki/) with any [recipes](https://github.com/rose-pine/neovim/wiki/Recipes).