Compare commits

..

125 commits
v3.0.0 ... main

Author SHA1 Message Date
github-actions[bot] a8085e2988 chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2026-04-17 21:41:12 +00:00
Max Del Canto 3e28afbf18
Merge pull request #107 from vec2pt/main
Added support for indentmini.nvim.
2026-04-17 18:40:50 -03:00
vec2pt 2d2dab01b2
Update solarized.nvim.txt 2026-04-17 15:32:02 +02:00
vec2pt 0c3cbe55c9 Support indentmini https://github.com/nvimdev/indentmini.nvim 2026-04-17 15:25:00 +02:00
Max Del Canto c0dfe1cbfa
Merge pull request #104 from maxmx03/release-please--branches--main--components--release-please-action
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
chore(main): release 3.6.0
2024-10-31 09:54:05 -03:00
github-actions[bot] 29df447aa1
chore(main): release 3.6.0 2024-10-31 12:48:40 +00:00
github-actions[bot] af0295172d chore(doc): auto generate docs 2024-10-31 12:48:35 +00:00
Max Miliano 5d3cbf03a5 feat: term colors 2024-10-31 09:48:12 -03:00
Max Del Canto f85f000c3e
Merge pull request #96 from maxmx03/release-please--branches--main--components--release-please-action
Some checks failed
release-please / release-please (push) Has been cancelled
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
chore(main): release 3.5.0
2024-10-02 16:53:08 -03:00
github-actions[bot] ecf289eecc chore(doc): auto generate docs 2024-10-02 19:52:38 +00:00
Max Miliano ad113ae656 docs: default config 2024-10-02 16:52:12 -03:00
Max Miliano 3251376b2e refactor: flashmatch 2024-10-02 16:44:16 -03:00
github-actions[bot] 9fc9f7382f
chore(main): release 3.5.0 2024-10-02 19:37:18 +00:00
github-actions[bot] 9e2b046cf6 chore(doc): auto generate docs 2024-10-02 19:37:10 +00:00
Max Miliano 952ed14cf7 feat: hl flash 2024-10-02 16:36:45 -03:00
github-actions[bot] fe6d32a3eb chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-28 00:26:04 +00:00
Max Miliano 7e8078b597 refactor: treesitter-operator 2024-09-27 21:25:30 -03:00
github-actions[bot] 1293bec922 chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-20 12:18:41 +00:00
Max Miliano e9fd95bd96 fix: normalfloat's transparent config 2024-09-20 09:18:21 -03:00
github-actions[bot] 3090084013 chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-19 13:46:46 +00:00
Max Miliano 335b4353b1 docs: update default config
user can disable all styles.
2024-09-19 10:46:22 -03:00
Max Miliano b4772fdb26 refactor: makefile 2024-09-19 10:40:15 -03:00
Max Miliano 3ae785b553 fix: prevent error when user pass a nil value to setup
added more tests and makefile
2024-09-19 10:39:43 -03:00
github-actions[bot] 01d8c0afe1 chore(doc): auto generate docs 2024-09-19 13:32:32 +00:00
Max Del Canto 5c9c2a45b4
Merge pull request #97 from iton0/main
feat: add enabled field for styles class
2024-09-19 10:32:09 -03:00
Max Del Canto 4192185075
Update config.lua 2024-09-19 09:51:49 -03:00
iton0 0ff0f10a31 feat: add enabled field for styles class
- updated README.md to reflect new option

Defaults to true. If enabled is false remove all styles. Allows for
easier modification for users who do not want any styles with the
colorscheme.
2024-09-18 22:34:07 -04:00
github-actions[bot] be02e3baf6 chore(doc): auto generate docs
Some checks are pending
Test / pandoc to vimdoc (push) Waiting to run
Test / lint (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-09-18 20:26:43 +00:00
Max Miliano 6d11c340d2 fix: markup italic 2024-09-18 17:26:19 -03:00
github-actions[bot] 50edf5a4ee chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-11 15:39:11 +00:00
Max Del Canto a6383a31a1
Merge pull request #94 from maxmx03/release-please--branches--main--components--release-please-action
chore(main): release 3.4.0
2024-09-11 12:38:51 -03:00
github-actions[bot] 2052933e68
chore(main): release 3.4.0
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
2024-09-06 18:05:23 +00:00
Max Miliano b97faa8f67 feat: add/remove css, scss queries
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-06 15:04:57 -03:00
github-actions[bot] a7039bb07b chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-09-06 16:59:06 +00:00
Max Miliano b4ea862ee9 feat: cursorlinenr colors 2024-09-06 13:58:43 -03:00
github-actions[bot] 8f8d4548cb chore(doc): auto generate docs 2024-09-06 13:58:39 -03:00
Max Miliano c87752fd71 fix: solarized-light lsp property and parameter 2024-09-06 13:58:39 -03:00
github-actions[bot] 1a34eb1c4d chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-03 18:07:22 +00:00
Max Miliano ed090c9eff feat(variants): editor looks different on each variant 2024-09-03 15:06:59 -03:00
github-actions[bot] 655183da8f chore(doc): auto generate docs
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
2024-09-02 13:45:59 +00:00
Max Miliano 7cd978401e feat: error_lens config 2024-09-02 10:45:36 -03:00
Max Del Canto 151aabdeb7
Merge pull request #92 from maxmx03/release-please--branches--main--components--release-please-action
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
release-please / release-please (push) Has been cancelled
chore(main): release 3.3.0
2024-08-30 15:16:05 -03:00
github-actions[bot] f28382812f chore(doc): auto generate docs 2024-08-30 18:11:47 +00:00
Max Miliano 4c590266ae docs: variants config 2024-08-30 15:11:24 -03:00
github-actions[bot] a59c47012d chore(doc): auto generate docs 2024-08-30 18:05:45 +00:00
Max Del Canto 5f06dae692
Update README.md 2024-08-30 15:05:27 -03:00
github-actions[bot] e3a6f13558
chore(main): release 3.3.0 2024-08-30 17:47:59 +00:00
github-actions[bot] 4f0ff930bc chore(doc): auto generate docs 2024-08-30 17:47:29 +00:00
Max Miliano 650dbd58fe feat: solarized theme based on seasons 2024-08-30 14:47:06 -03:00
github-actions[bot] ec057bcca5 chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-08-30 11:29:56 +00:00
Max Del Canto 56ca119fe9
Merge pull request #91 from bloznelis/patch-1
fix(docs): fix code example under Config Highlights in README
2024-08-30 08:29:37 -03:00
Lukas Bloznelis 8ca7c63acc
fix(docs): fix code example under Config Highlighs in README 2024-08-30 12:33:25 +03:00
Max Del Canto 2b428efc47
Merge pull request #89 from maxmx03/release-please--branches--main--components--release-please-action
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
chore(main): release 3.2.0
2024-08-29 16:45:36 -03:00
github-actions[bot] 8a25878b68
chore(main): release 3.2.0 2024-08-29 14:15:23 +00:00
github-actions[bot] 7c2e83d577 chore(doc): auto generate docs 2024-08-29 14:15:10 +00:00
Max Miliano 57573f04b6 docs: update transparency config
new entry: mason
2024-08-29 11:14:49 -03:00
Max Miliano 1f40ffb0b7 refactor: adjust solarized-dark base04 was too dark
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-08-28 14:29:26 -03:00
Max Miliano 8759a70227 fix: solarized-light lazynormal bg 2024-08-28 14:16:21 -03:00
Max Miliano 138bb8aff8 feat: hl group mason
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-08-28 08:28:09 -03:00
Max Miliano e41b3cf643 fix: solarized-dark diagnostics config 2024-08-28 08:06:32 -03:00
Max Miliano cba648cd87 refactor: solarized-dark type color
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
2024-08-27 21:25:08 -03:00
github-actions[bot] 97b2cec83a chore(doc): auto generate docs 2024-08-28 00:20:52 +00:00
Max Miliano 7f7fe37f4a refactor: generic Preprocessor e import color 2024-08-27 21:20:29 -03:00
Max Del Canto 533a6069fb
Merge pull request #87 from maxmx03/release-please--branches--main--components--release-please-action
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
release-please / release-please (push) Waiting to run
chore(main): release 3.1.1
2024-08-27 12:55:36 -03:00
github-actions[bot] 8bb2b5f8ad
chore(main): release 3.1.1 2024-08-27 15:55:18 +00:00
github-actions[bot] 5fe17346a4 chore(doc): auto generate docs 2024-08-27 15:55:15 +00:00
Max Miliano d3641274ca fix: some plugins was not enabled like ale,coc,leap 2024-08-27 12:54:54 -03:00
Max Del Canto bb8600e8b7
Merge pull request #85 from maxmx03/release-please--branches--main--components--release-please-action
chore(main): release 3.1.0
2024-08-27 12:48:27 -03:00
github-actions[bot] 196b97cd92
chore(main): release 3.1.0 2024-08-27 15:43:42 +00:00
Max Del Canto c3b4695ba2
Merge pull request #86 from maxmx03/dev
solarized update
2024-08-27 12:42:54 -03:00
github-actions[bot] ce2a2445de chore(doc): auto generate docs 2024-08-27 15:05:43 +00:00
Max Miliano 053467f6d1 refactor: readme.md 2024-08-27 12:05:21 -03:00
Max Miliano 835cb18e7a refactor: solarized-dark diagnostics 2024-08-27 12:01:01 -03:00
Max Miliano d58a43b9f7 feat: ale,alpha,yanky,gitgutter,coc,leap 2024-08-27 11:54:52 -03:00
Max Miliano 43304ed38e refactor: ibl 2024-08-27 11:15:32 -03:00
Max Miliano 8d0c9ffe9c refactor: solarized-dark whichkey 2024-08-27 10:59:03 -03:00
Max Miliano 209c6a2cb9 refactor: solarized-dark incsearch, search 2024-08-27 10:30:12 -03:00
github-actions[bot] 795fcbbf26 chore(doc): auto generate docs 2024-08-27 13:11:34 +00:00
Max Del Canto d36534ab0f
Update README.md 2024-08-27 10:11:09 -03:00
Max Miliano 46ec7301f9 refactor: format code
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
2024-08-27 08:59:44 -03:00
github-actions[bot] 8a32f12620 chore(doc): auto generate docs 2024-08-27 11:56:11 +00:00
Max Miliano 10295bbfc9 feat: more control over transparent
user has more control over transparent
2024-08-27 08:55:48 -03:00
github-actions[bot] a61428a5ee chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-27 03:29:13 +00:00
Max Miliano 7c2a916802 feat: mix_base1, todocomments
refactor: diagnostics,solarized-dark border and visual
2024-08-27 00:28:51 -03:00
Max Miliano abb2cae5d3 feat: base4 for solarized-light
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-26 14:18:53 -03:00
Max Miliano 8f48353da2 feat: neogit 2024-08-26 13:55:03 -03:00
Max Miliano 9a9399e9a4 feat: tests, styles config 2024-08-26 13:12:51 -03:00
github-actions[bot] 9c299ed8e8 chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-26 12:02:46 +00:00
Max Miliano 0c9870b68e refactor: navic,notify,cmp-kind,ibl,nvim-tree 2024-08-26 09:02:23 -03:00
github-actions[bot] 9c557dd06b chore(doc): auto generate docs 2024-08-26 11:34:54 +00:00
Max Miliano 892e50a7df feat: rendermarkdown highlights
refactor: solarized-light pmenu,property hl groups
2024-08-26 08:34:30 -03:00
Max Miliano aea00f2a45 Revert "refactor: pmenu"
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
This reverts commit 3294d5ec79.
2024-08-25 18:50:24 -03:00
Max Miliano 68eb457172 Revert "refactor: pmenu"
This reverts commit 971a80135a.
2024-08-25 18:49:04 -03:00
Max Miliano 971a80135a refactor: pmenu 2024-08-25 18:44:22 -03:00
Max Miliano 3294d5ec79 refactor: pmenu 2024-08-25 18:44:16 -03:00
Max Miliano f489e017d6 refactor: tag hl group color 2024-08-25 18:35:58 -03:00
Max Miliano 47ace51709 refactor: pmenu,whichkey 2024-08-25 18:34:54 -03:00
Max Miliano afad4e8cf1 refactor: solarized light properties, solarized dark keyword and statement 2024-08-25 18:13:08 -03:00
Max Miliano fb1997be52 fix: barbecue theme 2024-08-25 17:13:23 -03:00
github-actions[bot] 992d34e07f chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-25 17:40:26 +00:00
Max Del Canto 99442d9bc7
Update README.md 2024-08-25 14:40:08 -03:00
github-actions[bot] 862370f219 chore(doc): auto generate docs 2024-08-25 17:30:59 +00:00
Max Miliano b6cc153d09 refactor: docs,contributing, hl groups 2024-08-25 14:30:37 -03:00
github-actions[bot] f2c7b1c6bd chore(doc): auto generate docs
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-25 02:05:55 +00:00
Max Miliano b2a0b7efed refactor: normal-float 2024-08-24 23:05:33 -03:00
Max Miliano 10eb62fe0f fix: selenized and solarized extra colors
Some checks are pending
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
feat: annotation for config
refactor: search,incsearch,border
2024-08-24 15:27:47 -03:00
Max Miliano dfc4d62725 feat: highlight color for markup headings
refactor: treesitter markdown,command code format,winseparator
2024-08-24 09:36:33 -03:00
Max Miliano 8ac84d6d2e feat: lazynvim, ci test removed 2024-08-24 08:59:45 -03:00
github-actions[bot] 795c5c03cf chore(doc): auto generate docs
Some checks are pending
Test / Run Test (macos-latest) (push) Waiting to run
Test / Run Test (ubuntu-latest) (push) Waiting to run
Test / lint (push) Waiting to run
Test / pandoc to vimdoc (push) Waiting to run
2024-08-24 03:12:10 +00:00
Max Miliano c84571d806 fix: selenized base02 and base04 2024-08-24 00:11:48 -03:00
Max Miliano 5b304a17ae feat: Solarized theme restructuring
The "Solarized Neo" theme, which included both light and dark variants,
has been dropped. The light variant of "Neo" is now the "Solarized
Light" theme. The original "Solarized" by Ethan Schoonover, which also
had light and dark versions, is now solely represented as the "Solarized
Dark" theme.
2024-08-23 19:46:38 -03:00
Max Miliano 322be5da46 feat: solarized-light.yml 2024-08-22 21:44:11 -03:00
github-actions[bot] 596deb2fe5 chore(doc): auto generate docs 2024-08-23 00:40:28 +00:00
Max Miliano 6f127f8257 feat: solarized-light.yml, contributing.md 2024-08-22 21:39:59 -03:00
Max Miliano f4e11fa69a feat: solarized.yml 2024-08-22 18:42:09 -03:00
Max Miliano 3a197875c7 feat: docker-compose
Some checks failed
Test / lint (push) Has been cancelled
Test / pandoc to vimdoc (push) Has been cancelled
Test / Run Test (macos-latest) (push) Has been cancelled
Test / Run Test (ubuntu-latest) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
docker files to test solarized colorscheme
2024-08-03 04:34:46 -03:00
github-actions[bot] 8bef505492 chore(doc): auto generate docs 2024-08-03 07:33:29 +00:00
Max Miliano acc294b7f5 refactor: which-key transparent bg on transparent mode. 2024-08-03 04:33:05 -03:00
Max Del Canto 6875d60907
Merge pull request #83 from santoso-wijaya/main
Simplify LspInlayHint highlight setting
2024-06-11 14:55:25 -03:00
Santoso Wijaya 3bfbb3a7bc Simplify LspInlayHint highlight setting 2024-06-11 17:36:42 +00:00
github-actions[bot] 84d198857e chore(doc): auto generate docs 2024-06-11 05:34:53 +00:00
Max Del Canto 4fb02a0676
Merge pull request #82 from santoso-wijaya/inlay-hints
Make inlay hints highlight a dimmer comment shade
2024-06-11 02:34:29 -03:00
Max Del Canto 991444f90c
refactor: Adjusted the color of lspinlayhint to improve visibility on dark backgrounds. 2024-06-11 02:33:24 -03:00
Max Del Canto 430e2dd5ad
refactor: Adjusted the color of lspinlayhint to improve visibility on dark backgrounds. 2024-06-11 02:32:21 -03:00
Santoso Wijaya 8753f75642
Make inlay hints highlight a dimmer comment shade
The light yellow it was previously set to was not distinguishable
enough from surrounding real code.
2024-06-10 19:16:54 -07:00
90 changed files with 4287 additions and 3035 deletions

View file

@ -32,30 +32,3 @@ jobs:
commit_user_name: "github-actions[bot]"
commit_user_email: "github-actions[bot]@users.noreply.github.com"
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
test:
name: Run Test
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v3
- uses: rhysd/action-setup-vim@v1
with:
neovim: true
- name: luajit
uses: leafo/gh-actions-lua@v10
with:
luaVersion: "luajit-2.1.0-beta3"
- name: luarocks
uses: leafo/gh-actions-luarocks@v4
- name: run test
shell: bash
run: |
luarocks install luacheck
luarocks install vusted
vusted ./tests

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
sample
vscode
build

View file

@ -1,3 +1,12 @@
{
"diagnostics.disable": ["undefined-field"]
}
"workspace.library": [
"/usr/share/nvim/runtime",
"${3rd}/luv/library",
"${3rd}/busted/library",
"~/.local/share/nvim/lazy/solarized.nvim",
"${3rd}/luassert/library"
],
"diagnostics.disable": [
"duplicate-doc-field"
]
}

View file

@ -1,5 +1,102 @@
# Changelog
## [3.6.0](https://github.com/maxmx03/solarized.nvim/compare/v3.5.0...v3.6.0) (2024-10-31)
### Features
* term colors ([5d3cbf0](https://github.com/maxmx03/solarized.nvim/commit/5d3cbf03a554785c3e707a532166659801c45ef6))
## [3.5.0](https://github.com/maxmx03/solarized.nvim/compare/v3.4.0...v3.5.0) (2024-10-02)
### Features
* add enabled field for styles class ([0ff0f10](https://github.com/maxmx03/solarized.nvim/commit/0ff0f10a31c5d233427d5c2063c72604d271f2f2))
* hl flash ([952ed14](https://github.com/maxmx03/solarized.nvim/commit/952ed14cf7074326c152e293d4a13ecc1f2f5f44))
### Bug Fixes
* markup italic ([6d11c34](https://github.com/maxmx03/solarized.nvim/commit/6d11c340d2cca5c889e5fefedf55dc7c81ad4ecd))
* normalfloat's transparent config ([e9fd95b](https://github.com/maxmx03/solarized.nvim/commit/e9fd95bd9631882af9d76c3df6004becb5fe3ed9))
* prevent error when user pass a nil value to setup ([3ae785b](https://github.com/maxmx03/solarized.nvim/commit/3ae785b55367ef25ccb35569915461b391becd75))
## [3.4.0](https://github.com/maxmx03/solarized.nvim/compare/v3.3.0...v3.4.0) (2024-09-06)
### Features
* add/remove css, scss queries ([b97faa8](https://github.com/maxmx03/solarized.nvim/commit/b97faa8f679396bd1e23464242d2b5b86dc920c8))
* cursorlinenr colors ([b4ea862](https://github.com/maxmx03/solarized.nvim/commit/b4ea862ee9e80392c84fcd19e1a4ef7adffcf323))
* error_lens config ([7cd9784](https://github.com/maxmx03/solarized.nvim/commit/7cd978401e2767fc77fe86bb8fc531869fb2f79e))
* **variants:** editor looks different on each variant ([ed090c9](https://github.com/maxmx03/solarized.nvim/commit/ed090c9effacf60c2f2939d9a068e31d483ff6c7))
### Bug Fixes
* solarized-light lsp property and parameter ([c87752f](https://github.com/maxmx03/solarized.nvim/commit/c87752fd71feba3fc2f473b7fbafaf6c76a70977))
## [3.3.0](https://github.com/maxmx03/solarized.nvim/compare/v3.2.0...v3.3.0) (2024-08-30)
### Features
* solarized theme based on seasons ([650dbd5](https://github.com/maxmx03/solarized.nvim/commit/650dbd58fe622a93ac93526476e597e91f810014))
### Bug Fixes
* **docs:** fix code example under Config Highlighs in README ([8ca7c63](https://github.com/maxmx03/solarized.nvim/commit/8ca7c63acc1edb2a7077900d295d53b4bc78eb9a))
## [3.2.0](https://github.com/maxmx03/solarized.nvim/compare/v3.1.1...v3.2.0) (2024-08-29)
### Features
* hl group mason ([138bb8a](https://github.com/maxmx03/solarized.nvim/commit/138bb8aff8686428b668cec7c78cd67ab83b69e0))
### Bug Fixes
* solarized-dark diagnostics config ([e41b3cf](https://github.com/maxmx03/solarized.nvim/commit/e41b3cf6431918dcffcc2d9fac96a4e1cf4d5471))
* solarized-light lazynormal bg ([8759a70](https://github.com/maxmx03/solarized.nvim/commit/8759a70227b3cfd00d9ece28804c56b296c8ff9d))
## [3.1.1](https://github.com/maxmx03/solarized.nvim/compare/v3.1.0...v3.1.1) (2024-08-27)
### Bug Fixes
* some plugins was not enabled like ale,coc,leap ([d364127](https://github.com/maxmx03/solarized.nvim/commit/d3641274ca0849f35347a2824c46e4e6a8966c26))
## [3.1.0](https://github.com/maxmx03/solarized.nvim/compare/v3.0.0...v3.1.0) (2024-08-27)
### Features
* ale,alpha,yanky,gitgutter,coc,leap ([d58a43b](https://github.com/maxmx03/solarized.nvim/commit/d58a43b9f7bc6f91273d8ae5ad9a8418dc25cc0c))
* annotation for config ([10eb62f](https://github.com/maxmx03/solarized.nvim/commit/10eb62fe0f15a2732c86da6cc06dadf5824ff20f))
* base4 for solarized-light ([abb2cae](https://github.com/maxmx03/solarized.nvim/commit/abb2cae5d36518a5ed4b7dc6cad5c00732343e7f))
* docker-compose ([3a19787](https://github.com/maxmx03/solarized.nvim/commit/3a197875c76803e4a64d4b1491c6dd0d22b161cd))
* highlight color for markup headings ([dfc4d62](https://github.com/maxmx03/solarized.nvim/commit/dfc4d6272513ed6f4debea9b5dc5352156b0f372))
* lazynvim, ci test removed ([8ac84d6](https://github.com/maxmx03/solarized.nvim/commit/8ac84d6d2e8a8c6e390e68f95bf908338b07690c))
* mix_base1, todocomments ([7c2a916](https://github.com/maxmx03/solarized.nvim/commit/7c2a91680281132d8ed27a2c046e476cd8e7f9b4))
* more control over transparent ([10295bb](https://github.com/maxmx03/solarized.nvim/commit/10295bbfc93a1fe5eaf993cbac0fb4d7a606be17))
* neogit ([8f48353](https://github.com/maxmx03/solarized.nvim/commit/8f48353da2a8fd998b5bb43a3135739ef0c342bb))
* rendermarkdown highlights ([892e50a](https://github.com/maxmx03/solarized.nvim/commit/892e50a7df38e8af84dbb822a6f184ba348c9a23))
* Solarized theme restructuring ([5b304a1](https://github.com/maxmx03/solarized.nvim/commit/5b304a17ae992a668b58689908b58b1d796de7de))
* solarized-light.yml ([322be5d](https://github.com/maxmx03/solarized.nvim/commit/322be5da46dafa3e9482341108040baa8a1312cd))
* solarized-light.yml, contributing.md ([6f127f8](https://github.com/maxmx03/solarized.nvim/commit/6f127f8257166b9f48550febb61c1b4d4a6c1d84))
* solarized.yml ([f4e11fa](https://github.com/maxmx03/solarized.nvim/commit/f4e11fa69a1676059f78d104382c6e2ef7e1713d))
* tests, styles config ([9a9399e](https://github.com/maxmx03/solarized.nvim/commit/9a9399e9a45057f17a261eb8433742c373893eff))
### Bug Fixes
* barbecue theme ([fb1997b](https://github.com/maxmx03/solarized.nvim/commit/fb1997be521d1a9cd0dcb2117178c5a158021662))
* selenized and solarized extra colors ([10eb62f](https://github.com/maxmx03/solarized.nvim/commit/10eb62fe0f15a2732c86da6cc06dadf5824ff20f))
* selenized base02 and base04 ([c84571d](https://github.com/maxmx03/solarized.nvim/commit/c84571d806ac7eb8445b502b40694f4fb689eb52))
## [3.0.0](https://github.com/maxmx03/solarized.nvim/compare/v2.2.0...v3.0.0) (2024-05-13)

188
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,188 @@
# Contributing to `solarized.nvim`
Thank you for your interest in contributing to Solarized!
Whether you're here to improve existing features, add new themes, fix bugs, or
enhance documentation, your contributions are highly valued.
## Usage & Development
Solarized flips between light and dark modes. In each mode, four monotones
form the core values (with an optional fifth for emphasized content).
### Manipulating colors
When it comes to manipulating colors, I recommend using the following online
tools. These resources are excellent for creating tints, shades, and blends,
- [maketintshade](https://maketintsandshades.com/)
- [pinetools](https://pinetools.com/blend-colors)
- [colordesigner](https://colordesigner.io/)
- [colorblender](https://github.com/maxmx03/colorblender)
Additionally, I provide custom functions for color manipulation within the
plugin. These functions are designed to give users more control over their
colorscheme.
### Solarized Dark
> [!NOTE]
> The normal relationship for
> background and body text is `base03:base0`, text can be highlighted using a
> combiation of `base02:base1`
| Name | Hex | Description |
| ------- | ------- | ------------------------------------------ |
| base03 | #002b36 | background |
| base02 | #073642 | background highlight |
| base01 | #586e75 | comments / secondary comment |
| base00 | #657b83 | none |
| base0 | #839496 | body text / default code / primary content |
| base1 | #93a1a1 | optional emphasized content |
| base2 | #eee8d5 | none |
| base3 | #fdf6e3 | none |
| yellow | #b58900 | optional |
| orange | #cb4b16 | optional |
| red | #dc322f | optional |
| magenta | #d33682 | optional |
| violet | #6c71c4 | optional |
| blue | #268bd2 | optional |
| cyan | #2aa198 | optional |
| green | #859900 | optional |
#### Solarized Dark Extra colors
- [pinetool](https://pinetools.com/blend-colors)
- [colorblender](https://github.com/maxmx03/colorblender)
| Name | Hex (balance 70 / 0.3) | Description |
| ----------- | ---------------------- | --------------------------------- |
| base04 | #002731 | sidebar background / float window |
| mix_yellow | #364725 | yellow + base03 / optional |
| mix_orange | #3c342c | orange + base03 / optional |
| mix_red | #422d33 | red + base03 / optional |
| mix_magenta | #3f2e4c | magenta + base03 / optional |
| mix_violet | #204060 | violet + base03 / optional |
| mix_blue | #0b4764 | blue + base03 / optional |
| mix_cyan | #0c4e53 | cyan + base03 / optional |
| mix_green | #274c25 | green + base03 / optional |
| mix_base1 | #2C4E56 | base1 + base03 / visual |
### Selenized Dark
| Name | Hex | Description |
| ------- | ------- | ------------------------------------------ |
| base03 | #103c48 | background |
| base02 | #184956 | background highlight |
| base01 | #72898f | comments / secondary comment |
| base00 | #53676d | none |
| base0 | #adbcbc | body text / default code / primary content |
| base1 | #cad8d9 | optional emphasized content |
| base2 | #ece3cc | none |
| base3 | #fbf3db | none |
| yellow | #dbb32d | optional |
| orange | #ed8649 | optional |
| red | #fa5750 | optional |
| magenta | #f275be | optional |
| violet | #af88eb | optional |
| blue | #4695f7 | optional |
| cyan | #41c7b9 | optional |
| green | #75b938 | optional |
#### Selenized Dark Extra colors
| Name | Hex (balance 70 / 0.3) | Description |
| ----------- | ---------------------- | --------------------------------- |
| base04 | #0e3641 | sidebar background / float window |
| mix_yellow | #4c5f3f | yellow + base03 / optional |
| mix_orange | #525248 | orange + base03 / optional |
| mix_red | #56444a | red + base03 / optional |
| mix_magenta | #534d6b | magenta + base03 / optional |
| mix_violet | #3f5278 | violet + base03 / optional |
| mix_blue | #20567c | blue + base03 / optional |
| mix_cyan | #1e6569 | cyan + base03 / optional |
| mix_green | #2e6143 | green + base03 / optional |
| mix_base1 | #486B74 | green + base03 / optional |
### Solarized Light
> [!NOTE]
> The normal relationship for
> background and body text is `base3:base00`, text can be highlighted using a
> combiation of `base2:base01`
| Name | Hex | Description |
| ------- | ------- | ------------------------------------------ |
| base03 | #002b36 | none |
| base02 | #073642 | none |
| base01 | #586e75 | optional emphasized content |
| base00 | #657b83 | body text / default code / primary content |
| base0 | #839496 | none |
| base1 | #93a1a1 | comments / secondary content |
| base2 | #eee8d5 | background highlights |
| base3 | #fdf6e3 | background |
| yellow | #b58900 | optional |
| orange | #cb4b16 | optional |
| red | #dc322f | optional |
| magenta | #d33682 | optional |
| violet | #6c71c4 | optional |
| blue | #268bd2 | optional |
| cyan | #2aa198 | optional |
| green | #859900 | optional |
#### Solarized Light Extra colors
- [pinetool](https://pinetools.com/blend-colors)
- [colorblender](https://github.com/maxmx03/colorblender)
| Name | Hex (balance 90, 0.1) | Description |
| ----------- | ------------------------- | --------------------------------- |
| mix_yellow | #f5ebcc | yellow + base3 / optional |
| mix_orange | #f8e4ce | orange + base3 /optional |
| mix_red | #f9e2d1 | red + base3 / optional |
| mix_magenta | #f8e2d9 | magenta + base3 / optional |
| mix_violet | #eee8df | violet + base3 / optional |
| mix_blue | #e7ebe1 | blue + base3 / optional |
| mix_cyan | #e7eddb | cyan + base3 / optional |
| mix_green | #f1eccc | green + base3 /optional |
| base4 | #fbf3db (selenized base3) | sidebar background / float window |
| mix_base01 | #CCCDC2 | indent blankline |
### Selenized Light
| Name | Hex | Description |
| ------- | ------- | ------------------------------------------ |
| base03 | #103c48 | none |
| base02 | #184956 | none |
| base01 | #3a4d53 | optional emphasized content |
| base00 | #53676d | body text / default code / primary content |
| base0 | #adbcbc | none |
| base1 | #909995 | comments / secondary content |
| base2 | #ece3cc | background highlights |
| base3 | #fbf3db | background |
| yellow | #ad8900 | optional |
| orange | #c25d1e | optional |
| red | #d2212d | optional |
| magenta | #ca4898 | optional |
| violet | #8762c6 | optional |
| blue | #0072d4 | optional |
| cyan | #009c8f | optional |
| green | #489100 | optional |
#### Selenized Light Extra colors
| Name | Hex (balance 90) | Description |
| ----------- | ---------------- | -------------------------- |
| mix_yellow | #f3e8c5 | yellow + base3 / optional |
| mix_orange | #f5e4c8 | orange + base3 / optional |
| mix_red | #f6dec9 | red + base3 / optional |
| mix_magenta | #f6e1d4 | magenta + base3 / optional |
| mix_violet | #efe4d8 | violet + base3 / optional |
| mix_blue | #e1e6da | blue + base3 / optional |
| mix_cyan | #e1ead3 | cyan + base3 / optional |
| mix_green | #e9e9c5 | green + base3 / optional |
| mix_base01 | #CACBBC | indent blankline |
## Solarized & Selenized Website
- [ethanschoonover](https://ethanschoonover.com/solarized/)
- [jan-warchol](https://github.com/jan-warchol/selenized/blob/master/README.md)

View file

@ -1,5 +1,5 @@
FROM archlinux
WORKDIR /dracula
WORKDIR /solarized
COPY . .
RUN pacman -Syu --noconfirm
RUN pacman -S luarocks neovim gcc lua51 --noconfirm

423
README.md
View file

@ -11,33 +11,33 @@ Solarized is a sixteen color palette (eight monotones, eight accent colors)
designed for use with terminal and gui applications.
[click here to learn more](https://ethanschoonover.com/solarized/)
![solarized](https://github.com/maxmx03/solarized.nvim/assets/50273941/3c2ffda7-9efb-46f4-ad82-7dfd257dda39)
![Component 1](https://github.com/user-attachments/assets/11d8bd97-0f99-4413-937a-a5eaf4b2a4db)
<!--toc:start-->
- [Features](#features)
- [Requirements](#requirements)
- [Install from package manager](#install-from-package-manager)
- [Solarized's Annotations](#solarizeds-annotations)
- [Using `lspconfig`](#using-lspconfig)
- [Using `.luarc.json`](#using-luarcjson)
- [Manual Installation](#manual-installation)
- [Help](#help)
- [Docs](#docs)
- [Commands](#commands)
- [Default Config](#default-config)
- [Config Themes](#config-themes)
- [Config Variant](#config-variant)
- [Config Transparency](#config-transparency)
- [Config Styles](#config-styles)
- [Config Highlights](#config-highlights)
- [Config Colors](#config-colors)
- [Config Enables](#config-enables)
- [Config Autocmd](#config-autocmd)
- [Config Plugins](#config-plugins)
- [Config Error Lens](#config-error-lens)
- [Lualine](#lualine)
- [Barbecue](#barbecue)
- [Api](#api)
- [Get Colors](#get-colors)
- [Color utils](#color-utils)
- [How to get color shades](#how-to-get-color-shades)
- [How to get color tints](#how-to-get-color-tints)
- [Contributing](#contributing)
- [Designed by](#designed-by)
- [Credits and Reference 🎉](#credits-and-reference-🎉)
- [Credits and Reference](#credits-and-reference)
<!--toc:end-->
## Features
@ -64,16 +64,19 @@ Download using your preferred package manager.
[lazy](https://github.com/folke/lazy.nvim)
```lua
{
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
config = function()
vim.o.background = 'dark' -- or 'light'
vim.cmd.colorscheme 'solarized'
end,
},
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {},
config = function(_, opts)
vim.o.termguicolors = true
vim.o.background = 'light'
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
```
[packer](https://github.com/wbthomason/packer.nvim)
@ -82,13 +85,52 @@ Download using your preferred package manager.
use {
'maxmx03/solarized.nvim',
config = function()
vim.o.background = 'dark' -- or 'light'
vim.o.background = 'dark'
---@type solarized
local solarized = require('solarized')
vim.o.termguicolors = true
vim.o.background = 'dark'
solarized.setup({})
vim.cmd.colorscheme 'solarized'
end
}
```
## Solarized's Annotations
### Using `lspconfig`
```lua
local lsp_config = require 'lspconfig'
lsp_config.lua_ls.setup {
settings = {
Lua = {
hint = {
enable = true,
},
runtime = {
version = 'LuaJIT',
},
workspace = {
checkThirdParty = true,
library = {
vim.env.VIMRUNTIME,
'~/.local/share/nvim/lazy/solarized.nvim',
},
},
},
},
}
```
### Using `.luarc.json`
```json
{
"workspace.library": ["/path/to/nvim/runtime", "/path/to/solarized.nvim"]
}
```
## Manual Installation
To manually install Solarized, follow these steps:
@ -99,14 +141,13 @@ To manually install Solarized, follow these steps:
`lua`, `plugin`.
4. Copy these folders to the `~/.config/nvim` directory.
## Help
## Docs
Use `:h solarized.nvim.txt` to get some help
Use `:h solarized.nvim.txt` to see docs
## Commands
- `:Solarized colors` - Display the Solarized palette in a new buffer
- `:Solarized zen`- Removes highlight colors, emphasizing important code segments.
## Default Config
@ -115,61 +156,106 @@ vim.o.background = 'dark'
-- default config
require('solarized').setup({
transparent = false, -- enable transparent background
palette = 'solarized', -- or selenized
styles = {
comments = {},
functions = {},
variables = {},
numbers = {},
constants = {},
parameters = {},
keywords = {},
types = {},
},
enables = {
bufferline = true,
cmp = true,
diagnostic = true,
dashboard = true,
editor = true,
gitsign = true,
hop = true,
indentblankline = true,
lsp = true,
lspsaga = true,
navic = true,
neogit = true,
neotree = true,
notify = true,
noice = true,
semantic = true,
syntax = true,
telescope = true,
tree = true,
treesitter = true,
todo = true,
whichkey = true,
mini = true,
},
highlights = {},
colors = {},
theme = 'default', -- or 'neo'
autocmd = true,
transparent = {
enabled = false,
pmenu = true,
normal = true,
normalfloat = true,
neotree = true,
nvimtree = true,
whichkey = true,
telescope = true,
lazy = true,
},
on_highlights = nil,
on_colors = nil,
palette = 'solarized', -- solarized (default) | selenized
variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default)
error_lens = {
text = false,
symbol = false,
},
styles = {
enabled = true,
types = {},
functions = {},
parameters = {},
comments = {},
strings = {},
keywords = {},
variables = {},
constants = {},
},
plugins = {
treesitter = true,
lspconfig = true,
navic = true,
cmp = true,
indentblankline = true,
indentmini = true,
neotree = true,
nvimtree = true,
whichkey = true,
dashboard = true,
gitsigns = true,
telescope = true,
noice = true,
hop = true,
ministatusline = true,
minitabline = true,
ministarter = true,
minicursorword = true,
notify = true,
rainbowdelimiters = true,
bufferline = true,
lazy = true,
rendermarkdown = true,
ale = true,
coc = true,
leap = true,
alpha = true,
yanky = true,
gitgutter = true,
mason = true,
flash = true,
},
})
vim.cmd.colorscheme = 'solarized' -- or selenized
vim.cmd.colorscheme = 'solarized'
```
## Config Themes
## Config Variant
Solarized offers two themes: the default Solarized theme and Neo.
These themes provide different visual styles to enhance your experience.
Solarized includes four variants: spring, summer, autumn, and winter.
[preview](https://github.com/maxmx03/solarized.nvim/blob/main/VARIANTS.md)
```lua
require('solarized').setup({
theme = 'neo' -- or comment to use solarized default theme.
})
require('solarized').setup {
variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default)
}
```
## Config Transparency
By default, transparency is turned off, but you can easily enable it and
customize which specific UI components should be transparent.
```lua
require('solarized').setup {
transparent = {
enabled = true, -- Master switch to enable transparency
pmenu = true, -- Popup menu (e.g., autocomplete suggestions)
normal = true, -- Main editor window background
normalfloat = true, -- Floating windows
neotree = true, -- Neo-tree file explorer
nvimtree = true, -- Nvim-tree file explorer
whichkey = true, -- Which-key popup
telescope = true, -- Telescope fuzzy finder
lazy = true, -- Lazy plugin manager UI
mason = true, -- Mason manage external tooling
},
}
```
## Config Styles
@ -178,12 +264,21 @@ The `styles` config allows you to customize the style of a highlight
group.
```lua
require('solarized').setup({
styles = {
---@type solarized.styles
local styles = {
comments = { italic = true, bold = false },
functions = { italic = true },
variables = { italic = false },
}
}
require('solarized').setup({
styles = styles,
})
```
You can also disable all highlight group styles.
```lua
require('solarized').setup({
styles = { enabled = false },
})
```
@ -195,18 +290,23 @@ example:
```lua
require('solarized').setup {
highlights = function (colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
on_highlights = function (colors, color)
local darken = color.darken
local lighten = color.lighten
local blend = color.blend
local shade = color.shade
local tint = color.tint
return {
LineNr = { fg = c.base1, bg = c.base02 },
CursorLineNr = { bg = c.base02 },
CursorLine = { bg = c.base02 },
Function = { italic = false },
Visual = { bg = c.cyan },
---@type solarized.highlights
local groups = {
Visual = { bg = colors.base02, standout = true },
Function = { fg = colors.yellow },
IncSearch = { fg = colors.orange, bg = colors.mix_orange },
Search = { fg = colors.violet, bg = shade(colors.violet, 5) },
NormalFloat = { bg = darken(colors.base03, 25) }
}
return groups
end
}
```
@ -216,18 +316,20 @@ require('solarized').setup {
The `colors` config allows you to extend or modify the color palette used by
solarized.
> [!TIP]
> Use `:Solarized colors` to see available colors.
example:
```lua
require('solarized').setup {
colors = function(colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
on_colors = function(colors, color)
local lighten = color.tint
local darken = color.darken
return {
fg = '#fff', -- output: #ffffff
bg = darken(colors.base03, 100)
fg = lighten(colors.base00, 2),
bg = darken(colors.base03, 30)
}
end,
highlights = function(colors)
@ -238,43 +340,60 @@ require('solarized').setup {
}
```
## Config Enables
## Config Plugins
The enables config allows you to enable or disable solarized support for
The plugins config allows you to enable or disable solarized support for
spefic plugins or neovim's default highlights
example:
```lua
require('solarized').setup {
enables = {
editor = true,
syntax = true,
-- PLUGINS
bufferline = true,
cmp = false, -- disabled
diagnostic = true,
indentblankline = true,
lsp = true,
lspsaga = false, -- disabled
navic = true,
semantic = true,
telescope = true,
tree = false, -- disabled
treesitter = true,
},
highlights = {
-- your implementation of nvim-tree
-- your implementation of cmp
-- your implementation of lspsaga
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {
plugins = {
navic = false,
nvimtree = false,
dashboard = false,
noice = false,
ministatusline = false,
minitabline = false,
ministarter = false,
rainbowdelimiters = false,
}
},
config = function(_, opts)
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
```
## Config Autocmd
## Config Error Lens
This option enhances highlighting by enabling Solarized's autocmd feature.
Enables additional highlights for diagnostic virtual text and symbols.
```lua
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {
error_lens = {
text = true,
symbol = true,
}
},
config = function(_, opts)
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
```
## Lualine
@ -282,6 +401,7 @@ This option enhances highlighting by enabling Solarized's autocmd feature.
require('lualine').setup {
options = {
theme = 'solarized',
-- theme = 'selenized',
disabled_filetypes = {
'NvimTree',
},
@ -311,55 +431,37 @@ require('barbecue').setup {
## Api
You can utilize useful functions to customize your Neovim plugins.
### Get Colors
```lua
local palette = require('solarized.palette')
local colors = palette.get_colors()
```
---@type solarized.palette
local colors = require('solarized.utils').get_colors()
---@type solarized.color
local color = require('solarized.color')
local darken = color.darken
local lighten = color.lighten
local blend = color.blend
local shade = color.shade
local tint = color.tint
### Color utils
```lua
local color = require('solarized.utils.colors')
-- Convert a hex color code to RGB
color.hex_to_rgb('#ffffff')
-- Darken a color by a specified percentage
color.darken('#ffffff', 100)
-- Lighten a color by a specified percentage
color.lighten('#000000', 100)
-- Blend two colors with a specified ratio
color.blend('#ffffff', '#000000', 0.15)
```
### How to get color shades
```lua
local darken = require('solarized.utils.colors').darken
local colors = require('solarized.palette').get_colors()
-- example 1: get shades
for i = 1, 10, 1 do
local shade = darken(colors.blue, i * 10)
print(shade)
print(shade(colors.yellow, i))
end
```
### How to get color tints
```lua
local lighten = require('solarized.utils.colors').lighten
for i = 1, 100, 10 do
print(darken(colors.yellow, i))
end
-- example 2: get tints
for i = 1, 10, 1 do
local tints = lighten(colors.blue, i * 10)
print(tints)
print(tint(colors.yellow, i))
end
for i = 1, 100, 10 do
print(lighten(colors.yellow, i))
end
-- example 3: blend color
local new_color = blend(colors.yellow, colors.base03, 0.2)
```
## Contributing
@ -372,9 +474,8 @@ Pull requests are welcome and appreciated.
Ethan Schoonover
## Credits and Reference 🎉
## Credits and Reference
- [onedarkpro](https://github.com/olimorris/onedarkpro.nvim)
- [solarized-vim](https://github.com/altercation/vim-colors-solarized)
- [tokyonight](https://github.com/folke/tokyonight.nvim)

17
VARIANTS.md Normal file
View file

@ -0,0 +1,17 @@
# Variants
autumn
![autumn](https://github.com/user-attachments/assets/bcc3cd16-a613-42ac-a74a-69a4da8a866a)
spring
![spring](https://github.com/user-attachments/assets/eb84a3d3-faa3-48b7-b52e-6728d6d65801)
winter
![winter](https://github.com/user-attachments/assets/7ae41baa-8916-4612-8468-0579b93aee72)
summer
![summer](https://github.com/user-attachments/assets/3ea208ac-abd0-4386-85a3-032c11547cb5)

View file

@ -1,8 +1,7 @@
; extends
((pseudo_class_selector) @type (#set! "priority" 125))
((class_selector) @type (#set! "priority" 125))
((plain_value) @constant (#set! "priority" 125))
((id_selector) @constructor (#set! "priority" 125))
((selectors) @type (#set! "priority" 125))
(tag_name) @tag
(unit) @keyword
(integer_value) @number
(property_name) @field

View file

@ -1,2 +1,3 @@
; extends
((nesting_selector) @keyword (#set! "priority" 125))
(declaration (variable_value) @string)

View file

@ -1 +1,5 @@
require('solarized.config').load()
-- Solarized colorscheme
-- Repo: maxmx03/solarized.nvim
-- Maintainer: Milianor github.com/maxmx03
-- License: MIT License
require('solarized').load()

View file

@ -1,4 +1,5 @@
*solarized.nvim.txt* For NVIM v0.9.4 Last change: 2024 May 13
*solarized.nvim.txt*
For NVIM v0.9.4 Last change: 2026 April 17
==============================================================================
Table of Contents *solarized.nvim-table-of-contents*
@ -6,22 +7,24 @@ Table of Contents *solarized.nvim-table-of-contents*
- Features |solarized.nvim-features|
- Requirements |solarized.nvim-requirements|
- Install from package manager |solarized.nvim-install-from-package-manager|
- Solarizeds Annotations |solarized.nvim-solarizeds-annotations|
- Manual Installation |solarized.nvim-manual-installation|
- Help |solarized.nvim-help|
- Docs |solarized.nvim-docs|
- Commands |solarized.nvim-commands|
- Default Config |solarized.nvim-default-config|
- Config Themes |solarized.nvim-config-themes|
- Config Variant |solarized.nvim-config-variant|
- Config Transparency |solarized.nvim-config-transparency|
- Config Styles |solarized.nvim-config-styles|
- Config Highlights |solarized.nvim-config-highlights|
- Config Colors |solarized.nvim-config-colors|
- Config Enables |solarized.nvim-config-enables|
- Config Autocmd |solarized.nvim-config-autocmd|
- Config Plugins |solarized.nvim-config-plugins|
- Config Error Lens |solarized.nvim-config-error-lens|
- Lualine |solarized.nvim-lualine|
- Barbecue |solarized.nvim-barbecue|
- Api |solarized.nvim-api|
- Contributing |solarized.nvim-contributing|
- Designed by |solarized.nvim-designed-by|
- Credits and Reference 🎉 |solarized.nvim-credits-and-reference-🎉|
- Credits and Reference |solarized.nvim-credits-and-reference|
1. Links |solarized.nvim-links|
Solarized is a sixteen color palette (eight monotones, eight accent colors)
@ -31,26 +34,26 @@ designed for use with terminal and gui applications. click here to learn more
- |solarized.nvim-features|
- |solarized.nvim-requirements|
- |solarized.nvim-install-from-package-manager|
- |solarized.nvim-solarizeds-annotations|
- |solarized.nvim-using-`lspconfig`|
- |solarized.nvim-using-`.luarc.json`|
- |solarized.nvim-manual-installation|
- |solarized.nvim-help|
- |solarized.nvim-docs|
- |solarized.nvim-commands|
- |solarized.nvim-default-config|
- |solarized.nvim-config-themes|
- |solarized.nvim-config-variant|
- |solarized.nvim-config-transparency|
- |solarized.nvim-config-styles|
- |solarized.nvim-config-highlights|
- |solarized.nvim-config-colors|
- |solarized.nvim-config-enables|
- |solarized.nvim-config-autocmd|
- |solarized.nvim-config-plugins|
- |solarized.nvim-config-error-lens|
- |solarized.nvim-lualine|
- |solarized.nvim-barbecue|
- |solarized.nvim-api|
- |solarized.nvim-get-colors|
- |solarized.nvim-color-utils|
- |solarized.nvim-how-to-get-color-shades|
- |solarized.nvim-how-to-get-color-tints|
- |solarized.nvim-contributing|
- |solarized.nvim-designed-by|
- |solarized.nvim-credits-and-reference-🎉|
- |solarized.nvim-credits-and-reference|
FEATURES *solarized.nvim-features*
@ -79,16 +82,19 @@ Download using your preferred package manager.
lazy <https://github.com/folke/lazy.nvim>
>lua
{
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
config = function()
vim.o.background = 'dark' -- or 'light'
vim.cmd.colorscheme 'solarized'
end,
},
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {},
config = function(_, opts)
vim.o.termguicolors = true
vim.o.background = 'light'
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
<
packer <https://github.com/wbthomason/packer.nvim>
@ -97,14 +103,56 @@ packer <https://github.com/wbthomason/packer.nvim>
use {
'maxmx03/solarized.nvim',
config = function()
vim.o.background = 'dark' -- or 'light'
vim.o.background = 'dark'
---@type solarized
local solarized = require('solarized')
vim.o.termguicolors = true
vim.o.background = 'dark'
solarized.setup({})
vim.cmd.colorscheme 'solarized'
end
}
<
SOLARIZEDS ANNOTATIONS *solarized.nvim-solarizeds-annotations*
USING LSPCONFIG ~
>lua
local lsp_config = require 'lspconfig'
lsp_config.lua_ls.setup {
settings = {
Lua = {
hint = {
enable = true,
},
runtime = {
version = 'LuaJIT',
},
workspace = {
checkThirdParty = true,
library = {
vim.env.VIMRUNTIME,
'~/.local/share/nvim/lazy/solarized.nvim',
},
},
},
},
}
<
USING .LUARC.JSON ~
>json
{
"workspace.library": ["/path/to/nvim/runtime", "/path/to/solarized.nvim"]
}
<
MANUAL INSTALLATION *solarized.nvim-manual-installation*
To manually install Solarized, follow these steps:
@ -116,15 +164,14 @@ To manually install Solarized, follow these steps:
4. Copy these folders to the `~/.config/nvim` directory.
HELP *solarized.nvim-help*
DOCS *solarized.nvim-docs*
Use |solarized.nvim.txt| to get some help
Use |solarized.nvim.txt| to see docs
COMMANDS *solarized.nvim-commands*
- `:Solarized colors` - Display the Solarized palette in a new buffer
- `:Solarized zen`- Removes highlight colors, emphasizing important code segments.
DEFAULT CONFIG *solarized.nvim-default-config*
@ -134,62 +181,108 @@ DEFAULT CONFIG *solarized.nvim-default-config*
-- default config
require('solarized').setup({
transparent = false, -- enable transparent background
palette = 'solarized', -- or selenized
styles = {
comments = {},
functions = {},
variables = {},
numbers = {},
constants = {},
parameters = {},
keywords = {},
types = {},
},
enables = {
bufferline = true,
cmp = true,
diagnostic = true,
dashboard = true,
editor = true,
gitsign = true,
hop = true,
indentblankline = true,
lsp = true,
lspsaga = true,
navic = true,
neogit = true,
neotree = true,
notify = true,
noice = true,
semantic = true,
syntax = true,
telescope = true,
tree = true,
treesitter = true,
todo = true,
whichkey = true,
mini = true,
},
highlights = {},
colors = {},
theme = 'default', -- or 'neo'
autocmd = true,
transparent = {
enabled = false,
pmenu = true,
normal = true,
normalfloat = true,
neotree = true,
nvimtree = true,
whichkey = true,
telescope = true,
lazy = true,
},
on_highlights = nil,
on_colors = nil,
palette = 'solarized', -- solarized (default) | selenized
variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default)
error_lens = {
text = false,
symbol = false,
},
styles = {
enabled = true,
types = {},
functions = {},
parameters = {},
comments = {},
strings = {},
keywords = {},
variables = {},
constants = {},
},
plugins = {
treesitter = true,
lspconfig = true,
navic = true,
cmp = true,
indentblankline = true,
indentmini = true,
neotree = true,
nvimtree = true,
whichkey = true,
dashboard = true,
gitsigns = true,
telescope = true,
noice = true,
hop = true,
ministatusline = true,
minitabline = true,
ministarter = true,
minicursorword = true,
notify = true,
rainbowdelimiters = true,
bufferline = true,
lazy = true,
rendermarkdown = true,
ale = true,
coc = true,
leap = true,
alpha = true,
yanky = true,
gitgutter = true,
mason = true,
flash = true,
},
})
vim.cmd.colorscheme = 'solarized' -- or selenized
vim.cmd.colorscheme = 'solarized'
<
CONFIG THEMES *solarized.nvim-config-themes*
CONFIG VARIANT *solarized.nvim-config-variant*
Solarized offers two themes: the default Solarized theme and Neo. These themes
provide different visual styles to enhance your experience.
Solarized includes four variants: spring, summer, autumn, and winter.
preview <https://github.com/maxmx03/solarized.nvim/blob/main/VARIANTS.md>
>lua
require('solarized').setup({
theme = 'neo' -- or comment to use solarized default theme.
})
require('solarized').setup {
variant = 'winter', -- "spring" | "summer" | "autumn" | "winter" (default)
}
<
CONFIG TRANSPARENCY *solarized.nvim-config-transparency*
By default, transparency is turned off, but you can easily enable it and
customize which specific UI components should be transparent.
>lua
require('solarized').setup {
transparent = {
enabled = true, -- Master switch to enable transparency
pmenu = true, -- Popup menu (e.g., autocomplete suggestions)
normal = true, -- Main editor window background
normalfloat = true, -- Floating windows
neotree = true, -- Neo-tree file explorer
nvimtree = true, -- Nvim-tree file explorer
whichkey = true, -- Which-key popup
telescope = true, -- Telescope fuzzy finder
lazy = true, -- Lazy plugin manager UI
mason = true, -- Mason manage external tooling
},
}
<
@ -198,12 +291,22 @@ CONFIG STYLES *solarized.nvim-config-styles*
The `styles` config allows you to customize the style of a highlight group.
>lua
require('solarized').setup({
styles = {
---@type solarized.styles
local styles = {
comments = { italic = true, bold = false },
functions = { italic = true },
variables = { italic = false },
}
}
require('solarized').setup({
styles = styles,
})
<
You can also disable all highlight group styles.
>lua
require('solarized').setup({
styles = { enabled = false },
})
<
@ -216,18 +319,23 @@ example:
>lua
require('solarized').setup {
highlights = function (colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
on_highlights = function (colors, color)
local darken = color.darken
local lighten = color.lighten
local blend = color.blend
local shade = color.shade
local tint = color.tint
return {
LineNr = { fg = c.base1, bg = c.base02 },
CursorLineNr = { bg = c.base02 },
CursorLine = { bg = c.base02 },
Function = { italic = false },
Visual = { bg = c.cyan },
---@type solarized.highlights
local groups = {
Visual = { bg = colors.base02, standout = true },
Function = { fg = colors.yellow },
IncSearch = { fg = colors.orange, bg = colors.mix_orange },
Search = { fg = colors.violet, bg = shade(colors.violet, 5) },
NormalFloat = { bg = darken(colors.base03, 25) }
}
return groups
end
}
<
@ -238,18 +346,19 @@ CONFIG COLORS *solarized.nvim-config-colors*
The `colors` config allows you to extend or modify the color palette used by
solarized.
[!TIP] Use `:Solarized colors` to see available colors.
example:
>lua
require('solarized').setup {
colors = function(colors, colorhelper)
local darken = colorhelper.darken
local lighten = colorhelper.lighten
local blend = colorhelper.blend
on_colors = function(colors, color)
local lighten = color.tint
local darken = color.darken
return {
fg = '#fff', -- output: #ffffff
bg = darken(colors.base03, 100)
fg = lighten(colors.base00, 2),
bg = darken(colors.base03, 30)
}
end,
highlights = function(colors)
@ -261,44 +370,61 @@ example:
<
CONFIG ENABLES *solarized.nvim-config-enables*
CONFIG PLUGINS *solarized.nvim-config-plugins*
The enables config allows you to enable or disable solarized support for spefic
The plugins config allows you to enable or disable solarized support for spefic
plugins or neovims default highlights
example:
>lua
require('solarized').setup {
enables = {
editor = true,
syntax = true,
-- PLUGINS
bufferline = true,
cmp = false, -- disabled
diagnostic = true,
indentblankline = true,
lsp = true,
lspsaga = false, -- disabled
navic = true,
semantic = true,
telescope = true,
tree = false, -- disabled
treesitter = true,
},
highlights = {
-- your implementation of nvim-tree
-- your implementation of cmp
-- your implementation of lspsaga
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {
plugins = {
navic = false,
nvimtree = false,
dashboard = false,
noice = false,
ministatusline = false,
minitabline = false,
ministarter = false,
rainbowdelimiters = false,
}
},
config = function(_, opts)
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
<
CONFIG AUTOCMD *solarized.nvim-config-autocmd*
CONFIG ERROR LENS *solarized.nvim-config-error-lens*
This option enhances highlighting by enabling Solarizeds autocmd feature.
Enables additional highlights for diagnostic virtual text and symbols.
>lua
return {
'maxmx03/solarized.nvim',
lazy = false,
priority = 1000,
---@type solarized.config
opts = {
error_lens = {
text = true,
symbol = true,
}
},
config = function(_, opts)
require('solarized').setup(opts)
vim.cmd.colorscheme 'solarized'
end,
}
<
LUALINE *solarized.nvim-lualine*
@ -307,6 +433,7 @@ LUALINE *solarized.nvim-lualine*
require('lualine').setup {
options = {
theme = 'solarized',
-- theme = 'selenized',
disabled_filetypes = {
'NvimTree',
},
@ -339,59 +466,37 @@ BARBECUE *solarized.nvim-barbecue*
API *solarized.nvim-api*
You can utilize useful functions to customize your Neovim plugins.
GET COLORS ~
>lua
local palette = require('solarized.palette')
local colors = palette.get_colors()
<
COLOR UTILS ~
>lua
local color = require('solarized.utils.colors')
---@type solarized.palette
local colors = require('solarized.utils').get_colors()
---@type solarized.color
local color = require('solarized.color')
local darken = color.darken
local lighten = color.lighten
local blend = color.blend
local shade = color.shade
local tint = color.tint
-- Convert a hex color code to RGB
color.hex_to_rgb('#ffffff')
-- Darken a color by a specified percentage
color.darken('#ffffff', 100)
-- Lighten a color by a specified percentage
color.lighten('#000000', 100)
-- Blend two colors with a specified ratio
color.blend('#ffffff', '#000000', 0.15)
<
HOW TO GET COLOR SHADES ~
>lua
local darken = require('solarized.utils.colors').darken
local colors = require('solarized.palette').get_colors()
-- example 1: get shades
for i = 1, 10, 1 do
local shade = darken(colors.blue, i * 10)
print(shade)
print(shade(colors.yellow, i))
end
<
HOW TO GET COLOR TINTS ~
>lua
local lighten = require('solarized.utils.colors').lighten
for i = 1, 100, 10 do
print(darken(colors.yellow, i))
end
-- example 2: get tints
for i = 1, 10, 1 do
local tints = lighten(colors.blue, i * 10)
print(tints)
print(tint(colors.yellow, i))
end
for i = 1, 100, 10 do
print(lighten(colors.yellow, i))
end
-- example 3: blend color
local new_color = blend(colors.yellow, colors.base03, 0.2)
<
@ -407,9 +512,8 @@ DESIGNED BY *solarized.nvim-designed-by*
Ethan Schoonover
CREDITS AND REFERENCE 🎉 *solarized.nvim-credits-and-reference-🎉*
CREDITS AND REFERENCE *solarized.nvim-credits-and-reference*
- onedarkpro <https://github.com/olimorris/onedarkpro.nvim>
- solarized-vim <https://github.com/altercation/vim-colors-solarized>
- tokyonight <https://github.com/folke/tokyonight.nvim>
@ -418,7 +522,7 @@ CREDITS AND REFERENCE 🎉 *solarized.nvim-credits-and-reference-🎉*
==============================================================================
1. Links *solarized.nvim-links*
1. *solarized*: https://github.com/maxmx03/solarized.nvim/assets/50273941/3c2ffda7-9efb-46f4-ad82-7dfd257dda39
1. *Component 1*: https://github.com/user-attachments/assets/11d8bd97-0f99-4413-937a-a5eaf4b2a4db
2. *Ethan Schoonover*: https://github.com/altercation.png?size=100
3. *Raphael*: https://github.com/glepnir.png?size=100

3
docker-compose.yml Normal file
View file

@ -0,0 +1,3 @@
services:
solarized:
build: .

View file

@ -1,40 +1,78 @@
local palette = require('solarized.palette')
local c = palette.get_colors()
local M = {
normal = {},
ellipsis = { fg = c.base0 },
separator = { link = 'Keyword' },
modified = { fg = c.warning },
dirname = { link = 'Directory' },
basename = { fg = c.base0, bold = true },
context = { fg = c.base0 },
context_file = { fg = c.base0 },
context_module = { link = '@namespace' },
context_namespace = { link = '@namespace' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = '@field' },
context_field = { link = '@field' },
context_constructor = { link = '@constructor' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = '@field' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.base2 },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
return M
local config = require 'solarized.config'
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette[config.palette]
return {
normal = {},
ellipsis = { fg = c.base0 },
separator = { link = 'Keyword' },
modified = { fg = c.diag_warning },
dirname = { link = 'Directory' },
basename = { fg = c.base0, bold = true },
context = { fg = c.base0 },
context_file = { fg = c.base0 },
context_module = { link = 'Type' },
context_namespace = { link = 'Type' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = 'Identifier' },
context_field = { link = 'Identifier' },
context_constructor = { link = 'Type' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = 'Identifier' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.yellow },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
else
local palette = require 'solarized.palette.solarized-light'
local c = palette[config.palette]
return {
normal = {},
ellipsis = { fg = c.base00 },
separator = { link = 'Keyword' },
modified = { fg = c.diag_warning },
dirname = { link = 'Directory' },
basename = { fg = c.base00, bold = true },
context = { fg = c.base00 },
context_file = { fg = c.base00 },
context_module = { link = 'Type' },
context_namespace = { link = 'Type' },
context_package = { link = 'Directory' },
context_class = { link = 'Type' },
context_method = { link = 'Function' },
context_property = { link = 'Identifier' },
context_field = { link = 'Identifier' },
context_constructor = { link = 'Type' },
context_enum = { link = 'Type' },
context_interface = { link = 'Type' },
context_function = { link = 'Function' },
context_variable = { link = 'Identifier' },
context_constant = { link = 'Constant' },
context_string = { link = 'String' },
context_number = { link = 'Number' },
context_boolean = { link = 'Boolean' },
context_array = { link = 'Delimiter' },
context_object = { link = 'Identifier' },
context_key = { link = 'Delimiter' },
context_null = { link = 'Constant' },
context_enum_member = { link = 'Constant' },
context_struct = { link = 'Structure' },
context_event = { fg = c.yellow },
context_operator = { link = 'Operator' },
context_type_parameter = { link = 'Type' },
}
end

View file

@ -0,0 +1,47 @@
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette.selenized
return {
normal = {
a = { fg = c.base03, bg = c.blue, gui = 'bold' },
b = { fg = c.base02, bg = c.base1 },
c = { fg = c.base1, bg = c.base02 },
z = { fg = c.base03, bg = c.blue },
},
insert = {
a = { fg = c.base03, bg = c.green },
},
visual = {
a = { fg = c.base03, bg = c.magenta },
},
replace = {
a = { fg = c.base03, bg = c.red },
},
command = {
a = { fg = c.base03, bg = c.orange },
},
}
else
local palette = require 'solarized.palette'
local c = palette.selenized
return {
normal = {
a = { fg = c.base3, bg = c.blue, gui = 'bold' },
b = { fg = c.base2, bg = c.base01 },
c = { fg = c.base01, bg = c.base2 },
z = { fg = c.base3, bg = c.blue },
},
insert = {
a = { fg = c.base3, bg = c.green },
},
visual = {
a = { fg = c.base3, bg = c.magenta },
},
replace = {
a = { fg = c.base3, bg = c.red },
},
command = {
a = { fg = c.base3, bg = c.orange },
},
}
end

View file

@ -1,25 +1,47 @@
local solarized_palette = require('solarized.palette')
local colors = solarized_palette.get_colors()
local M = {
normal = {
a = { fg = colors.base03, bg = colors.blue, gui = 'bold' },
b = { fg = colors.base02, bg = colors.base1 },
c = { fg = colors.base1, bg = colors.base02 },
z = { fg = colors.base03, bg = colors.blue },
},
insert = {
a = { fg = colors.base03, bg = colors.green },
},
visual = {
a = { fg = colors.base03, bg = colors.magenta },
},
replace = {
a = { fg = colors.base03, bg = colors.red },
},
command = {
a = { fg = colors.base03, bg = colors.orange },
},
}
return M
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
local c = palette.solarized
return {
normal = {
a = { fg = c.base03, bg = c.blue, gui = 'bold' },
b = { fg = c.base02, bg = c.base1 },
c = { fg = c.base1, bg = c.base02 },
z = { fg = c.base03, bg = c.blue },
},
insert = {
a = { fg = c.base03, bg = c.green },
},
visual = {
a = { fg = c.base03, bg = c.magenta },
},
replace = {
a = { fg = c.base03, bg = c.red },
},
command = {
a = { fg = c.base03, bg = c.orange },
},
}
else
local palette = require 'solarized.palette'
local c = palette.solarized
return {
normal = {
a = { fg = c.base3, bg = c.blue, gui = 'bold' },
b = { fg = c.base2, bg = c.base01 },
c = { fg = c.base01, bg = c.base2 },
z = { fg = c.base3, bg = c.blue },
},
insert = {
a = { fg = c.base3, bg = c.green },
},
visual = {
a = { fg = c.base3, bg = c.magenta },
},
replace = {
a = { fg = c.base3, bg = c.red },
},
command = {
a = { fg = c.base3, bg = c.orange },
},
}
end

View file

@ -1,68 +0,0 @@
local M = {}
function M.load_autocmd()
local group = vim.api.nvim_create_augroup('solarized', { clear = true })
vim.api.nvim_create_autocmd('ColorSchemePre', {
group = group,
callback = function()
vim.api.nvim_del_augroup_by_id(group)
end,
})
vim.api.nvim_create_autocmd('LspTokenUpdate', {
group = group,
callback = function(args)
local token = args.data.token
local buffer = args.buf
local text = vim.api.nvim_buf_get_text(
buffer,
token.line,
token.start_col,
token.line,
token.end_col,
{}
)[1]
local highlights = {
'TODO',
'WARN',
'TEST',
'PERF',
'NOTE',
'HACK',
'FIX',
}
local name = 'SolarizedToken'
for _, group_name in pairs(highlights) do
if
text ~= nil
and token.type == 'comment'
and text:match(group_name)
then
vim.lsp.semantic_tokens.highlight_token(
token,
buffer,
args.data.client_id,
name .. group_name
)
end
end
end,
})
end
function M.load_autocmd_highlights(c)
local set_hl = require('solarized.utils').set_hl
set_hl('SolarizedTokenTODO', { fg = c.info })
set_hl('SolarizedTokenWARN', { fg = c.warning })
set_hl('SolarizedTokenTEST', { fg = c.violet })
set_hl('SolarizedTokenPERF', { fg = c.magenta })
set_hl('SolarizedTokenNOTE', { fg = c.hint })
set_hl('SolarizedTokenHACK', { fg = c.cyan })
set_hl('SolarizedTokenFIX', { fg = c.error })
end
return M

86
lua/solarized/color.lua Normal file
View file

@ -0,0 +1,86 @@
---@class solarized.color
---@field hex_to_rgb fun(hex: string): number, number, number
---@field rgb_to_hex fun(red: number, green: number, blue: number): string
---@field darken fun(hex: string, percentage: number): string
---@field lighten fun(hex: string, percentage: number): string
---@field shade fun(hex: string, i: number): string
---@field tint fun(hex: string, i: number): string
---@field blend fun(fg: string, bg: string, alpha: number): string
local M = {}
function M.hex_to_rgb(hex)
local red = tonumber(hex:sub(2, 3), 16)
local green = tonumber(hex:sub(4, 5), 16)
local blue = tonumber(hex:sub(6, 7), 16)
return red, green, blue
end
function M.rgb_to_hex(red, green, blue)
return string.format('#%02x%02x%02x', red, green, blue)
end
function M.darken(hex, percentage)
local red, green, blue = M.hex_to_rgb(hex)
local i = 1
local result = {
red = red * (1 - (percentage / 100) * i),
green = green * (1 - (percentage / 100) * i),
blue = blue * (1 - (percentage / 100) * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.lighten(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red + (255 - red) * i * (percentage / 100),
green = green + (255 - green) * i * (percentage / 100),
blue = blue + (255 - blue) * i * (percentage / 100),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.shade(hex, i)
local red, green, blue = M.hex_to_rgb(hex)
local result = {
red = red * (1 - 0.1 * i),
green = green * (1 - 0.1 * i),
blue = blue * (1 - 0.1 * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
function M.tint(hex, i)
local red, green, blue = M.hex_to_rgb(hex)
local result = {
red = red + (255 - red) * i * 0.1,
green = green + (255 - green) * i * 0.1,
blue = blue + (255 - blue) * i * 0.1,
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
---@param fg number
---@param bg number
---@param alpha number
---@return number
local function blend_channel(fg, bg, alpha)
local ret = alpha * fg + ((1 - alpha) * bg)
local min = math.min
local max = math.max
local floor = math.floor
return floor(min(max(0, ret), 255) + 0.5)
end
function M.blend(fg, bg, alpha)
local red_bg, green_bg, blue_bg = M.hex_to_rgb(bg)
local red_fg, green_fg, blue_fg = M.hex_to_rgb(fg)
return M.rgb_to_hex(
blend_channel(red_fg, red_bg, alpha),
blend_channel(green_fg, green_bg, alpha),
blend_channel(blue_fg, blue_bg, alpha)
)
end
return M

View file

@ -1,38 +1,42 @@
local command = {
zen_mode = false,
}
local command = {}
local subcommands = {
colors = function(arg)
local palette = require('solarized.palette')
local colors = palette.get_colors()
colors = function(_)
local config = require 'solarized.config'
local palette = require 'solarized.palette'
local colors = palette[config.palette]
local buf = vim.api.nvim_create_buf(true, true)
local max_length = vim.tbl_count(colors)
local function color_desc(color)
local colors_desc = {
base03 = 'background tone (main)',
base02 = 'background tone (highlight/menu/LineNr)',
base01 = 'content tone (comment)',
base00 = 'content tone (winseparator)',
base0 = 'content tone (foreground)',
base1 = 'content tone (statusline/tabline)',
base2 = 'background tone (highlight)',
base3 = 'background tone (main)',
base03 = 'background (dark)',
base02 = 'background highlight (dark)',
base01 = 'comments (dark)',
base00 = 'foreground (light)',
base0 = 'foreground (dark)',
base1 = 'comments (light)',
base2 = ' background highlight (light)',
base3 = 'background (light)',
}
local desc = colors_desc[color]
if not desc then return '' end
if not desc then
return ''
end
return desc
end
local function set_lines(color, hex, line)
vim.api.nvim_buf_set_lines(buf, line, (line + 1), false, {
color .. string.rep('.', max_length - #color) .. ' = "' .. tostring(
hex
) .. '" ' .. color_desc(color),
color
.. string.rep('.', max_length - #color)
.. ' = "'
.. tostring(hex)
.. '" '
.. color_desc(color),
})
return line + 1
end
@ -53,31 +57,6 @@ local subcommands = {
vim.api.nvim_buf_set_name(buf, 'Solarized Colors')
vim.api.nvim_win_set_buf(0, buf)
end,
zen = function()
local colors = require('solarized.palette').get_colors()
local solarized = require('solarized.highlights')
if not command.zen_mode then
local highlights = {
Keyword = { fg = colors.base01 },
['@keyword.return'] = { fg = colors.base01 },
Statement = { fg = colors.base01 },
Delimiter = { fg = colors.base01 },
['@constructor'] = { fg = colors.base01 },
['@tag'] = { fg = colors.base01 },
['Type'] = { fg = colors.base01 },
['@type'] = { fg = colors.base01 },
['@include'] = { fg = colors.base01 },
}
solarized.custom_hl(highlights)
command.zen_mode = true
else
local config = require('solarized.config')
solarized.highlights(colors, config.config or config.default_config())
command.zen_mode = false
end
end,
}
function command.list()

View file

@ -1,104 +1,141 @@
local palette = require('solarized.palette')
local solarized = require('solarized.highlights')
local colorhelper = require('solarized.utils.colors')
local utils = require('solarized.utils')
---@class solarized.transparent
---@field normal? boolean
---@field normalfloat? boolean
---@field pmenu? boolean
---@field neotree? boolean
---@field nvimtree? boolean
---@field telescope? boolean
---@field whichkey? boolean
---@field lazy? boolean
---@field mason? boolean
---@field enabled? boolean
local M = {}
---@class solarized.styles
---@field enabled? boolean
---@field types? vim.api.keyset.highlight
---@field functions? vim.api.keyset.highlight
---@field parameters? vim.api.keyset.highlight
---@field comments? vim.api.keyset.highlight
---@field strings? vim.api.keyset.highlight
---@field keywords? vim.api.keyset.highlight
---@field variables? vim.api.keyset.highlight
---@field constants? vim.api.keyset.highlight
---@field statements? vim.api.keyset.highlight
M.config = nil
M.colors = nil
---@class solarized.plugins
---@field treesitter? boolean
---@field lspconfig? boolean
---@field navic? boolean
---@field cmp? boolean
---@field indentblankline? boolean
---@field indentmini? boolean
---@field neotree? boolean
---@field nvimtree? boolean
---@field whichkey? boolean
---@field dashboard? boolean
---@field gitsigns? boolean
---@field telescope? boolean
---@field noice? boolean
---@field hop? boolean
---@field ministatusline? boolean
---@field minitabline? boolean
---@field ministarter? boolean
---@field minicursorword? boolean
---@field notify? boolean
---@field rainbowdelimiters? boolean
---@field bufferline? boolean
---@field lazy? boolean
---@field rendermarkdown? boolean
---@field neogit? boolean
---@field todocomments? boolean
---@field ale? boolean
---@field alpha? boolean
---@field yanky? boolean
---@field gitgutter? boolean
---@field coc? boolean
---@field leap? boolean
---@field mason? boolean
---@field flash? boolean
--- Define and return default config
---@return table default_config
function M.default_config()
return {
transparent = false,
palette = 'solarized', -- selenized
styles = {
comments = {},
functions = {},
variables = {},
numbers = {},
constants = {},
parameters = {},
keywords = {},
types = {},
},
enables = {
bufferline = true,
cmp = true,
diagnostic = true,
dashboard = true,
editor = true,
gitsign = true,
hop = true,
indentblankline = true,
lsp = true,
lspsaga = true,
navic = true,
neogit = true,
neotree = true,
notify = true,
noice = true,
semantic = true,
syntax = true,
telescope = true,
tree = true,
treesitter = true,
todo = true,
whichkey = true,
mini = true,
},
highlights = {},
colors = {},
theme = 'default',
autocmd = true,
}
end
---@class solarized.error_lens
---@field text? boolean
---@field symbol? boolean
function M.load()
if vim.g.colors_name then vim.cmd('hi clear') end
if vim.fn.exists('syntax_on') then vim.cmd('syntax reset') end
vim.o.termguicolors = true
vim.g.colors_name = 'solarized'
local colors = {}
colors = palette.get_colors()
solarized.highlights(M.colors or colors, M.config or M.default_config())
end
--- Solarized setup
---
--- @param opts? table The user-provided configuration to be merged.
--- - transparent (boolean): Specifies if transparency is enabled.
--- - styles (table): A table specifying various style options.
--- - comments (table): Specifies if comments should be styled.
--- - functions (table): Specifies if functions should be styled.
--- - variables (table): Specifies if variables should be styled.
--- - numbers (table): Specifies if numbers should be styled.
--- - constants (table): Specifies if constants should be styled.
--- - parameters (table): Specifies if parameters should be styled.
--- - conditionals (table): Specifies if conditionals should be styled.
--- - highlights (table): A table specifying custom highlight values.
--- - colors (table): A table specifying custom color values.
--- - enables (table): A table specifying plugins to be enabled or disabled
--- - theme (string): Specifies the theme to be used.
function M.setup(opts)
M.config = vim.tbl_deep_extend('force', M.default_config(), opts or {})
local colors = palette.get_colors()
utils.on_config({
tbl = function()
M.colors = palette.extend_colors(colors, M.config.colors)
end,
fnc = function()
M.colors =
palette.extend_colors(colors, M.config.colors(colors, colorhelper))
end,
}, M.config.colors)
end
return M
---@class solarized.config
---@field transparent? solarized.transparent
---@field on_highlights? fun(colors: solarized.palette, color: solarized.color): solarized.highlights
---@field on_colors? fun(colors: solarized.palette, color: solarized.color): solarized.palette
---@field styles? solarized.styles
---@field palette? "solarized" | "selenized"
---@field variant? "spring" | "summer" | "autumn" | "winter"
---@field plugins? solarized.plugins
---@field error_lens? solarized.error_lens
return {
transparent = {
enabled = false,
pmenu = true,
normal = true,
normalfloat = true,
neotree = true,
nvimtree = true,
whichkey = true,
telescope = true,
lazy = true,
mason = true,
},
on_highlights = nil,
on_colors = nil,
palette = 'solarized',
variant = 'winter',
error_lens = {
text = false,
symbol = false,
},
styles = {
enabled = true,
types = {},
functions = {},
parameters = {},
comments = {},
strings = {},
keywords = {},
variables = {},
statements = {},
constants = {},
},
plugins = {
treesitter = true,
lspconfig = true,
navic = true,
cmp = true,
indentblankline = true,
indentmini = true,
neotree = true,
nvimtree = true,
whichkey = true,
dashboard = true,
gitsigns = true,
telescope = true,
noice = true,
hop = true,
ministatusline = true,
minitabline = true,
ministarter = true,
minicursorword = true,
notify = true,
rainbowdelimiters = true,
bufferline = true,
lazy = true,
rendermarkdown = true,
neogit = true,
todocomments = true,
ale = true,
coc = true,
leap = true,
alpha = true,
yanky = true,
gitgutter = true,
mason = true,
flash = true,
},
}

395
lua/solarized/groups.lua Normal file
View file

@ -0,0 +1,395 @@
---@class solarized.highlights
---@field ColorColumn? vim.api.keyset.highlight
---@field Conceal? vim.api.keyset.highlight
---@field CurSearch? vim.api.keyset.highlight
---@field Cursor? vim.api.keyset.highlight
---@field lCursor? vim.api.keyset.highlight
---@field CursorIM? vim.api.keyset.highlight
---@field CursorColumn? vim.api.keyset.highlight
---@field CursorLine? vim.api.keyset.highlight
---@field Directory? vim.api.keyset.highlight
---@field DiffAdd? vim.api.keyset.highlight
---@field DiffChange? vim.api.keyset.highlight
---@field DiffDelete? vim.api.keyset.highlight
---@field DiffText? vim.api.keyset.highlight
---@field EndOfBuffer? vim.api.keyset.highlight
---@field TermCursor? vim.api.keyset.highlight
---@field TermCursorNC? vim.api.keyset.highlight
---@field ErrorMsg? vim.api.keyset.highlight
---@field WinSeparator? vim.api.keyset.highlight
---@field Folded? vim.api.keyset.highlight
---@field FoldColumn? vim.api.keyset.highlight
---@field SignColumn? vim.api.keyset.highlight
---@field IncSearch? vim.api.keyset.highlight
---@field Substitute? vim.api.keyset.highlight
---@field LineNr? vim.api.keyset.highlight
---@field LineNrAbove? vim.api.keyset.highlight
---@field LineNrBelow? vim.api.keyset.highlight
---@field CursorLineNr? vim.api.keyset.highlight
---@field CursorLineFold? vim.api.keyset.highlight
---@field CursorLineSign? vim.api.keyset.highlight
---@field MatchParen? vim.api.keyset.highlight
---@field ModeMsg? vim.api.keyset.highlight
---@field MsgArea? vim.api.keyset.highlight
---@field MsgSeparator? vim.api.keyset.highlight
---@field MoreMsg? vim.api.keyset.highlight
---@field NonText? vim.api.keyset.highlight
---@field Normal? vim.api.keyset.highlight
---@field NormalFloat? vim.api.keyset.highlight
---@field FloatBorder? vim.api.keyset.highlight
---@field FloatTitle? vim.api.keyset.highlight
---@field NormalNC? vim.api.keyset.highlight
---@field Pmenu? vim.api.keyset.highlight
---@field PmenuSel? vim.api.keyset.highlight
---@field PmenuKind? vim.api.keyset.highlight
---@field PmenuKindSel? vim.api.keyset.highlight
---@field PmenuExtra? vim.api.keyset.highlight
---@field PmenuExtraSel? vim.api.keyset.highlight
---@field PmenuSbar? vim.api.keyset.highlight
---@field PmenuThumb? vim.api.keyset.highlight
---@field Question? vim.api.keyset.highlight
---@field QuickFixLine? vim.api.keyset.highlight
---@field Search? vim.api.keyset.highlight
---@field SpecialKey? vim.api.keyset.highlight
---@field SpellBad? vim.api.keyset.highlight
---@field SpellCap? vim.api.keyset.highlight
---@field SpellLocal? vim.api.keyset.highlight
---@field SpellRare? vim.api.keyset.highlight
---@field StatusLine? vim.api.keyset.highlight
---@field StatusLineNC? vim.api.keyset.highlight
---@field TabLine? vim.api.keyset.highlight
---@field TabLineFill? vim.api.keyset.highlight
---@field TabLineSel? vim.api.keyset.highlight
---@field Title? vim.api.keyset.highlight
---@field Visual? vim.api.keyset.highlight
---@field VisualNOS? vim.api.keyset.highlight
---@field warningMsg? vim.api.keyset.highlight
---@field Whitespace? vim.api.keyset.highlight
---@field WildMenu? vim.api.keyset.highlight
---@field WinBar? vim.api.keyset.highlight
---@field WinBarNC? vim.api.keyset.highlight
---@field Comment? vim.api.keyset.highlight
---@field Constant? vim.api.keyset.highlight
---@field String? vim.api.keyset.highlight
---@field Character? vim.api.keyset.highlight
---@field Number? vim.api.keyset.highlight
---@field Boolean? vim.api.keyset.highlight
---@field Float? vim.api.keyset.highlight
---@field Identifier? vim.api.keyset.highlight
---@field Property? vim.api.keyset.highlight
---@field Parameter? vim.api.keyset.highlight
---@field Function? vim.api.keyset.highlight
---@field Statement? vim.api.keyset.highlight
---@field Conditional? vim.api.keyset.highlight
---@field Repeat? vim.api.keyset.highlight
---@field Label? vim.api.keyset.highlight
---@field Operator? vim.api.keyset.highlight
---@field Keyword? vim.api.keyset.highlight
---@field Exception? vim.api.keyset.highlight
---@field PreProc? vim.api.keyset.highlight
---@field Include? vim.api.keyset.highlight
---@field Define? vim.api.keyset.highlight
---@field Macro? vim.api.keyset.highlight
---@field PreCondit? vim.api.keyset.highlight
---@field Type? vim.api.keyset.highlight
---@field StorageClass? vim.api.keyset.highlight
---@field Structure? vim.api.keyset.highlight
---@field Typedef? vim.api.keyset.highlight
---@field Special? vim.api.keyset.highlight
---@field SpecialChar? vim.api.keyset.highlight
---@field Tag? vim.api.keyset.highlight
---@field TagAttribute? vim.api.keyset.highlight
---@field TagDelimiter? vim.api.keyset.highlight
---@field Delimiter? vim.api.keyset.highlight
---@field SpecialComment? vim.api.keyset.highlight
---@field Debug? vim.api.keyset.highlight
---@field Underlined? vim.api.keyset.highlight
---@field Ignore? vim.api.keyset.highlight
---@field Error? vim.api.keyset.highlight
---@field Todo? vim.api.keyset.highlight
---@field Added? vim.api.keyset.highlight
---@field Changed? vim.api.keyset.highlight
---@field Removed? vim.api.keyset.highlight
---@field DiagnosticError? vim.api.keyset.highlight
---@field DiagnosticWarn? vim.api.keyset.highlight
---@field DiagnosticInfo? vim.api.keyset.highlight
---@field DiagnosticHint? vim.api.keyset.highlight
---@field DiagnosticOk? vim.api.keyset.highlight
---@field DiagnosticVirtualTextError? vim.api.keyset.highlight
---@field DiagnosticVirtualTextWarn? vim.api.keyset.highlight
---@field DiagnosticVirtualTextInfo? vim.api.keyset.highlight
---@field DiagnosticVirtualTextHint? vim.api.keyset.highlight
---@field DiagnosticVirtualTextOk? vim.api.keyset.highlight
---@field DiagnosticUnderlineError? vim.api.keyset.highlight
---@field DiagnosticUnderlineWarn? vim.api.keyset.highlight
---@field DiagnosticUnderlineInfo? vim.api.keyset.highlight
---@field DiagnosticUnderlineHint? vim.api.keyset.highlight
---@field DiagnosticUnderlineOk? vim.api.keyset.highlight
---@field LspReferenceText? vim.api.keyset.highlight
---@field LspReferenceRead? vim.api.keyset.highlight
---@field LspReferenceWrite? vim.api.keyset.highlight
---@field LspInlayHint? vim.api.keyset.highlight
---@field NavicText? vim.api.keyset.highlight
---@field NavicSeparator? vim.api.keyset.highlight
---@field NavicIconsMethod? vim.api.keyset.highlight
---@field NavicIconsFunction? vim.api.keyset.highlight
---@field NavicIconsField? vim.api.keyset.highlight
---@field NavicIconsVariable? vim.api.keyset.highlight
---@field NavicIconsClass? vim.api.keyset.highlight
---@field NavicIconsInterface? vim.api.keyset.highlight
---@field NavicIconsModule? vim.api.keyset.highlight
---@field NavicIconsNamespace? vim.api.keyset.highlight
---@field NavicIconsProperty? vim.api.keyset.highlight
---@field NavicIconsUnit? vim.api.keyset.highlight
---@field NavicIconsEnum? vim.api.keyset.highlight
---@field NavicIconsKeyword? vim.api.keyset.highlight
---@field NavicIconsSnippet? vim.api.keyset.highlight
---@field NavicIconsColor? vim.api.keyset.highlight
---@field NavicIconsFile? vim.api.keyset.highlight
---@field NavicIconsReference? vim.api.keyset.highlight
---@field NavicIconsFolder? vim.api.keyset.highlight
---@field NavicIconsEnumMember? vim.api.keyset.highlight
---@field NavicIconsConstant? vim.api.keyset.highlight
---@field NavicIconsStruct? vim.api.keyset.highlight
---@field NavicIconsEvent? vim.api.keyset.highlight
---@field NavicIconsOperator? vim.api.keyset.highlight
---@field NavicIconsTypeParameter? vim.api.keyset.highlight
---@field CmpItemKindText? vim.api.keyset.highlight
---@field CmpItemKindMethod? vim.api.keyset.highlight
---@field CmpItemKindFunction? vim.api.keyset.highlight
---@field CmpItemKindField? vim.api.keyset.highlight
---@field CmpItemKindVariable? vim.api.keyset.highlight
---@field CmpItemKindClass? vim.api.keyset.highlight
---@field CmpItemKindInterface? vim.api.keyset.highlight
---@field CmpItemKindModule? vim.api.keyset.highlight
---@field CmpItemKindProperty? vim.api.keyset.highlight
---@field CmpItemKindUnit? vim.api.keyset.highlight
---@field CmpItemKindEnum? vim.api.keyset.highlight
---@field CmpItemKindKeyword? vim.api.keyset.highlight
---@field CmpItemKindSnippet? vim.api.keyset.highlight
---@field CmpItemKindColor? vim.api.keyset.highlight
---@field CmpItemKindFile? vim.api.keyset.highlight
---@field CmpItemKindReference? vim.api.keyset.highlight
---@field CmpItemKindFolder? vim.api.keyset.highlight
---@field CmpItemKindEnumMember? vim.api.keyset.highlight
---@field CmpItemKindConstant? vim.api.keyset.highlight
---@field CmpItemKindStruct? vim.api.keyset.highlight
---@field CmpItemKindEvent? vim.api.keyset.highlight
---@field CmpItemKindOperator? vim.api.keyset.highlight
---@field CmpItemKindTypeParameter? vim.api.keyset.highlight
---@field IblIndent? vim.api.keyset.highlight
---@field IblScope? vim.api.keyset.highlight
---@field IndentLine? vim.api.keyset.highlight
---@field IndentLineCurrent? vim.api.keyset.highlight
---@field NeoTreeTitleBar? vim.api.keyset.highlight
---@field NeoTreeNormal? vim.api.keyset.highlight
---@field NeoTreeNormalNC? vim.api.keyset.highlight
---@field NeoTreeDotFile? vim.api.keyset.highlight
---@field NeoTreeFileNameOpened? vim.api.keyset.highlight
---@field NeoTreeFloatBorder? vim.api.keyset.highlight
---@field NeoTreeFloatTitle? vim.api.keyset.highlight
---@field NeoTreeGitAdded? vim.api.keyset.highlight
---@field NeoTreeGitConflict? vim.api.keyset.highlight
---@field NeoTreeGitDeleted? vim.api.keyset.highlight
---@field NeoTreeGitIgnored? vim.api.keyset.highlight
---@field NeoTreeGitModified? vim.api.keyset.highlight
---@field NeoTreeGitUnstaged? vim.api.keyset.highlight
---@field NeoTreeGitUntracked? vim.api.keyset.highlight
---@field NeoTreeGitStaged? vim.api.keyset.highlight
---@field NvimTreeSymlink? vim.api.keyset.highlight
---@field NvimTreeSymlinkIcon? vim.api.keyset.highlight
---@field NvimTreeFolderName? vim.api.keyset.highlight
---@field NvimTreeRootFolder? vim.api.keyset.highlight
---@field NvimTreeFolderIcon? vim.api.keyset.highlight
---@field NvimTreeEmptyFolderName? vim.api.keyset.highlight
---@field NvimTreeExecFile? vim.api.keyset.highlight
---@field NvimTreeOpenedFile? vim.api.keyset.highlight
---@field NvimTreeModifiedFile? vim.api.keyset.highlight
---@field NvimTreeSpecialFile? vim.api.keyset.highlight
---@field NvimTreeIndentMarker? vim.api.keyset.highlight
---@field NvimTreeGitDirty? vim.api.keyset.highlight
---@field NvimTreeGitStaged? vim.api.keyset.highlight
---@field NvimTreeGitMerge? vim.api.keyset.highlight
---@field NvimTreeGitRenamed? vim.api.keyset.highlight
---@field NvimTreeGitNew? vim.api.keyset.highlight
---@field NvimTreeGitDeleted? vim.api.keyset.highlight
---@field NvimTreeNormal? vim.api.keyset.highlight
---@field NvimTreeNormalFloat? vim.api.keyset.highlight
---@field NvimTreeEndOfBuffer? vim.api.keyset.highlight
---@field NvimTreeWinSeparator? vim.api.keyset.highlight
---@field WhichKeyNormal? vim.api.keyset.highlight
---@field WhichKey? vim.api.keyset.highlight
---@field WhichKeyDesc? vim.api.keyset.highlight
---@field WhichKeySeparator? vim.api.keyset.highlight
---@field WhichKeyGroup? vim.api.keyset.highlight
---@field DashboardHeader? vim.api.keyset.highlight
---@field DashboardFooter? vim.api.keyset.highlight
---@field DashboardDesc? vim.api.keyset.highlight
---@field DashboardKey? vim.api.keyset.highlight
---@field DashboardIcon? vim.api.keyset.highlight
---@field DashboardShotCut? vim.api.keyset.highlight
---@field GitSignsAdd? vim.api.keyset.highlight
---@field GitSignsChange? vim.api.keyset.highlight
---@field GitSignsDelete? vim.api.keyset.highlight
---@field TelescopeSelection? vim.api.keyset.highlight
---@field TelescopeSelectionCaret? vim.api.keyset.highlight
---@field TelescopeMultiIcon? vim.api.keyset.highlight
---@field TelescopeNormal? vim.api.keyset.highlight
---@field TelescopePreviewNormal? vim.api.keyset.highlight
---@field TelescopePromptNormal? vim.api.keyset.highlight
---@field TelescopeResultsNormal? vim.api.keyset.highlight
---@field TelescopeBorder? vim.api.keyset.highlight
---@field TelescopePromptBorder? vim.api.keyset.highlight
---@field TelescopeResultsBorder? vim.api.keyset.highlight
---@field TelescopePreviewBorder? vim.api.keyset.highlight
---@field TelescopeTitle? vim.api.keyset.highlight
---@field TelescopePromptTitle? vim.api.keyset.highlight
---@field TelescopeResultsTitle? vim.api.keyset.highlight
---@field TelescopePreviewTitle? vim.api.keyset.highlight
---@field TelescopeMatching? vim.api.keyset.highlight
---@field TelescopePreviewMatch? vim.api.keyset.highlight
---@field TelescopePromptCounter? vim.api.keyset.highlight
---@field TelescopePromptPrefix? vim.api.keyset.highlight
---@field NoiceFormatProgressTodo? vim.api.keyset.highlight
---@field NoiceFormatProgressDone? vim.api.keyset.highlight
---@field NoiceLspProgressSpinner? vim.api.keyset.highlight
---@field NoiceLspProgressClient? vim.api.keyset.highlight
---@field NoiceCmdlineIcon? vim.api.keyset.highlight
---@field NoiceCmdlinePopupBorder? vim.api.keyset.highlight
---@field NoiceCmdlinePopupTitle? vim.api.keyset.highlight
---@field NoiceLspProgressTitle? vim.api.keyset.highlight
---@field HopNextKey? vim.api.keyset.highlight
---@field HopNextKey1? vim.api.keyset.highlight
---@field HopUnmatched? vim.api.keyset.highlight
---@field MiniStatuslineModeNormal? vim.api.keyset.highlight
---@field MiniStatuslineModeInsert? vim.api.keyset.highlight
---@field MiniStatuslineModeVisual? vim.api.keyset.highlight
---@field MiniStatuslineModeReplace? vim.api.keyset.highlight
---@field MiniStatuslineModeCommand? vim.api.keyset.highlight
---@field MinistatusLineFileName? vim.api.keyset.highlight
---@field MiniStatuslineDevinfo? vim.api.keyset.highlight
---@field MiniStatuslineFileinfo? vim.api.keyset.highlight
---@field MiniStatuslineInactive? vim.api.keyset.highlight
---@field MiniTablineCurrent? vim.api.keyset.highlight
---@field MiniTablineVisible? vim.api.keyset.highlight
---@field MiniTablineHidden? vim.api.keyset.highlight
---@field MiniTablineModifiedCurrent? vim.api.keyset.highlight
---@field MiniTablineModifiedVisible? vim.api.keyset.highlight
---@field MiniTablineModifiedHidden? vim.api.keyset.highlight
---@field MiniTablineFill? vim.api.keyset.highlight
---@field MiniTablineTabpagesection? vim.api.keyset.highlight
---@field MiniStarterCurrent? vim.api.keyset.highlight
---@field MiniStarterHeader? vim.api.keyset.highlight
---@field MiniStarterFooter? vim.api.keyset.highlight
---@field MiniStarterItem? vim.api.keyset.highlight
---@field MiniStarterItemBullet? vim.api.keyset.highlight
---@field MiniStarterItemPrefix? vim.api.keyset.highlight
---@field MiniStarterSection? vim.api.keyset.highlight
---@field MiniStarterQuery? vim.api.keyset.highlight
---@field MiniCursorword? vim.api.keyset.highlight
---@field NotifyBackground? vim.api.keyset.highlight
---@field NotifyERRORBorder? vim.api.keyset.highlight
---@field NotifyWARNBorder? vim.api.keyset.highlight
---@field NotifyINFOBorder? vim.api.keyset.highlight
---@field NotifyDEBUGBorder? vim.api.keyset.highlight
---@field NotifyTRACEBorder? vim.api.keyset.highlight
---@field NotifyERRORIcon? vim.api.keyset.highlight
---@field NotifyWARNIcon? vim.api.keyset.highlight
---@field NotifyINFOIcon? vim.api.keyset.highlight
---@field NotifyDEBUGIcon? vim.api.keyset.highlight
---@field NotifyTRACEIcon? vim.api.keyset.highlight
---@field NotifyERRORTitle? vim.api.keyset.highlight
---@field NotifyWARNTitle? vim.api.keyset.highlight
---@field NotifyINFOTitle? vim.api.keyset.highlight
---@field NotifyDEBUGTitle? vim.api.keyset.highlight
---@field NotifyTRACETitle? vim.api.keyset.highlight
---@field NotifyERRORBody? vim.api.keyset.highlight
---@field NotifyWARNBody? vim.api.keyset.highlight
---@field NotifyINFOBody? vim.api.keyset.highlight
---@field NotifyDEBUGBody? vim.api.keyset.highlight
---@field NotifyTRACEBody? vim.api.keyset.highlight
---@field RainbowDelimiterRed? vim.api.keyset.highlight
---@field RainbowDelimiteYellow? vim.api.keyset.highlight
---@field RainbowDelimiterBlue? vim.api.keyset.highlight
---@field RainbowDelimiterOrange? vim.api.keyset.highlight
---@field RainbowDelimiterGreen? vim.api.keyset.highlight
---@field RainbowDelimiterViolet? vim.api.keyset.highlight
---@field RainbowDelimiterCyan? vim.api.keyset.highlight
---@field BufferLineFill? vim.api.keyset.highlight
---@field BufferLineBufferSelected? vim.api.keyset.highlight
---@field BufferLineSeparator? vim.api.keyset.highlight
---@field BufferLineSeparatorSelected? vim.api.keyset.highlight
---@field BufferLineSeparatorVisible? vim.api.keyset.highlight
---@field LazyNormal? vim.api.keyset.highlight
---@field LazyH1? vim.api.keyset.highlight
---@field LazyButton? vim.api.keyset.highlight
---@field LazyButtonActive? vim.api.keyset.highlight
---@field LazyReasonStart? vim.api.keyset.highlight
---@field LazyReasonEvent? vim.api.keyset.highlight
---@field RenderMarkdownH1Bg? vim.api.keyset.highlight
---@field RenderMarkdownH2Bg? vim.api.keyset.highlight
---@field RenderMarkdownH3Bg? vim.api.keyset.highlight
---@field RenderMarkdownH4Bg? vim.api.keyset.highlight
---@field RenderMarkdownH5Bg? vim.api.keyset.highlight
---@field RenderMarkdownH6Bg? vim.api.keyset.highlight
---@field NeogitBranch? vim.api.keyset.highlight
---@field NeogitRemote? vim.api.keyset.highlight
---@field NeogitHunkHeader? vim.api.keyset.highlight
---@field NeogitHunkHeaderHighlight? vim.api.keyset.highlight
---@field NeogitDiffContextHighlight? vim.api.keyset.highlight
---@field NeogitDiffContext? vim.api.keyset.highlight
---@field NeogitDiffDeleteHighlight? vim.api.keyset.highlight
---@field NeogitDiffDelete? vim.api.keyset.highlight
---@field NeogitDiffAddHighlight? vim.api.keyset.highlight
---@field NeogitDiffAdd? vim.api.keyset.highlight
---@field TodoFgTODO? vim.api.keyset.highlight
---@field TodoFgWARN? vim.api.keyset.highlight
---@field TodoFgTEST? vim.api.keyset.highlight
---@field TodoFgPERF? vim.api.keyset.highlight
---@field TodoFgNOTE? vim.api.keyset.highlight
---@field TodoFgHACK? vim.api.keyset.highlight
---@field TodoFgFIX? vim.api.keyset.highlight
---@field TodoSignTODO? vim.api.keyset.highlight
---@field TodoSignWARN? vim.api.keyset.highlight
---@field TodoSignTEST? vim.api.keyset.highlight
---@field TodoSignPERF? vim.api.keyset.highlight
---@field TodoSignNOTE? vim.api.keyset.highlight
---@field TodoSignHACK? vim.api.keyset.highlight
---@field TodoSignFIX? vim.api.keyset.highlight
---@field TodoBgTODO? vim.api.keyset.highlight
---@field TodoBgWARN? vim.api.keyset.highlight
---@field TodoBgTEST? vim.api.keyset.highlight
---@field TodoBgPERF? vim.api.keyset.highlight
---@field TodoBgNOTE? vim.api.keyset.highlight
---@field TodoBgHACK? vim.api.keyset.highlight
---@field TodoBgFIX? vim.api.keyset.highlight
---@field ALEErrorSign? vim.api.keyset.highlight
---@field ALEWarningSign? vim.api.keyset.highlight
---@field AlphaShortcut? vim.api.keyset.highlight
---@field AlphaHeader? vim.api.keyset.highlight
---@field AlphaHeaderLabel? vim.api.keyset.highlight
---@field AlphaFooter? vim.api.keyset.highlight
---@field AlphaButtons? vim.api.keyset.highlight
---@field YankyPut? vim.api.keyset.highlight
---@field YankyYanked? vim.api.keyset.highlight
---@field GitGutterAdd? vim.api.keyset.highlight
---@field GitGutterChange? vim.api.keyset.highlight
---@field GitGutterDelete? vim.api.keyset.highlight
---@field GitGutterAddLineNr? vim.api.keyset.highlight
---@field GitGutterChangeLineNr? vim.api.keyset.highlight
---@field GitGutterDeleteLineNr? vim.api.keyset.highlight
---@field CocErrorSign? vim.api.keyset.highlight
---@field CocWarningSign? vim.api.keyset.highlight
---@field CocInfoSign? vim.api.keyset.highlight
---@field CocHintSign? vim.api.keyset.highlight
---@field CocErrorVirtualText? vim.api.keyset.highlight
---@field CocWarningVirtualText? vim.api.keyset.highlight
---@field CocInfoVirtualText? vim.api.keyset.highlight
---@field CocHintVirtualText? vim.api.keyset.highlight
---@field LeapMatch? vim.api.keyset.highlight
---@field LeapLabel? vim.api.keyset.highlight
---@field LeapBackDrop? vim.api.keyset.highlight
---@field MasonHeader? vim.api.keyset.highlight
---@field MasonHighlight? vim.api.keyset.highlight
---@field MasonHighlightBlock? vim.api.keyset.highlight
---@field MasonHighlightBlockBold? vim.api.keyset.highlight

View file

@ -1,69 +0,0 @@
local utils = require('solarized.utils')
local colorhelper = require('solarized.utils.colors')
local M = {}
--- Update or override highlights defined by the user
---
--- @param highlights table A table containing highlight names as keys and their updated values as values
function M.custom_hl(highlights)
local get_hl = utils.get_hl
for highlight_name, highlight_value in pairs(highlights) do
local highlight = get_hl(highlight_name)
local val = {}
if highlight_value.link then
val = highlight_value
else
val = vim.tbl_extend('force', highlight, highlight_value)
end
vim.api.nvim_set_hl(0, highlight_name, val)
end
end
--- Load and apply highlights based on the enabled highlights specified in the configuration
---
--- @param colors table A table containing color values
--- @param config table A table containing configuration options, including the enabled highlights and theme
function M.load_plugins(colors, config)
for plugin, enabled in pairs(config.enables) do
if enabled then
local highlight_groups =
require(string.format('solarized.themes.%s.%s', config.theme, plugin))
highlight_groups(colors, config)
end
end
end
--- Set highlights based on the provided colors and configuration
---
--- @param colors table A table containing color values
--- @param config table A table containing configuration options
function M.highlights(colors, config)
if config.theme == 'neo' or config.theme == 'default' then
M.load_plugins(colors, config)
else
config.theme = 'default'
M.load_plugins(colors, config)
end
if vim.fn.has('nvim-0.9.4') and config.autocmd then
local extras = require('solarized.autocmd')
extras.load_autocmd()
extras.load_autocmd_highlights(colors)
end
utils.on_config({
tbl = function()
M.custom_hl(config.highlights)
end,
fnc = function()
M.custom_hl(config.highlights(colors, colorhelper))
end,
}, config.highlights)
end
return M

View file

@ -0,0 +1,830 @@
local M = {}
local function nvim_get_hl(opts)
local hl = vim.api.nvim_get_hl(0, opts)
if hl.link then
return nvim_get_hl { name = hl.link }
end
return hl
end
---@class solarized.nvim_set_hl.config
---@field transparent? boolean
---@field styles? vim.api.keyset.highlight
---@field error_lens? boolean
---@param group_name string
---@param group_val vim.api.keyset.highlight
---@param config? solarized.nvim_set_hl.config
local nvim_set_hl = function(group_name, group_val, config)
local val = { fg = 'NONE', bg = 'NONE' }
if not group_val.link then
if config and config.transparent then
group_val.bg = 'NONE'
end
if config and config.styles then
group_val = vim.tbl_extend('force', group_val, config.styles)
end
if config and config.error_lens then
local color = require 'solarized.color'
local editor = require('solarized.utils').nvim_get_hl 'Normal'
local ok, mix_color = pcall(color.blend, group_val.fg, editor.bg, 0.3)
if ok then
group_val.bg = mix_color
else
group_val.bg = color.shade(group_val.fg, 5)
end
end
val = vim.tbl_extend('force', val, group_val)
vim.api.nvim_set_hl(0, group_name, val)
else
vim.api.nvim_set_hl(0, group_name, group_val)
end
end
---@param colors solarized.palette
---@param config solarized.config
M.set_highlight = function(colors, config)
local color = require 'solarized.color'
if config.on_colors then
colors = vim.tbl_extend('force', colors, config.on_colors(colors, color))
end
local term = {
'base04',
'red',
'green',
'yellow',
'magenta',
'violet',
'cyan',
'base01',
'base01',
'orange',
'green',
'yellow',
'blue',
'red',
'green',
'base01',
}
for index, key in ipairs(term) do
vim.g['terminal_color_' .. index - 1] = colors[key]
end
local solarized_dark = require 'solarized.variants'
solarized_dark.set_variant {
colors = colors,
nvim_set_hl = nvim_set_hl,
config = config,
color = color,
}
-- EDITOR :h highlight-groups
nvim_set_hl('ColorColumn', { bg = colors.base02 })
nvim_set_hl('Conceal', { fg = colors.blue })
nvim_set_hl('CurSearch', { link = 'IncSearch' })
nvim_set_hl('Cursor', { fg = colors.base03, bg = colors.base0 })
nvim_set_hl('lCursor', { link = 'Cursor' })
nvim_set_hl('CursorIM', { link = 'Cursor' })
nvim_set_hl('CursorColumn', { link = 'ColorColumn' })
nvim_set_hl('CursorLine', { bg = colors.base02 })
nvim_set_hl('Directory', { fg = colors.blue })
nvim_set_hl('DiffAdd', { fg = colors.git_add })
nvim_set_hl('DiffChange', { fg = colors.git_modify })
nvim_set_hl('DiffDelete', { fg = colors.git_delete, reverse = true })
nvim_set_hl('DiffText', { fg = colors.cyan, reverse = true })
nvim_set_hl('EndOfBuffer', { fg = colors.base03 })
nvim_set_hl('TermCursor', { link = 'Cursor' })
nvim_set_hl('TermCursorNC', { fg = colors.base03, bg = colors.base0 })
nvim_set_hl('ErrorMsg', { fg = colors.diag_error })
-- nvim_set_hl(
-- 'WinSeparator',
-- { fg = colors.base01, bg = colors.base04 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('Folded', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('FoldColumn', { fg = colors.base0, bg = colors.base04 })
-- nvim_set_hl(
-- 'SignColumn',
-- { fg = colors.base01, bg = colors.base02 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('IncSearch', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('Substitute', { link = 'IncSearch' })
-- nvim_set_hl(
-- 'LineNr',
-- { fg = colors.base01, bg = colors.base02 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('LineNrAbove', { link = 'LineNr' })
nvim_set_hl('LineNrBelow', { link = 'LineNr' })
-- nvim_set_hl(
-- 'CursorLineNr',
-- { fg = colors.base1, bg = colors.base02 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('CursorLineFold', { link = 'FoldColumn' })
nvim_set_hl('CursorLineSign', { link = 'SignColumn' })
nvim_set_hl('MatchParen', { fg = colors.cyan })
nvim_set_hl('ModeMsg', { fg = colors.blue })
nvim_set_hl('MsgArea', { link = 'Normal' })
nvim_set_hl('MsgSeparator', { link = 'Normal' })
nvim_set_hl('MoreMsg', { link = 'ModeMsg' })
nvim_set_hl('NonText', { fg = colors.base01 })
nvim_set_hl(
'Normal',
{ fg = colors.base0, bg = colors.base03 },
{ transparent = config.transparent.normal and config.transparent.enabled }
)
nvim_set_hl('NormalFloat', { fg = colors.base0, bg = colors.base04 }, {
transparent = config.transparent.normalfloat and config.transparent.enabled,
})
-- nvim_set_hl('FloatBorder', { fg = colors.base01, bg = colors.base04 }, {
-- transparent = config.transparent.enabled,
-- })
-- nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue, reverse = true })
nvim_set_hl('NormalNC', { link = 'Normal' })
nvim_set_hl('Pmenu', { fg = colors.base0, bg = colors.base04 }, {
transparent = config.transparent.pmenu and config.transparent.enabled,
})
nvim_set_hl('PmenuSel', { fg = colors.base2, bg = colors.base01 })
nvim_set_hl('PmenuKind', { link = 'Pmenu' })
nvim_set_hl('PmenuKindSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuExtra', { link = 'Pmenu' })
nvim_set_hl('PmenuExtraSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuSbar', { bg = colors.base04 })
nvim_set_hl('PmenuThumb', { bg = colors.base1 })
nvim_set_hl('Question', { fg = colors.diag_info })
nvim_set_hl('QuickFixLine', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('Search', { fg = colors.base1, bg = colors.mix_base1, bold = true })
nvim_set_hl('SpecialKey', { link = 'NonText' })
nvim_set_hl('SpellBad', { underline = true, strikethrough = true })
nvim_set_hl('SpellCap', { fg = colors.diag_hint })
nvim_set_hl('SpellLocal', { link = 'SpellCap' })
nvim_set_hl('SpellRare', { fg = colors.diag_warning })
nvim_set_hl('StatusLine', { fg = colors.base1, bg = colors.base04 })
nvim_set_hl('StatusLineNC', { fg = colors.base01, bg = colors.base04 })
nvim_set_hl('TabLine', { fg = colors.base01, bg = colors.base04 })
nvim_set_hl('TabLineFill', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('TabLineSel', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('Title', { fg = colors.blue })
nvim_set_hl('Visual', { fg = colors.base1, bg = colors.mix_base1 })
nvim_set_hl('VisualNOS', { link = 'Visual' })
nvim_set_hl('warningMsg', { fg = colors.diag_warning })
nvim_set_hl('Whitespace', { fg = colors.base01 })
nvim_set_hl('WildMenu', { fg = colors.base02 })
nvim_set_hl('WinBar', { link = 'Pmenu' })
nvim_set_hl('WinBarNC', { link = 'WinBar' })
-- PLUGINS
if config.plugins.treesitter then
nvim_set_hl('@variable', { link = 'Identifier' })
nvim_set_hl('@variable.builtin', { link = 'Constant' })
nvim_set_hl('@variable.parameter', { link = 'Parameter' })
nvim_set_hl('@variable.member', { link = 'Property' })
nvim_set_hl('@property', { link = 'Property' })
nvim_set_hl('@property.json', { link = 'Keyword' })
nvim_set_hl('@property.yaml', { link = 'Keyword' })
nvim_set_hl('@constant', { link = 'Constant' })
nvim_set_hl('@constant.builtin', { link = 'Constant' })
nvim_set_hl('@constant.macro', { link = 'Constant' })
nvim_set_hl('@constant.html', { link = 'Tag' })
nvim_set_hl('@module', { link = 'Type' })
nvim_set_hl('@module.builtin', { link = 'Constant' })
nvim_set_hl('@label', { link = 'Statement' })
nvim_set_hl('@string', { link = 'String' })
nvim_set_hl('@string.documentation', { link = 'Statement' })
nvim_set_hl('@string.regexp', { fg = colors.magenta })
nvim_set_hl('@string.escape', { link = 'Statement' })
nvim_set_hl('@string.special', { link = 'Special' })
nvim_set_hl('@string.special.symbol', { link = 'Identifier' })
nvim_set_hl('@string.special.url', { link = 'Underlined' })
nvim_set_hl('@character', { link = 'Constant' })
nvim_set_hl('@character.special', { link = 'Constant' })
nvim_set_hl('@character.printf', { link = 'Keyword' })
nvim_set_hl('@type', { link = 'Type' })
nvim_set_hl('@type.builtin', { link = 'Keyword' })
nvim_set_hl('@type.definition', { link = 'Type' })
nvim_set_hl('@type.qualifier', { link = 'Type' })
nvim_set_hl('@attribute', { link = 'Keyword' })
nvim_set_hl('@function', { link = 'Function' })
nvim_set_hl('@function.builtin', { link = 'Function' }, { styles = config.styles.functions })
nvim_set_hl('@function.call', { link = 'Function' })
nvim_set_hl('@function.macro', { link = 'Function' })
nvim_set_hl('@function.method', { link = 'Function' })
nvim_set_hl('@function.method.call', { link = 'Function' })
nvim_set_hl('@constructor', { link = 'Type' })
nvim_set_hl('@constructor.lua', { link = 'Delimiter' })
nvim_set_hl('@operator', { link = 'Operator' })
nvim_set_hl('@keyword', { link = 'Keyword' })
nvim_set_hl('@keyword.coroutine', { link = 'Statement' })
nvim_set_hl('@keyword.function', { link = 'Keyword' })
nvim_set_hl('@keyword.type', { link = 'Keyword' })
nvim_set_hl('@keyword.operator', { link = 'Statement' })
nvim_set_hl('@keyword.import', { link = 'Include' })
nvim_set_hl('@keyword.repeat', { link = 'Statement' })
nvim_set_hl('@keyword.return', { link = 'Statement' })
nvim_set_hl('@keyword.debug', { link = 'Keyword' })
nvim_set_hl('@keyword.exception', { link = 'Statement' })
nvim_set_hl('@keyword.conditional', { link = 'Statement' })
nvim_set_hl('@keyword.conditional.ternary', { link = 'Statement' })
nvim_set_hl('@keyword.directive', { link = 'Statement' })
nvim_set_hl('@keyword.directive.define', { link = 'Statement' })
nvim_set_hl('@punctuation.delimiter', { link = 'Delimiter' })
nvim_set_hl('@punctuation.bracket', { link = 'Delimiter' })
nvim_set_hl('@punctuation.special', { link = 'Keyword' })
nvim_set_hl('@comment', { link = 'Comment' })
nvim_set_hl('@comment.documentation', { link = 'Comment' })
nvim_set_hl('@comment.error', { fg = colors.diag_error })
nvim_set_hl('@comment.warning', { fg = colors.diag_warning })
nvim_set_hl('@comment.todo', { link = 'Todo' })
nvim_set_hl('@comment.note', { fg = colors.diag_hint })
nvim_set_hl('@markup.strong', { fg = colors.magenta, bold = true })
nvim_set_hl('@markup.italic', { fg = colors.magenta, italic = true })
nvim_set_hl('@markup.strikethrough', { fg = colors.base01, strikethrough = true })
nvim_set_hl('@markup.underline', { link = 'Underlined' })
nvim_set_hl('@markup.heading', { fg = colors.blue, bold = true })
nvim_set_hl('@markup.heading.1', { fg = colors.blue })
nvim_set_hl('@markup.heading.2', { fg = colors.violet })
nvim_set_hl('@markup.heading.3', { fg = colors.yellow })
nvim_set_hl('@markup.heading.4', { fg = colors.orange })
nvim_set_hl('@markup.heading.5', { fg = colors.red })
nvim_set_hl('@markup.heading.6', { fg = colors.magenta })
nvim_set_hl('@markup.quote', { fg = colors.green })
nvim_set_hl('@markup.math', { fg = colors.violet })
nvim_set_hl('@markup.environment', { link = 'Comment' })
nvim_set_hl('@markup.link', { link = 'Underlined' })
nvim_set_hl('@markup.link.label', { link = 'Constant' })
nvim_set_hl('@markup.link.url', { link = 'Underlined' })
nvim_set_hl('@markup.raw', { fg = colors.cyan })
nvim_set_hl('@markup.raw.block', { fg = colors.base0 })
nvim_set_hl('@markup.list', { fg = colors.orange })
nvim_set_hl('@markup.list.checked', { fg = colors.green })
nvim_set_hl('@markup.list.unchecked', { fg = colors.base01 })
nvim_set_hl('@diff.plus', { fg = colors.git_add })
nvim_set_hl('@diff.minus', { fg = colors.git_delete })
nvim_set_hl('@diff.delta', { fg = colors.git_modify })
nvim_set_hl('@tag', { link = 'Tag' })
nvim_set_hl('@tag.attribute', { link = 'TagAttribute' })
nvim_set_hl('@tag.delimiter', { link = 'TagDelimiter' })
end
local signcolumn = require('solarized.utils').nvim_get_hl 'SignColumn'
if config.plugins.lspconfig then
nvim_set_hl('@lsp.type.class', { link = 'Type' })
nvim_set_hl('@lsp.type.decorator', { link = 'Function' })
nvim_set_hl('@lsp.type.enum', { link = 'Type' })
nvim_set_hl('@lsp.type.enumMember', { link = 'Type' })
nvim_set_hl('@lsp.type.interface', { link = 'Type' })
nvim_set_hl('@lsp.type.macro', { link = '@function.builtin' })
nvim_set_hl('@lsp.type.namespace', { link = 'Type' })
nvim_set_hl('@lsp.type.parameter', { link = 'Parameter' })
nvim_set_hl('@lsp.type.property', { link = 'Property' })
nvim_set_hl('@lsp.type.struct', { link = 'Type' })
nvim_set_hl('@lsp.type.type', { link = 'Type' })
nvim_set_hl('@lsp.type.typeParameter', { link = 'Type' })
nvim_set_hl('@lsp.type.variable', { link = 'Identifier' })
nvim_set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.global', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' })
nvim_set_hl('@lsp.typemod.class.documentation', { link = 'Type' })
nvim_set_hl('@lsp.typemod.property.readonly', { link = 'Constant' })
nvim_set_hl('DiagnosticError', { fg = colors.diag_error })
nvim_set_hl('DiagnosticWarn', { fg = colors.diag_warning })
nvim_set_hl('DiagnosticInfo', { fg = colors.diag_info })
nvim_set_hl('DiagnosticHint', { fg = colors.diag_hint })
nvim_set_hl('DiagnosticOk', { fg = colors.diag_ok })
nvim_set_hl(
'DiagnosticVirtualTextError',
{ fg = colors.diag_error },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextWarn',
{ fg = colors.diag_warning },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextInfo',
{ fg = colors.diag_info },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextHint',
{ fg = colors.diag_hint },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextOk',
{ fg = colors.diag_ok },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticUnderlineError',
{ fg = colors.diag_error, underline = true, sp = colors.diag_error }
)
nvim_set_hl(
'DiagnosticUnderlineWarn',
{ fg = colors.diag_warning, underline = true, sp = colors.diag_warning }
)
nvim_set_hl(
'DiagnosticUnderlineInfo',
{ fg = colors.diag_info, underline = true, sp = colors.diag_info }
)
nvim_set_hl(
'DiagnosticUnderlineHint',
{ fg = colors.diag_hint, underline = true, sp = colors.diag_hint }
)
nvim_set_hl(
'DiagnosticUnderlineOk',
{ fg = colors.diag_ok, underline = true, sp = colors.diag_ok }
)
nvim_set_hl(
'DiagnosticSignError',
{ fg = colors.diag_error, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Error" signs in sign column.
nvim_set_hl(
'DiagnosticSignWarn',
{ fg = colors.diag_warning, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Warn" signs in sign column.
nvim_set_hl(
'DiagnosticSignInfo',
{ fg = colors.diag_info, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Info" signs in sign column.
nvim_set_hl(
'DiagnosticSignHint',
{ fg = colors.diag_hint, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Hint" signs in sign column.
nvim_set_hl(
'DiagnosticSignOk',
{ fg = colors.diag_ok, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
)
nvim_set_hl('LspReferenceText', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('LspReferenceRead', { fg = colors.green, bg = colors.mix_green })
nvim_set_hl('LspReferenceWrite', { fg = colors.green, bg = colors.mix_green })
-- nvim_set_hl('LspInlayHint', { fg = colors.base01 })
nvim_set_hl('LspInlayHint', { fg = color.shade(colors.cyan, 3) })
end
if config.plugins.navic then
nvim_set_hl('NavicText', { fg = colors.base0 })
nvim_set_hl('NavicSeparator', { link = 'Keyword' })
nvim_set_hl('NavicIconsMethod', { link = 'Function' })
nvim_set_hl('NavicIconsFunction', { link = 'Function' })
nvim_set_hl('NavicIconsField', { link = 'Identifier' })
nvim_set_hl('NavicIconsVariable', { link = 'Identifier' })
nvim_set_hl('NavicIconsClass', { link = 'Type' })
nvim_set_hl('NavicIconsInterface', { link = 'Type' })
nvim_set_hl('NavicIconsModule', { link = 'Type' })
nvim_set_hl('NavicIconsNamespace', { link = 'Type' })
nvim_set_hl('NavicIconsProperty', { link = 'Identifier' })
nvim_set_hl('NavicIconsUnit', { link = 'Number' })
nvim_set_hl('NavicIconsEnum', { link = 'Type' })
nvim_set_hl('NavicIconsKeyword', { link = 'Keyword' })
nvim_set_hl('NavicIconsSnippet', { link = 'Tag' })
nvim_set_hl('NavicIconsColor', { link = 'Special' })
nvim_set_hl('NavicIconsFile', { link = 'Identifier' })
nvim_set_hl('NavicIconsReference', { link = 'Underlined' })
nvim_set_hl('NavicIconsFolder', { link = 'Directory' })
nvim_set_hl('NavicIconsEnumMember', { link = 'Constant' })
nvim_set_hl('NavicIconsConstant', { link = 'Constant' })
nvim_set_hl('NavicIconsStruct', { link = 'Identifier' })
nvim_set_hl('NavicIconsEvent', { link = 'Function' })
nvim_set_hl('NavicIconsOperator', { link = 'Operator' })
nvim_set_hl('NavicIconsTypeParameter', { link = 'Type' })
end
if config.plugins.cmp then
nvim_set_hl('CmpItemKindText', { link = 'String' })
nvim_set_hl('CmpItemKindMethod', { link = 'Function' })
nvim_set_hl('CmpItemKindFunction', { link = 'Function' })
nvim_set_hl('CmpItemKindField', { link = 'Identifier' })
nvim_set_hl('CmpItemKindVariable', { link = 'Identifier' })
nvim_set_hl('CmpItemKindClass', { link = 'Type' })
nvim_set_hl('CmpItemKindInterface', { link = 'Type' })
nvim_set_hl('CmpItemKindModule', { link = 'Type' })
nvim_set_hl('CmpItemKindProperty', { link = 'Identifier' })
nvim_set_hl('CmpItemKindUnit', { link = 'Number' })
nvim_set_hl('CmpItemKindEnum', { link = 'Type' })
nvim_set_hl('CmpItemKindKeyword', { link = 'Keyword' })
nvim_set_hl('CmpItemKindSnippet', { link = 'Tag' })
nvim_set_hl('CmpItemKindColor', { link = 'Special' })
nvim_set_hl('CmpItemKindFile', { link = 'Identifier' })
nvim_set_hl('CmpItemKindReference', { link = 'Underlined' })
nvim_set_hl('CmpItemKindFolder', { link = 'Directory' })
nvim_set_hl('CmpItemKindEnumMember', { link = 'Constant' })
nvim_set_hl('CmpItemKindConstant', { link = 'Constant' })
nvim_set_hl('CmpItemKindStruct', { link = 'Identifier' })
nvim_set_hl('CmpItemKindEvent', { link = 'Function' })
nvim_set_hl('CmpItemKindOperator', { link = 'Operator' })
nvim_set_hl('CmpItemKindTypeParameter', { link = 'Type' })
end
if config.plugins.indentblankline then
nvim_set_hl('IblIndent', { fg = colors.mix_base1 })
nvim_set_hl('IblScope', { fg = colors.base01 })
end
if config.plugins.indentmini then
nvim_set_hl('IndentLine', { fg = colors.base02 })
nvim_set_hl('IndentLineCurrent', { fg = colors.base01 })
end
if config.plugins.neotree then
nvim_set_hl('NeoTreeTitleBar', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl(
'NeoTreeNormal',
{ fg = colors.base1, bg = colors.base04 },
{ transparent = config.transparent.neotree and config.transparent.enabled }
)
nvim_set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
nvim_set_hl('NeoTreeDotFile', { fg = colors.base01 })
nvim_set_hl('NeoTreeGitIgnored', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileStats', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeDimText', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
nvim_set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
nvim_set_hl('NeoTreeFloatTitle', { link = 'Title' })
nvim_set_hl('NeoTreeGitAdded', { fg = colors.git_add })
nvim_set_hl('NeoTreeGitConflict', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl('NeoTreeGitModified', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUnstaged', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUntracked', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitStaged', { fg = colors.git_add })
end
if config.plugins.nvimtree then
nvim_set_hl('NvimTreeSymlink', { link = 'Underlined' })
nvim_set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeRootFolder', { link = 'Title' })
nvim_set_hl('NvimTreeFolderIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeEmptyFolderName', { fg = colors.base0 })
nvim_set_hl('NvimTreeExecFile', { link = 'Function' })
nvim_set_hl('NvimTreeOpenedFile', { fg = colors.blue, bold = true })
nvim_set_hl('NvimTreeModifiedFile', { fg = colors.git_modify })
nvim_set_hl('NvimTreeSpecialFile', { link = 'Special' })
nvim_set_hl('NvimTreeIndentMarker', { fg = colors.shade_violet })
nvim_set_hl('NvimTreeGitDirty', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitStaged', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitMerge', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitRenamed', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitNew', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl(
'NvimTreeNormal',
{ fg = colors.base1, bg = colors.base04 },
{ transparent = config.transparent.neotree and config.transparent.enabled }
)
nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base04 })
nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' })
end
if config.plugins.whichkey then
nvim_set_hl(
'WhichKeyNormal',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent.whichkey and config.transparent.enabled }
)
nvim_set_hl('WhichKey', { link = 'Property' })
nvim_set_hl('WhichKeyDesc', { link = 'String' })
nvim_set_hl('WhichKeySeparator', { link = 'Keyword' })
nvim_set_hl('WhichKeyGroup', { link = 'Constant' })
end
if config.plugins.dashboard then
nvim_set_hl('DashboardHeader', { fg = colors.base01 })
nvim_set_hl('DashboardFooter', { fg = colors.violet })
nvim_set_hl('DashboardDesc', { link = 'Directory' })
nvim_set_hl('DashboardKey', { link = 'Keyword' })
nvim_set_hl('DashboardIcon', { link = 'Directory' })
nvim_set_hl('DashboardShotCut', { fg = colors.base0 })
end
if config.plugins.gitsigns then
nvim_set_hl(
'GitSignsAdd',
{ fg = colors.git_add, bg = signcolumn.bg },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('GitSignsChange', { fg = colors.git_modify, bg = signcolumn.bg }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('GitSignsDelete', { fg = colors.git_delete, bg = signcolumn.bg }, {
transparent = config.transparent.enabled,
})
end
if config.plugins.telescope then
nvim_set_hl('TelescopeSelection', { fg = colors.base1, bg = colors.base02 })
nvim_set_hl('TelescopeSelectionCaret', { fg = colors.blue, bg = colors.base02 })
nvim_set_hl('TelescopeMultiIcon', { fg = colors.base1 })
nvim_set_hl(
'TelescopeNormal',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent.telescope and config.transparent.enabled }
)
nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeBorder', { link = 'FloatBorder' })
nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeTitle', { link = 'FloatTitle' })
nvim_set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeMatching', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('TelescopePreviewMatch', { link = 'TelescopeMatching' })
nvim_set_hl('TelescopePromptCounter', { link = 'NonText' })
nvim_set_hl('TelescopePromptPrefix', { fg = colors.cyan })
end
if config.plugins.noice then
nvim_set_hl('NoiceFormatProgressTodo', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('NoiceFormatProgressDone', { fg = colors.diag_ok, reverse = true })
nvim_set_hl('NoiceLspProgressSpinner', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressClient', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressTitle', { link = 'Title' })
nvim_set_hl('NoiceCmdlineIcon', { link = 'WinSeparator' })
nvim_set_hl('NoiceCmdlinePopupBorder', { link = 'WinSeparator' })
nvim_set_hl('NoiceCmdlinePopupTitle', { link = 'Title' })
end
if config.plugins.hop then
nvim_set_hl('HopNextKey', { fg = colors.magenta })
nvim_set_hl('HopNextKey1', { fg = colors.blue })
nvim_set_hl('HopNextKey2', { fg = colors.cyan })
nvim_set_hl('HopUnmatched', { fg = colors.base01 })
end
if config.plugins.ministatusline then
nvim_set_hl('MiniStatuslineModeNormal', { fg = colors.base03, bg = colors.blue })
nvim_set_hl('MiniStatuslineModeInsert', { fg = colors.base03, bg = colors.green })
nvim_set_hl('MiniStatuslineModeVisual', { fg = colors.base03, bg = colors.magenta })
nvim_set_hl('MiniStatuslineModeReplace', { fg = colors.base03, bg = colors.red })
nvim_set_hl('MiniStatuslineModeCommand', { fg = colors.base03, bg = colors.orange })
nvim_set_hl('MinistatusLineFileName', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('MiniStatuslineDevinfo', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('MiniStatuslineFileinfo', { fg = colors.base0, bg = colors.base02 })
nvim_set_hl('MiniStatuslineInactive', { fg = colors.base01, bg = colors.base03 })
end
if config.plugins.minitabline then
nvim_set_hl('MiniTablineCurrent', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('MiniTablineVisible', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('MiniTablineHidden', { fg = colors.base01, bg = colors.base03 })
nvim_set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
nvim_set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
nvim_set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
nvim_set_hl('MiniTablineFill', { fg = colors.base0, bg = colors.base04 })
nvim_set_hl('MiniTablineTabpagesection', { fg = colors.base0, bg = colors.base04 })
end
if config.plugins.ministarter then
nvim_set_hl('MiniStarterCurrent', { link = 'CursorLine' })
nvim_set_hl('MiniStarterHeader', { fg = colors.base01 })
nvim_set_hl('MiniStarterFooter', { fg = colors.violet })
nvim_set_hl('MiniStarterItem', { fg = colors.base0 })
nvim_set_hl('MiniStarterItemBullet', { fg = colors.blue })
nvim_set_hl('MiniStarterItemPrefix', { fg = colors.blue })
nvim_set_hl('MiniStarterSection', { link = 'Title' })
nvim_set_hl('MiniStarterQuery', { fg = colors.blue, bold = true })
end
if config.plugins.minicursorword then
nvim_set_hl('MiniCursorword', { fg = colors.cyan, bg = colors.mix_cyan })
end
if config.plugins.notify then
nvim_set_hl('NotifyBackground', { bg = colors.base03 })
nvim_set_hl('NotifyERRORBorder', { link = 'NotifyERRORBody' })
nvim_set_hl('NotifyWARNBorder', { link = 'NotifyWARNBody' })
nvim_set_hl('NotifyINFOBorder', { link = 'NotifyINFOBody' })
nvim_set_hl('NotifyDEBUGBorder', { link = 'NotifyDEBUGBody' })
nvim_set_hl('NotifyTRACEBorder', { link = 'NotifyTRACEBody' })
nvim_set_hl('NotifyERRORIcon', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNIcon', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOIcon', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGIcon', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEIcon', { fg = colors.blue })
nvim_set_hl('NotifyERRORTitle', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNTitle', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOTitle', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGTitle', { fg = colors.magenta })
nvim_set_hl('NotifyTRACETitle', { fg = colors.blue })
nvim_set_hl('NotifyERRORBody', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEBody', { fg = colors.blue })
end
if config.plugins.rainbowdelimiters then
nvim_set_hl('RainbowDelimiterRed', { fg = colors.red })
nvim_set_hl('RainbowDelimiteYellow', { fg = colors.yellow })
nvim_set_hl('RainbowDelimiterBlue', { fg = colors.blue })
nvim_set_hl('RainbowDelimiterOrange', { fg = colors.orange })
nvim_set_hl('RainbowDelimiterGreen', { fg = colors.green })
nvim_set_hl('RainbowDelimiterViolet', { fg = colors.violet })
nvim_set_hl('RainbowDelimiterCyan', { fg = colors.cyan })
end
if config.plugins.bufferline and config.transparent.enabled then
local background = color.shade(colors.base02, 2)
nvim_set_hl('BufferLineFill', { bg = background })
nvim_set_hl('BufferLineBufferSelected', { fg = colors.base0 })
nvim_set_hl('BufferLineSeparator', { fg = background })
nvim_set_hl('BufferLineSeparatorSelected', { fg = background })
nvim_set_hl('BufferLineSeparatorVisible', { fg = background })
end
if config.plugins.lazy then
nvim_set_hl('LazyNormal', { fg = colors.base0, bg = colors.base04 }, {
transparent = config.transparent.lazy and config.transparent.enabled,
})
nvim_set_hl('LazyH1', { fg = colors.blue, bold = true })
nvim_set_hl('LazyButton', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('LazyButtonActive', { fg = colors.violet, bg = colors.mix_violet })
nvim_set_hl('LazyReasonStart', { fg = colors.yellow })
nvim_set_hl('LazyReasonEvent', { fg = colors.magenta })
end
if config.plugins.rendermarkdown then
nvim_set_hl('RenderMarkdownH1Bg', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('RenderMarkdownH2Bg', { fg = colors.violet, bg = colors.mix_violet })
nvim_set_hl('RenderMarkdownH3Bg', { fg = colors.yellow, bg = colors.mix_yellow })
nvim_set_hl('RenderMarkdownH4Bg', { fg = colors.orange, bg = colors.mix_orange })
nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.red, bg = colors.mix_red })
nvim_set_hl('RenderMarkdownH6Bg', { fg = colors.magenta, bg = colors.mix_magenta })
end
if config.plugins.neogit then
nvim_set_hl('NeogitBranch', { fg = colors.red })
nvim_set_hl('NeogitRemote', { fg = colors.violet })
nvim_set_hl('NeogitHunkHeader', { fg = colors.blue, bg = colors.mix_blue, bold = true })
nvim_set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
nvim_set_hl('NeogitDiffContextHighlight', { fg = colors.base1, bg = colors.base02 })
nvim_set_hl('NeogitDiffContext', { fg = colors.base0, bg = colors.base03 })
nvim_set_hl('NeogitDiffDeleteHighlight', { fg = colors.red, bg = colors.mix_red })
nvim_set_hl('NeogitDiffDelete', { fg = colors.red })
nvim_set_hl('NeogitDiffAddHighlight', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('NeogitDiffAdd', { fg = colors.blue })
end
if config.plugins.todocomments then
nvim_set_hl('TodoFgTODO', { fg = colors.blue })
nvim_set_hl('TodoFgWARN', { fg = colors.yellow })
nvim_set_hl('TodoFgTEST', { fg = colors.violet })
nvim_set_hl('TodoFgPERF', { fg = colors.magenta })
nvim_set_hl('TodoFgNOTE', { fg = colors.cyan })
nvim_set_hl('TodoFgHACK', { fg = colors.orange })
nvim_set_hl('TodoFgFIX', { fg = colors.red })
nvim_set_hl('TodoSignTODO', { fg = colors.blue })
nvim_set_hl('TodoSignWARN', { fg = colors.yellow })
nvim_set_hl('TodoSignTEST', { fg = colors.violet })
nvim_set_hl('TodoSignPERF', { fg = colors.magenta })
nvim_set_hl('TodoSignNOTE', { fg = colors.cyan })
nvim_set_hl('TodoSignHACK', { fg = colors.orange })
nvim_set_hl('TodoSignFIX', { fg = colors.red })
nvim_set_hl('TodoBgTODO', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('TodoBgWARN', { fg = colors.yellow, bg = colors.mix_yellow })
nvim_set_hl('TodoBgTEST', { fg = colors.violet, bg = colors.mix_violet })
nvim_set_hl('TodoBgPERF', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('TodoBgNOTE', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('TodoBgHACK', { fg = colors.orange, bg = colors.mix_orange })
nvim_set_hl('TodoBgFIX', { fg = colors.red, bg = colors.mix_red })
end
if config.plugins.ale then
nvim_set_hl('ALEErrorSign', { fg = colors.diag_error })
nvim_set_hl('ALEWarningSign', { fg = colors.diag_warning })
end
if config.plugins.alpha then
nvim_set_hl('AlphaShortcut', { fg = colors.base0 })
nvim_set_hl('AlphaHeader', { fg = colors.base01 })
nvim_set_hl('AlphaHeaderLabel', { fg = colors.orange })
nvim_set_hl('AlphaFooter', { fg = colors.violet })
nvim_set_hl('AlphaButtons', { link = 'Directory' })
end
if config.plugins.yanky then
nvim_set_hl('YankyPut', { link = 'Search' })
nvim_set_hl('YankyYanked', { link = 'IncSearch' })
end
if config.plugins.gitgutter then
nvim_set_hl('GitGutterAdd', { fg = colors.git_add })
nvim_set_hl('GitGutterChange', { fg = colors.git_modify })
nvim_set_hl('GitGutterDelete', { fg = colors.git_delete })
nvim_set_hl('GitGutterAddLineNr', { fg = colors.git_add })
nvim_set_hl('GitGutterChangeLineNr', { fg = colors.git_modify })
nvim_set_hl('GitGutterDeleteLineNr', { fg = colors.git_delete })
end
if config.plugins.coc then
nvim_set_hl(
'CocErrorSign',
{ fg = colors.diag_error, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocWarningSign',
{ fg = colors.diag_warning, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocInfoSign',
{ fg = colors.diag_info, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocHintSign',
{ fg = colors.diag_hint, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocErrorVirtualText',
{ fg = colors.diag_error },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocWarningVirtualText',
{ fg = colors.diag_warning },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocInfoVirtualText',
{ fg = colors.diag_info },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocHintVirtualText',
{ fg = colors.diag_hint },
{ error_lens = config.error_lens.text }
)
end
if config.plugins.leap then
nvim_set_hl('LeapMatch', { fg = colors.magenta, bg = colors.mix_magenta, bold = true })
nvim_set_hl('LeapLabel', { fg = colors.magenta, bold = true })
nvim_set_hl('LeapBackDrop', { fg = colors.base01 })
end
if config.plugins.mason then
nvim_set_hl('MasonHeader', { link = 'FloatTitle' })
nvim_set_hl(
'MasonNormal',
{ fg = colors.base0, bg = colors.base04 },
{ transparent = config.transparent.mason and config.transparent.enabled }
)
nvim_set_hl('MasonHighlight', { fg = colors.cyan })
nvim_set_hl('MasonHighlightBlock', { fg = colors.mix_cyan, bg = colors.cyan })
nvim_set_hl('MasonHighlightBlockBold', { fg = colors.mix_cyan, bg = colors.cyan, bold = true })
end
if config.plugins.flash then
nvim_set_hl('FlashMatch', { fg = colors.base1 })
nvim_set_hl('FlashLabel', { fg = colors.magenta })
nvim_set_hl('FlashCurrent', { fg = colors.red })
end
if config.on_highlights then
local highlights = config.on_highlights(colors, color)
for group_name, group_val in pairs(highlights) do
local hl = nvim_get_hl { name = group_name, link = true }
local val = {}
if hl.link then
val = group_val
else
val = vim.tbl_extend('force', hl, group_val)
end
vim.api.nvim_set_hl(0, group_name, val)
end
end
end
return M

View file

@ -0,0 +1,823 @@
local M = {}
local function nvim_get_hl(opts)
local hl = vim.api.nvim_get_hl(0, opts)
if hl.link then
return nvim_get_hl { name = hl.link }
end
return hl
end
---@param group_name string
---@param group_val vim.api.keyset.highlight
---@param config? solarized.nvim_set_hl.config
local nvim_set_hl = function(group_name, group_val, config)
local val = { fg = 'NONE', bg = 'NONE' }
if not group_val.link then
if config and config.transparent then
group_val.bg = 'NONE'
end
if config and config.styles then
group_val = vim.tbl_extend('force', group_val, config.styles)
end
if config and config.error_lens then
local color = require 'solarized.color'
local editor = require('solarized.utils').nvim_get_hl 'Normal'
local ok, mix_color = pcall(color.blend, group_val.fg, editor.bg, 0.1)
if ok then
group_val.bg = mix_color
else
group_val.bg = color.tint(group_val.fg, 7)
end
end
val = vim.tbl_extend('force', val, group_val)
vim.api.nvim_set_hl(0, group_name, val)
else
vim.api.nvim_set_hl(0, group_name, group_val)
end
end
---@param colors solarized.palette
---@param config solarized.config
M.set_highlight = function(colors, config)
local color = require 'solarized.color'
if config.on_colors then
colors = vim.tbl_extend('force', colors, config.on_colors(colors, color))
end
local term = {
'base4',
'red',
'green',
'yellow',
'magenta',
'violet',
'cyan',
'base1',
'base1',
'orange',
'green',
'yellow',
'blue',
'red',
'green',
'base1',
}
for index, key in ipairs(term) do
vim.g['terminal_color_' .. index - 1] = colors[key]
end
local solarized_light = require 'solarized.variants.solarized-light'
solarized_light.set_variant {
config = config,
nvim_set_hl = nvim_set_hl,
colors = colors,
color = color,
}
-- EDITOR :h highlight-groups
nvim_set_hl('ColorColumn', { bg = colors.base2 })
nvim_set_hl('Conceal', { fg = colors.blue })
nvim_set_hl('CurSearch', { link = 'IncSearch' })
nvim_set_hl('Cursor', { fg = colors.base3, bg = colors.base00 })
nvim_set_hl('lCursor', { link = 'Cursor' })
nvim_set_hl('CursorIM', { link = 'Cursor' })
nvim_set_hl('CursorColumn', { link = 'ColorColumn' })
nvim_set_hl('CursorLine', { bg = colors.base2 })
nvim_set_hl('Directory', { fg = colors.blue })
nvim_set_hl('DiffAdd', { fg = colors.git_add })
nvim_set_hl('DiffChange', { fg = colors.git_modify })
nvim_set_hl('DiffDelete', { fg = colors.git_delete, reverse = true })
nvim_set_hl('DiffText', { fg = colors.cyan, reverse = true })
nvim_set_hl('EndOfBuffer', { fg = colors.base3 })
nvim_set_hl('TermCursor', { link = 'Cursor' })
nvim_set_hl('TermCursorNC', { fg = colors.base3, bg = colors.base00 })
nvim_set_hl('ErrorMsg', { fg = colors.diag_error })
-- nvim_set_hl(
-- 'WinSeparator',
-- { fg = colors.blue, bg = colors.base4 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('Folded', { fg = colors.base00, bg = colors.base2 })
nvim_set_hl('FoldColumn', { fg = colors.base00, bg = colors.base2 })
-- nvim_set_hl(
-- 'SignColumn',
-- { fg = colors.base00, bg = colors.base2 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl(
'IncSearch',
{ fg = colors.yellow, bg = colors.mix_yellow, bold = true },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('Substitute', { link = 'IncSearch' })
-- nvim_set_hl(
-- 'LineNr',
-- { fg = colors.base1, bg = colors.base2 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('LineNrAbove', { link = 'LineNr' })
nvim_set_hl('LineNrBelow', { link = 'LineNr' })
-- nvim_set_hl(
-- 'CursorLineNr',
-- { fg = colors.base01, bg = colors.base2 },
-- { transparent = config.transparent.enabled }
-- )
nvim_set_hl('CursorLineFold', { link = 'FoldColumn' })
nvim_set_hl('CursorLineSign', { link = 'SignColumn' })
nvim_set_hl('MatchParen', { fg = colors.cyan })
nvim_set_hl('ModeMsg', { fg = colors.blue })
nvim_set_hl('MsgArea', { link = 'Normal' })
nvim_set_hl('MsgSeparator', { link = 'Normal' })
nvim_set_hl('MoreMsg', { link = 'ModeMsg' })
nvim_set_hl('NonText', { fg = colors.base01 })
nvim_set_hl(
'Normal',
{ fg = colors.base00, bg = colors.base3 },
{ transparent = config.transparent.normal and config.transparent.enabled }
)
nvim_set_hl('NormalFloat', { fg = colors.base00, bg = colors.base4 }, {
transparent = config.transparent.normalfloat and config.transparent.enabled,
})
-- nvim_set_hl('FloatBorder', { link = 'WinSeparator' })
-- nvim_set_hl('FloatTitle', { fg = colors.blue })
nvim_set_hl('NormalNC', { link = 'Normal' })
nvim_set_hl('Pmenu', { fg = colors.base00, bg = colors.base4 }, {
transparent = config.transparent.pmenu and config.transparent.enabled,
})
nvim_set_hl('PmenuSel', { fg = colors.blue, reverse = true })
nvim_set_hl('PmenuKind', { link = 'Pmenu' })
nvim_set_hl('PmenuKindSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuExtra', { link = 'Pmenu' })
nvim_set_hl('PmenuExtraSel', { link = 'PmenuSel' })
nvim_set_hl('PmenuSbar', { bg = colors.base2 })
nvim_set_hl('PmenuThumb', { bg = colors.blue })
nvim_set_hl('Question', { fg = colors.diag_info })
nvim_set_hl('QuickFixLine', { fg = colors.base00, bg = colors.base3 })
nvim_set_hl('Search', { fg = colors.green, bg = colors.mix_green })
nvim_set_hl('SpecialKey', { link = 'NonText' })
nvim_set_hl('SpellBad', { underline = true, strikethrough = true })
nvim_set_hl('SpellCap', { fg = colors.diag_hint })
nvim_set_hl('SpellLocal', { link = 'SpellCap' })
nvim_set_hl('SpellRare', { fg = colors.diag_warning })
nvim_set_hl('StatusLine', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('StatusLineNC', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('TabLine', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('TabLineFill', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('TabLineSel', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('Title', { fg = colors.blue })
nvim_set_hl('Visual', { fg = colors.magenta, bg = colors.mix_magenta, bold = true })
nvim_set_hl('VisualNOS', { link = 'Visual' })
nvim_set_hl('warningMsg', { fg = colors.diag_warning })
nvim_set_hl('Whitespace', { fg = colors.base01 })
nvim_set_hl('WildMenu', { fg = colors.base2 })
nvim_set_hl('WinBar', { link = 'Pmenu' })
nvim_set_hl('WinBarNC', { link = 'WinBar' })
-- PLUGINS
if config.plugins.treesitter then
nvim_set_hl('@variable', { link = 'Identifier' })
nvim_set_hl('@variable.builtin', { link = 'Constant' })
nvim_set_hl('@variable.parameter', { link = 'Parameter' })
nvim_set_hl('@variable.member', { link = 'Property' })
nvim_set_hl('@property', { link = 'Property' })
nvim_set_hl('@property.json', { link = 'Keyword' })
nvim_set_hl('@property.yaml', { link = 'Keyword' })
nvim_set_hl('@constant', { link = 'Constant' })
nvim_set_hl('@constant.builtin', { link = 'Constant' })
nvim_set_hl('@constant.macro', { link = 'Constant' })
nvim_set_hl('@constant.html', { link = 'Tag' })
nvim_set_hl('@module', { link = 'Type' })
nvim_set_hl('@module.builtin', { link = 'Constant' })
nvim_set_hl('@label', { link = 'Statement' })
nvim_set_hl('@string', { link = 'String' })
nvim_set_hl('@string.documentation', { link = 'Statement' })
nvim_set_hl('@string.regexp', { fg = colors.magenta })
nvim_set_hl('@string.escape', { link = 'Statement' })
nvim_set_hl('@string.special', { link = 'Special' })
nvim_set_hl('@string.special.symbol', { link = 'Identifier' })
nvim_set_hl('@string.special.url', { link = 'Underlined' })
nvim_set_hl('@character', { link = 'Constant' })
nvim_set_hl('@character.special', { link = 'Constant' })
nvim_set_hl('@character.printf', { link = 'Keyword' })
nvim_set_hl('@type', { link = 'Type' })
nvim_set_hl('@type.builtin', { link = 'Keyword' })
nvim_set_hl('@type.definition', { link = 'Type' })
nvim_set_hl('@type.qualifier', { link = 'Type' })
nvim_set_hl('@attribute', { link = 'Keyword' })
nvim_set_hl('@function', { link = 'Function' })
nvim_set_hl('@function.builtin', { link = 'Function' })
nvim_set_hl('@function.call', { link = 'Function' })
nvim_set_hl('@function.macro', { link = 'Function' })
nvim_set_hl('@function.method', { link = 'Function' })
nvim_set_hl('@function.method.call', { link = 'Function' })
nvim_set_hl('@constructor', { link = 'Type' })
nvim_set_hl('@constructor.lua', { link = 'Delimiter' })
nvim_set_hl('@operator', { link = 'Operator' })
nvim_set_hl('@keyword', { link = 'Keyword' })
nvim_set_hl('@keyword.coroutine', { link = 'Statement' })
nvim_set_hl('@keyword.function', { link = 'Keyword' })
nvim_set_hl('@keyword.operator', { link = 'Statement' })
nvim_set_hl('@keyword.import', { link = 'Include' })
nvim_set_hl('@keyword.repeat', { link = 'Statement' })
nvim_set_hl('@keyword.return', { link = 'Statement' })
nvim_set_hl('@keyword.debug', { link = 'Statement' })
nvim_set_hl('@keyword.exception', { link = 'Statement' })
nvim_set_hl('@keyword.conditional', { link = 'Statement' })
nvim_set_hl('@keyword.conditional.ternary', { link = 'Statement' })
nvim_set_hl('@keyword.directive', { link = 'Statement' })
nvim_set_hl('@keyword.directive.define', { link = 'Statement' })
nvim_set_hl('@punctuation.delimiter', { link = 'Delimiter' })
nvim_set_hl('@punctuation.bracket', { link = 'Delimiter' })
nvim_set_hl('@punctuation.special', { link = 'Keyword' })
nvim_set_hl('@comment', { link = 'Comment' })
nvim_set_hl('@comment.documentation', { link = 'Comment' })
nvim_set_hl('@comment.error', { fg = colors.diag_error })
nvim_set_hl('@comment.warning', { fg = colors.diag_warning })
nvim_set_hl('@comment.todo', { link = 'Todo' })
nvim_set_hl('@comment.note', { fg = colors.diag_hint })
nvim_set_hl('@markup.strong', { fg = colors.magenta, bold = true })
nvim_set_hl('@markup.italic', { fg = colors.magenta, italic = true })
nvim_set_hl('@markup.strikethrough', { fg = colors.base1, strikethrough = true })
nvim_set_hl('@markup.underline', { link = 'Underlined' })
nvim_set_hl('@markup.heading', { fg = colors.red, bold = true })
nvim_set_hl('@markup.heading.1', { fg = colors.red, bold = true })
nvim_set_hl('@markup.heading.2', { fg = colors.magenta })
nvim_set_hl('@markup.heading.3', { fg = colors.yellow })
nvim_set_hl('@markup.heading.4', { fg = colors.orange })
nvim_set_hl('@markup.heading.5', { fg = colors.blue })
nvim_set_hl('@markup.heading.6', { fg = colors.violet })
nvim_set_hl('@markup.quote', { fg = colors.green })
nvim_set_hl('@markup.math', { fg = colors.violet })
nvim_set_hl('@markup.environment', { link = 'Comment' })
nvim_set_hl('@markup.link', { link = 'Underlined' })
nvim_set_hl('@markup.link.label', { link = 'Constant' })
nvim_set_hl('@markup.link.url', { link = 'Underlined' })
nvim_set_hl('@markup.raw', { fg = colors.cyan })
nvim_set_hl('@markup.raw.block', { fg = colors.base00 })
nvim_set_hl('@markup.list', { fg = colors.orange })
nvim_set_hl('@markup.list.checked', { fg = colors.green })
nvim_set_hl('@markup.list.unchecked', { fg = colors.base1 })
nvim_set_hl('@diff.plus', { fg = colors.git_add })
nvim_set_hl('@diff.minus', { fg = colors.git_delete })
nvim_set_hl('@diff.delta', { fg = colors.git_modify })
nvim_set_hl('@tag', { link = 'Tag' })
nvim_set_hl('@tag.attribute', { link = 'TagAttribute' })
nvim_set_hl('@tag.delimiter', { link = 'Delimiter' })
end
local signcolumn = require('solarized.utils').nvim_get_hl 'SignColumn'
if config.plugins.lspconfig then
nvim_set_hl('@lsp.type.class', { link = 'Type' })
nvim_set_hl('@lsp.type.decorator', { link = 'Function' })
nvim_set_hl('@lsp.type.enum', { link = 'Type' })
nvim_set_hl('@lsp.type.enumMember', { link = 'Type' })
nvim_set_hl('@lsp.type.interface', { link = 'Type' })
nvim_set_hl('@lsp.type.macro', { link = '@function.builtin' })
nvim_set_hl('@lsp.type.namespace', { link = 'Type' })
nvim_set_hl('@lsp.type.parameter', { link = 'Parameter' })
nvim_set_hl('@lsp.type.property', { link = 'Property' })
nvim_set_hl('@lsp.type.struct', { link = 'Type' })
nvim_set_hl('@lsp.type.type', { link = 'Type' })
nvim_set_hl('@lsp.type.typeParameter', { link = 'Type' })
nvim_set_hl('@lsp.type.variable', { link = 'Identifier' })
nvim_set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.variable.global', { link = 'Constant' })
nvim_set_hl('@lsp.typemod.keyword.documentation', { link = 'Statement' })
nvim_set_hl('@lsp.typemod.class.documentation', { link = 'Type' })
nvim_set_hl('@lsp.typemod.property.readonly', { link = 'Constant' })
nvim_set_hl('DiagnosticError', { fg = colors.diag_error })
nvim_set_hl('DiagnosticWarn', { fg = colors.diag_warning })
nvim_set_hl('DiagnosticInfo', { fg = colors.diag_info })
nvim_set_hl('DiagnosticHint', { fg = colors.diag_hint })
nvim_set_hl('DiagnosticOk', { fg = colors.diag_ok })
nvim_set_hl(
'DiagnosticVirtualTextError',
{ fg = colors.diag_error },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextWarn',
{ fg = colors.diag_warning },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextInfo',
{ fg = colors.diag_hint },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextHint',
{ fg = colors.diag_info },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticVirtualTextOk',
{ fg = colors.diag_ok },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'DiagnosticUnderlineError',
{ fg = colors.diag_error, underline = true, sp = colors.diag_error }
)
nvim_set_hl(
'DiagnosticUnderlineWarn',
{ fg = colors.diag_warning, underline = true, sp = colors.diag_warning }
)
nvim_set_hl(
'DiagnosticUnderlineInfo',
{ fg = colors.diag_info, underline = true, sp = colors.diag_info }
)
nvim_set_hl(
'DiagnosticUnderlineHint',
{ fg = colors.diag_hint, underline = true, sp = colors.diag_hint }
)
nvim_set_hl(
'DiagnosticUnderlineOk',
{ fg = colors.diag_ok, underline = true, sp = colors.diag_ok }
)
nvim_set_hl(
'DiagnosticSignError',
{ fg = colors.diag_error, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Error" signs in sign column.
nvim_set_hl(
'DiagnosticSignWarn',
{ fg = colors.diag_warning, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Warn" signs in sign column.
nvim_set_hl(
'DiagnosticSignInfo',
{ fg = colors.diag_info, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Info" signs in sign column.
nvim_set_hl(
'DiagnosticSignHint',
{ fg = colors.diag_hint, bg = signcolumn.bg },
{ transparent = config.transparent.enabled, error_lens = config.error_lens.symbol }
) -- Used for "Hint" signs in sign column.
nvim_set_hl(
'DiagnosticSignOk',
{ fg = colors.diag_ok, bg = signcolumn.bg },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('LspReferenceText', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('LspReferenceRead', { link = 'Visual' })
nvim_set_hl('LspReferenceWrite', { link = 'Visual' })
nvim_set_hl('LspInlayHint', { fg = colors.base1 })
end
if config.plugins.navic then
nvim_set_hl('NavicText', { fg = colors.base00 })
nvim_set_hl('NavicSeparator', { link = 'Keyword' })
nvim_set_hl('NavicIconsMethod', { link = 'Function' })
nvim_set_hl('NavicIconsFunction', { link = 'Function' })
nvim_set_hl('NavicIconsField', { link = 'Identifier' })
nvim_set_hl('NavicIconsVariable', { link = 'Identifier' })
nvim_set_hl('NavicIconsClass', { link = 'Type' })
nvim_set_hl('NavicIconsInterface', { link = 'Type' })
nvim_set_hl('NavicIconsModule', { link = 'Type' })
nvim_set_hl('NavicIconsNamespace', { link = 'Type' })
nvim_set_hl('NavicIconsProperty', { link = 'Identifier' })
nvim_set_hl('NavicIconsUnit', { link = 'Number' })
nvim_set_hl('NavicIconsEnum', { link = 'Type' })
nvim_set_hl('NavicIconsKeyword', { link = 'Keyword' })
nvim_set_hl('NavicIconsSnippet', { link = 'Tag' })
nvim_set_hl('NavicIconsColor', { fg = colors.orange })
nvim_set_hl('NavicIconsFile', { link = 'Identifier' })
nvim_set_hl('NavicIconsReference', { link = 'Underlined' })
nvim_set_hl('NavicIconsFolder', { link = 'Directory' })
nvim_set_hl('NavicIconsEnumMember', { link = 'Constant' })
nvim_set_hl('NavicIconsConstant', { link = 'Constant' })
nvim_set_hl('NavicIconsStruct', { link = 'Identifier' })
nvim_set_hl('NavicIconsEvent', { link = 'Function' })
nvim_set_hl('NavicIconsOperator', { link = 'Operator' })
nvim_set_hl('NavicIconsTypeParameter', { link = 'Type' })
end
if config.plugins.cmp then
nvim_set_hl('CmpItemKindText', { link = 'String' })
nvim_set_hl('CmpItemKindMethod', { link = 'Function' })
nvim_set_hl('CmpItemKindFunction', { link = 'Function' })
nvim_set_hl('CmpItemKindField', { link = 'Identifier' })
nvim_set_hl('CmpItemKindVariable', { link = 'Identifier' })
nvim_set_hl('CmpItemKindClass', { link = 'Type' })
nvim_set_hl('CmpItemKindInterface', { link = 'Type' })
nvim_set_hl('CmpItemKindModule', { link = 'Type' })
nvim_set_hl('CmpItemKindProperty', { link = 'Identifier' })
nvim_set_hl('CmpItemKindUnit', { link = 'Number' })
nvim_set_hl('CmpItemKindEnum', { link = 'Type' })
nvim_set_hl('CmpItemKindKeyword', { link = 'Keyword' })
nvim_set_hl('CmpItemKindSnippet', { link = 'Tag' })
nvim_set_hl('CmpItemKindColor', { fg = colors.orange })
nvim_set_hl('CmpItemKindFile', { link = 'Identifier' })
nvim_set_hl('CmpItemKindReference', { link = 'Underlined' })
nvim_set_hl('CmpItemKindFolder', { link = 'Directory' })
nvim_set_hl('CmpItemKindEnumMember', { link = 'Constant' })
nvim_set_hl('CmpItemKindConstant', { link = 'Constant' })
nvim_set_hl('CmpItemKindStruct', { link = 'Identifier' })
nvim_set_hl('CmpItemKindEvent', { link = 'Function' })
nvim_set_hl('CmpItemKindOperator', { link = 'Operator' })
nvim_set_hl('CmpItemKindTypeParameter', { link = 'Type' })
end
if config.plugins.indentblankline then
nvim_set_hl('IblIndent', { fg = colors.mix_base01 })
nvim_set_hl('IblScope', { fg = colors.base1 })
end
if config.plugins.indentmini then
nvim_set_hl('IndentLine', { fg = colors.mix_base01 })
nvim_set_hl('IndentLineCurrent', { fg = colors.base1 })
end
if config.plugins.neotree then
nvim_set_hl('NeoTreeTitleBar', { fg = colors.blue, reverse = true })
nvim_set_hl(
'NeoTreeNormal',
{ fg = colors.base01, bg = colors.base4 },
{ transparent = config.transparent.neotree and config.transparent.enabled }
)
nvim_set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
nvim_set_hl('NeoTreeDotFile', { fg = colors.base1 })
nvim_set_hl('NeoTreeGitIgnored', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileStats', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeDimText', { link = 'NeoTreeDotFile' })
nvim_set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
nvim_set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
nvim_set_hl('NeoTreeFloatTitle', { link = 'Title' })
nvim_set_hl('NeoTreeGitAdded', { fg = colors.git_add })
nvim_set_hl('NeoTreeGitConflict', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl('NeoTreeGitModified', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUnstaged', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitUntracked', { fg = colors.git_modify })
nvim_set_hl('NeoTreeGitStaged', { fg = colors.git_add })
end
if config.plugins.nvimtree then
nvim_set_hl('NvimTreeSymlink', { link = 'Underlined' })
nvim_set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeFolderName', { fg = colors.base01 })
nvim_set_hl('NvimTreeRootFolder', { link = 'Title' })
nvim_set_hl('NvimTreeFolderIcon', { link = 'Directory' })
nvim_set_hl('NvimTreeEmptyFolderName', { fg = colors.base01 })
nvim_set_hl('NvimTreeExecFile', { link = 'Function' })
nvim_set_hl('NvimTreeOpenedFile', { fg = colors.blue, bold = true })
nvim_set_hl('NvimTreeModifiedFile', { fg = colors.git_modify })
nvim_set_hl('NvimTreeSpecialFile', { link = 'Special' })
nvim_set_hl('NvimTreeIndentMarker', { fg = colors.shade_violet })
nvim_set_hl('NvimTreeGitDirty', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitStaged', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitMerge', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitRenamed', { fg = colors.git_modify })
nvim_set_hl('NvimTreeGitNew', { fg = colors.git_add })
nvim_set_hl('NvimTreeGitDeleted', { fg = colors.git_delete })
nvim_set_hl(
'NvimTreeNormal',
{ fg = colors.base01, bg = colors.base4 },
{ transparent = config.transparent.nvimtree and config.transparent.enabled }
)
nvim_set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
nvim_set_hl('NvimTreeEndOfBuffer', { fg = colors.base4 })
nvim_set_hl('NvimTreeWinSeparator', { link = 'WinSeparator' })
end
if config.plugins.whichkey then
nvim_set_hl(
'WhichKeyNormal',
{ fg = colors.base01, bg = colors.base4 },
{ transparent = config.transparent.whichkey and config.transparent.enabled }
)
nvim_set_hl('WhichKey', { link = 'Property' })
nvim_set_hl('WhichKeyDesc', { link = 'String' })
nvim_set_hl('WhichKeySeparator', { link = 'Keyword' })
nvim_set_hl('WhichKeyGroup', { link = 'Constant' })
end
if config.plugins.dashboard then
nvim_set_hl('DashboardHeader', { fg = colors.magenta })
nvim_set_hl('DashboardFooter', { fg = colors.violet })
nvim_set_hl('DashboardDesc', { link = 'Directory' })
nvim_set_hl('DashboardKey', { link = 'Keyword' })
nvim_set_hl('DashboardIcon', { link = 'Directory' })
nvim_set_hl('DashboardShotCut', { fg = colors.base00 })
end
if config.plugins.gitsigns then
nvim_set_hl(
'GitSignsAdd',
{ fg = colors.git_add, bg = signcolumn.bg },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('GitSignsChange', { fg = colors.git_modify, bg = signcolumn.bg }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('GitSignsDelete', { fg = colors.git_delete, bg = signcolumn.bg }, {
transparent = config.transparent.enabled,
})
end
if config.plugins.telescope then
nvim_set_hl('TelescopeSelection', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('TelescopeSelectionCaret', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('TelescopeMultiIcon', { fg = colors.blue })
nvim_set_hl(
'TelescopeNormal',
{ fg = colors.base0, bg = colors.base4 },
{ transparent = config.transparent.telescope and config.transparent.enabled }
)
nvim_set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
nvim_set_hl('TelescopeBorder', { link = 'FloatBorder' })
nvim_set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
nvim_set_hl('TelescopeTitle', { link = 'FloatTitle' })
nvim_set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
nvim_set_hl('TelescopeMatching', { link = 'IncSearch' })
nvim_set_hl('TelescopePreviewMatch', { link = 'TelescopeMatching' })
nvim_set_hl('TelescopePromptCounter', { link = 'NonText' })
nvim_set_hl('TelescopePromptPrefix', { fg = colors.orange })
end
if config.plugins.noice then
nvim_set_hl('NoiceFormatProgressTodo', { fg = colors.diag_ok, bg = colors.mix_green })
nvim_set_hl('NoiceFormatProgressDone', { fg = colors.diag_ok, reverse = true })
nvim_set_hl('NoiceLspProgressSpinner', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressClient', { fg = colors.diag_ok })
nvim_set_hl('NoiceLspProgressTitle', { link = 'Title' })
nvim_set_hl('NoiceCmdlineIcon', { link = 'WinSeparator' })
nvim_set_hl('NoiceCmdlinePopupBorder', { link = 'WinSeparator' })
nvim_set_hl('NoiceCmdlinePopupTitle', { link = 'Title' })
end
if config.plugins.hop then
nvim_set_hl('HopNextKey', { fg = colors.magenta })
nvim_set_hl('HopNextKey1', { fg = colors.blue })
nvim_set_hl('HopUnmatched', { fg = colors.base1 })
end
if config.plugins.ministatusline then
nvim_set_hl('MiniStatuslineModeNormal', { fg = colors.base3, bg = colors.blue })
nvim_set_hl('MiniStatuslineModeInsert', { fg = colors.base3, bg = colors.green })
nvim_set_hl('MiniStatuslineModeVisual', { fg = colors.base3, bg = colors.magenta })
nvim_set_hl('MiniStatuslineModeReplace', { fg = colors.base3, bg = colors.red })
nvim_set_hl('MiniStatuslineModeCommand', { fg = colors.base3, bg = colors.orange })
nvim_set_hl('MinistatusLineFileName', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineDevinfo', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineFileinfo', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniStatuslineInactive', { fg = colors.base1, bg = colors.base3 })
end
if config.plugins.minitabline then
nvim_set_hl('MiniTablineCurrent', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('MiniTablineVisible', { fg = colors.base0, bg = colors.base3 })
nvim_set_hl('MiniTablineHidden', { fg = colors.base1, bg = colors.base3 })
nvim_set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
nvim_set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
nvim_set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
nvim_set_hl('MiniTablineFill', { fg = colors.base0, bg = colors.base2 })
nvim_set_hl('MiniTablineTabpagesection', { fg = colors.base00, bg = colors.base2 })
end
if config.plugins.ministarter then
nvim_set_hl('MiniStarterCurrent', { link = 'CursorLine' })
nvim_set_hl('MiniStarterHeader', { fg = colors.base1 })
nvim_set_hl('MiniStarterFooter', { fg = colors.violet })
nvim_set_hl('MiniStarterItem', { fg = colors.base00 })
nvim_set_hl('MiniStarterItemBullet', { fg = colors.blue })
nvim_set_hl('MiniStarterItemPrefix', { fg = colors.blue })
nvim_set_hl('MiniStarterSection', { link = 'Title' })
nvim_set_hl('MiniStarterQuery', { fg = colors.blue, bold = true })
end
if config.plugins.minicursorword then
nvim_set_hl('MiniCursorword', { link = 'Visual' })
end
if config.plugins.notify then
nvim_set_hl('NotifyBackground', { bg = colors.base3 })
nvim_set_hl('NotifyERRORBorder', { link = 'NotifyERRORBody' })
nvim_set_hl('NotifyWARNBorder', { link = 'NotifyWARNBody' })
nvim_set_hl('NotifyINFOBorder', { link = 'NotifyINFOBody' })
nvim_set_hl('NotifyDEBUGBorder', { link = 'NotifyDEBUGBody' })
nvim_set_hl('NotifyTRACEBorder', { link = 'NotifyTRACEBody' })
nvim_set_hl('NotifyERRORIcon', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNIcon', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOIcon', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGIcon', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEIcon', { fg = colors.blue })
nvim_set_hl('NotifyERRORTitle', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNTitle', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOTitle', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGTitle', { fg = colors.magenta })
nvim_set_hl('NotifyTRACETitle', { fg = colors.blue })
nvim_set_hl('NotifyERRORBody', { fg = colors.diag_error })
nvim_set_hl('NotifyWARNBody', { fg = colors.diag_warning })
nvim_set_hl('NotifyINFOBody', { fg = colors.diag_info })
nvim_set_hl('NotifyDEBUGBody', { fg = colors.magenta })
nvim_set_hl('NotifyTRACEBody', { fg = colors.blue })
end
if config.plugins.rainbowdelimiters then
nvim_set_hl('RainbowDelimiterRed', { fg = colors.red })
nvim_set_hl('RainbowDelimiteYellow', { fg = colors.yellow })
nvim_set_hl('RainbowDelimiterBlue', { fg = colors.blue })
nvim_set_hl('RainbowDelimiterOrange', { fg = colors.orange })
nvim_set_hl('RainbowDelimiterGreen', { fg = colors.green })
nvim_set_hl('RainbowDelimiterViolet', { fg = colors.violet })
nvim_set_hl('RainbowDelimiterCyan', { fg = colors.cyan })
end
if config.plugins.bufferline and config.transparent.enabled then
local background = color.shade(colors.base2, 2)
nvim_set_hl('BufferLineFill', { bg = background })
nvim_set_hl('BufferLineBufferSelected', { fg = colors.base01, bold = true })
nvim_set_hl('BufferLineSeparator', { fg = background })
nvim_set_hl('BufferLineSeparatorSelected', { fg = background })
nvim_set_hl('BufferLineSeparatorVisible', { fg = background })
end
if config.plugins.lazy then
nvim_set_hl('LazyNormal', { fg = colors.base0, bg = colors.base4 }, {
transparent = config.transparent.lazy and config.transparent.enabled,
})
nvim_set_hl('LazyH1', { fg = colors.blue, bold = true })
nvim_set_hl('LazyButton', { fg = colors.green, bg = colors.mix_green })
nvim_set_hl('LazyButtonActive', { fg = colors.yellow, bg = colors.mix_yellow })
nvim_set_hl('LazyReasonStart', { fg = colors.yellow })
nvim_set_hl('LazyReasonEvent', { fg = colors.red })
end
if config.plugins.rendermarkdown then
nvim_set_hl('RenderMarkdownH1Bg', { fg = colors.red, bg = colors.mix_red })
nvim_set_hl('RenderMarkdownH2Bg', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('RenderMarkdownH3Bg', { fg = colors.yellow, bg = colors.mix_yellow })
nvim_set_hl('RenderMarkdownH4Bg', { fg = colors.orange, bg = colors.mix_orange })
nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('RenderMarkdownH5Bg', { fg = colors.blue, bg = colors.mix_blue })
end
if config.plugins.neogit then
nvim_set_hl('NeogitBranch', { fg = colors.magenta })
nvim_set_hl('NeogitRemote', { fg = colors.violet })
nvim_set_hl('NeogitHunkHeader', { fg = colors.red, bg = colors.mix_red, bold = true })
nvim_set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
nvim_set_hl('NeogitDiffContextHighlight', { fg = colors.base01, bg = colors.base2 })
nvim_set_hl('NeogitDiffContext', { fg = colors.base00, bg = colors.base3 })
nvim_set_hl('NeogitDiffDeleteHighlight', { fg = colors.red, bg = colors.mix_red })
nvim_set_hl('NeogitDiffDelete', { fg = colors.red })
nvim_set_hl('NeogitDiffAddHighlight', { fg = colors.green, bg = colors.mix_green })
nvim_set_hl('NeogitDiffAdd', { fg = colors.green })
end
if config.plugins.todocomments then
nvim_set_hl('TodoFgTODO', { fg = colors.blue })
nvim_set_hl('TodoFgWARN', { fg = colors.yellow })
nvim_set_hl('TodoFgTEST', { fg = colors.violet })
nvim_set_hl('TodoFgPERF', { fg = colors.magenta })
nvim_set_hl('TodoFgNOTE', { fg = colors.cyan })
nvim_set_hl('TodoFgHACK', { fg = colors.orange })
nvim_set_hl('TodoFgFIX', { fg = colors.red })
nvim_set_hl('TodoSignTODO', { fg = colors.blue })
nvim_set_hl('TodoSignWARN', { fg = colors.yellow })
nvim_set_hl('TodoSignTEST', { fg = colors.violet })
nvim_set_hl('TodoSignPERF', { fg = colors.magenta })
nvim_set_hl('TodoSignNOTE', { fg = colors.cyan })
nvim_set_hl('TodoSignHACK', { fg = colors.orange })
nvim_set_hl('TodoSignFIX', { fg = colors.red })
nvim_set_hl('TodoBgTODO', { fg = colors.blue, bg = colors.mix_blue })
nvim_set_hl('TodoBgWARN', { fg = colors.yellow, bg = colors.mix_yellow })
nvim_set_hl('TodoBgTEST', { fg = colors.violet, bg = colors.mix_violet })
nvim_set_hl('TodoBgPERF', { fg = colors.magenta, bg = colors.mix_magenta })
nvim_set_hl('TodoBgNOTE', { fg = colors.cyan, bg = colors.mix_cyan })
nvim_set_hl('TodoBgHACK', { fg = colors.orange, bg = colors.mix_orange })
nvim_set_hl('TodoBgFIX', { fg = colors.red, bg = colors.mix_red })
end
if config.plugins.ale then
nvim_set_hl('ALEErrorSign', { fg = colors.diag_error })
nvim_set_hl('ALEWarningSign', { fg = colors.diag_warning })
end
if config.plugins.alpha then
nvim_set_hl('AlphaShortcut', { fg = colors.base00 })
nvim_set_hl('AlphaHeader', { fg = colors.magenta })
nvim_set_hl('AlphaHeaderLabel', { fg = colors.red })
nvim_set_hl('AlphaFooter', { fg = colors.violet })
nvim_set_hl('AlphaButtons', { link = 'Directory' })
end
if config.plugins.yanky then
nvim_set_hl('YankyPut', { link = 'Search' })
nvim_set_hl('YankyYanked', { link = 'IncSearch' })
end
if config.plugins.gitgutter then
nvim_set_hl('GitGutterAdd', { fg = colors.git_add })
nvim_set_hl('GitGutterChange', { fg = colors.git_modify })
nvim_set_hl('GitGutterDelete', { fg = colors.git_delete })
nvim_set_hl('GitGutterAddLineNr', { fg = colors.git_add })
nvim_set_hl('GitGutterChangeLineNr', { fg = colors.git_modify })
nvim_set_hl('GitGutterDeleteLineNr', { fg = colors.git_delete })
end
if config.plugins.coc then
nvim_set_hl(
'CocErrorSign',
{ fg = colors.diag_error, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocWarningSign',
{ fg = colors.diag_warning, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocInfoSign',
{ fg = colors.diag_info, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocHintSign',
{ fg = colors.diag_hint, bg = signcolumn.bg },
{ error_lens = config.error_lens.symbol }
)
nvim_set_hl(
'CocErrorVirtualText',
{ fg = colors.diag_error },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocWarningVirtualText',
{ fg = colors.diag_warning },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocInfoVirtualText',
{ fg = colors.diag_info },
{ error_lens = config.error_lens.text }
)
nvim_set_hl(
'CocHintVirtualText',
{ fg = colors.diag_hint },
{ error_lens = config.error_lens.text }
)
end
if config.plugins.leap then
nvim_set_hl('LeapMatch', { fg = colors.magenta, bg = colors.mix_magenta, bold = true })
nvim_set_hl('LeapLabel', { fg = colors.magenta, bold = true })
nvim_set_hl('LeapBackDrop', { fg = colors.base01 })
end
if config.plugins.mason then
nvim_set_hl('MasonHeader', { link = 'FloatTitle' })
nvim_set_hl(
'MasonNormal',
{ fg = colors.base00, bg = colors.base4 },
{ transparent = config.transparent.mason and config.transparent.enabled }
)
nvim_set_hl('MasonHighlight', { fg = colors.blue })
nvim_set_hl('MasonHighlightBlock', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl('MasonHighlightBlockBold', { fg = colors.mix_blue, bg = colors.blue, bold = true })
end
if config.plugins.flash then
nvim_set_hl('FlashMatch', { fg = colors.base01 })
nvim_set_hl('FlashLabel', { fg = colors.yellow })
nvim_set_hl('FlashCurrent', { fg = colors.magenta })
end
if config.on_highlights then
local highlights = config.on_highlights(colors, color)
for group_name, group_val in pairs(highlights) do
local hl = nvim_get_hl { name = group_name, link = true }
local val = {}
if hl.link then
val = group_val
else
val = vim.tbl_extend('force', hl, group_val)
end
vim.api.nvim_set_hl(0, group_name, val)
end
end
end
return M

View file

@ -1,7 +1,53 @@
local config = require('solarized.config')
---@class solarized
---@field config? solarized.config
---@field setup? fun(config: solarized.config)
---@field load? fun()
---@type solarized
local M = {}
M.setup = config.setup
M.config = require 'solarized.config'
M.setup = function(config)
M.config = vim.tbl_deep_extend('force', M.config, config or {})
if M.config.styles.enabled == false then
M.config.styles = {
types = { italic = false, bold = false },
functions = { italic = false, bold = false },
parameters = { italic = false, bold = false },
comments = { italic = false, bold = false },
strings = { italic = false, bold = false },
keywords = { italic = false, bold = false },
variables = { italic = false, bold = false },
constants = { italic = false, bold = false },
}
end
end
M.load = function()
if vim.g.colors_name then
vim.cmd 'hi clear'
end
if vim.fn.exists 'syntax_on' then
vim.cmd 'syntax reset'
end
vim.g.colors_name = 'solarized'
local highlights = {}
local colors = {}
if vim.o.background == 'dark' then
highlights = require 'solarized.highlights'
local palette = require 'solarized.palette'
colors = palette[M.config.palette]
else
highlights = require 'solarized.highlights.solarized-light'
local palette = require 'solarized.palette.solarized-light'
colors = palette[M.config.palette]
end
highlights.set_highlight(colors, M.config)
end
return M

View file

@ -1,160 +0,0 @@
local M = {}
--- Get the solarized colors based on the current Vim background setting
---
--- @return table colors A table containing the solarized colors
function M.get_colors()
local config = require('solarized.config')
local colors = {
solarized = {
dark = {
base03 = '#002b36', -- background tone dark (main)
base02 = '#073642', -- background tone (highlight/menu/LineNr)
base01 = '#586e75', -- content tone (comment)
base00 = '#657b83', -- content tone (winseparator)
base0 = '#839496', -- content tone (foreground)
base1 = '#93a1a1', -- content tone (statusline/tabline)
base2 = '#eee8d5', -- background tone light (highlight)
base3 = '#fdf6e3', -- background tone lighter (main)
-- accent
yellow = '#b58900',
orange = '#cb4b16',
red = '#dc322f',
magenta = '#d33682',
violet = '#6c71c4',
blue = '#268bd2',
cyan = '#2aa198',
green = '#859900',
-- git
add = '#859900',
change = '#b58900',
delete = '#dc322f',
-- diagnostic
info = '#268bd2',
hint = '#859900',
warning = '#b58900',
error = '#dc322f',
},
light = {
base3 = '#002b36', -- background tone darker (main)
base2 = '#073642', -- background tone dark (highlight)
base1 = '#586e75', -- content tone (statusline/tabline)
base0 = '#657b83', -- content tone (foreground)
base00 = '#839496', -- content tone (winseparator)
base01 = '#93a1a1', -- content tone (comment)
base02 = '#eee8d5', -- background tone (highlight/menu/LineNr)
base03 = '#fdf6e3', -- background tone lighter (main)
-- accent
yellow = '#b58900',
orange = '#cb4b16',
red = '#dc322f',
magenta = '#d33682',
violet = '#6c71c4',
blue = '#268bd2',
cyan = '#2aa198',
green = '#859900',
-- git
add = '#859900',
change = '#b58900',
delete = '#dc322f',
-- diagnostic
info = '#268bd2',
hint = '#859900',
warning = '#b58900',
error = '#dc322f',
},
},
selenized = {
dark = {
base03 = '#103c48', -- background tone dark (main)
base02 = '#184956', -- background tone (highlight/menu/LineNr)
base01 = '#72898f', -- content tone (comment)
base00 = '#72898f', -- content tone (winseparator)
base0 = '#adbcbc', -- content tone (foreground)
base1 = '#cad8d9', -- content tone (statusline/tabline)
base2 = '#ece3cc', -- background tone light (highlight)
base3 = '#fbf3db', -- background tone lighter (main)
-- accent
yellow = '#dbb32d',
orange = '#ed8649',
red = '#fa5750',
magenta = '#f275be',
violet = '#af88eb',
blue = '#4695f7',
cyan = '#41c7b9',
green = '#75b938',
-- git
add = '#75b938',
change = '#dbb32d',
delete = '#fa5750',
-- diagnostic
info = '#4695f7',
hint = '#75b938',
warning = '#dbb32d',
error = '#fa5750',
},
light = {
base3 = '#103c48', -- background tone darker (main)
base2 = '#2d5b69', -- background tone dark (highlight)
base1 = '#3a4d53', -- content tone (statusline/tabline)
base0 = '#53676d', -- content tone (foreground)
base00 = '#909995', -- content tone (winseparator)
base01 = '#909995', -- content tone (comment)
base02 = '#ece3cc', -- background tone (highlight/menu/LineNr)
base03 = '#fbf3db', -- background tone lighter (main)
-- accent
yellow = '#ad8900',
orange = '#c25d1e',
red = '#d2212d',
magenta = '#ca4898',
violet = '#8762c6',
blue = '#0072d4',
cyan = '#009c8f',
green = '#489100',
-- git
add = '#489100',
change = '#ad8900',
delete = '#d2212d',
-- diagnostic
info = '#0072d4',
hint = '#489100',
warning = '#ad8900',
error = '#d2212d',
},
},
}
return colors[((config.config or {}).palette or 'solarized')][vim.o.background]
end
--- Filter colors by selecting valid hexadecimal color values.
---
--- @param colors table A table containing color values to be filtered.
--- @return table Filtered colors table, containing only valid hexadecimal color values.
local function filter_colors(colors)
local filtered_colors = {}
for color_name, color_value in pairs(colors) do
if string.match(color_value, '#%x%x%x%x%x%x$') then
filtered_colors[color_name] = color_value
elseif string.match(color_value, '#%x%x%x$') then
color_value = string.sub(color_value, 2, #color_value)
filtered_colors[color_name] = '#' .. string.rep(color_value, 2)
end
end
return filtered_colors
end
--- Merge custom colors with solarized default colors
---
--- @param colors table A table containing new color values to be added.
--- @param custom_colors table
function M.extend_colors(colors, custom_colors)
local c = vim.deepcopy(colors)
custom_colors = filter_colors(custom_colors)
return vim.tbl_extend('force', c, custom_colors)
end
return M

View file

@ -0,0 +1,121 @@
---@class solarized.palette
---@field base0? string
---@field base00? string
---@field base01? string
---@field base02? string
---@field base03? string
---@field base04? string
---@field base1? string
---@field base2? string
---@field base3? string
---@field base4? string
---@field blue? string
---@field cyan? string
---@field diag_error? string
---@field diag_hint? string
---@field diag_info? string
---@field diag_ok? string
---@field diag_warning? string
---@field git_add? string
---@field git_delete? string
---@field git_modify? string
---@field green? string
---@field magenta? string
---@field mix_blue? string
---@field mix_cyan? string
---@field mix_green? string
---@field mix_magenta? string
---@field mix_orange? string
---@field mix_red? string
---@field mix_violet? string
---@field mix_yellow? string
---@field mix_base1? string
---@field mix_base01? string
---@field orange? string
---@field red? string
---@field violet? string
---@field yellow? string
local M = {}
---@type solarized.palette
M.solarized = {
base0 = '#839496',
base00 = '#657B83',
base01 = '#586E75',
base02 = '#073642',
base03 = '#002B36',
base04 = '#002731',
base1 = '#93A1A1',
base2 = '#eee8d5',
base3 = '#fdf6e3',
base4 = '#fbf3db',
blue = '#268BD2',
cyan = '#2AA198',
diag_error = '#DC322F',
diag_hint = '#268BD2',
diag_info = '#268BD2',
diag_ok = '#859900',
diag_warning = '#B58900',
git_add = '#268BD2',
git_delete = '#DC322F',
git_modify = '#B58900',
green = '#859900',
magenta = '#D33682',
mix_blue = '#0B4764',
mix_cyan = '#0C4E53',
mix_green = '#274C25',
mix_magenta = '#3F2E4C',
mix_orange = '#3C342C',
mix_red = '#422D33',
mix_violet = '#204060',
mix_yellow = '#364725',
mix_base1 = '#2C4E56',
mix_base01 = '#CCCDC2',
orange = '#CB4B16',
red = '#DC322F',
violet = '#6C71C4',
yellow = '#B58900',
}
---@type solarized.palette
M.selenized = {
base04 = '#0e3641',
base03 = '#103c48',
base02 = '#184956',
base01 = '#72898f',
base00 = '#53676d',
base0 = '#adbcbc',
base1 = '#cad8d9',
base2 = '#ece3cc',
base3 = '#fbf3db',
base4 = '#ece3cc',
yellow = '#dbb32d',
orange = '#ed8649',
red = '#fa5750',
magenta = '#f275be',
violet = '#af88eb',
blue = '#4695f7',
cyan = '#41c7b9',
green = '#75b938',
mix_yellow = '#4c5f3f',
mix_orange = '#525248',
mix_red = '#56444a',
mix_magenta = '#534d6b',
mix_violet = '#3f5278',
mix_blue = '#20567c',
mix_cyan = '#1e6569',
mix_green = '#2e6143',
mix_base1 = '#486B74',
mix_base01 = '#CACBBC',
diag_error = '#fa5750',
diag_hint = '#75b938',
diag_info = '#75b938',
diag_ok = '#75b938',
diag_warning = '#dbb32d',
git_add = '#4695f7',
git_delete = '#fa5750',
git_modify = '#dbb32d',
}
return M

View file

@ -0,0 +1,83 @@
local M = {}
---@type solarized.palette
M.solarized = {
base04 = '#002731',
base03 = '#002b36',
base02 = '#073642',
base01 = '#586E75',
base00 = '#657B83',
base0 = '#839496',
base1 = '#93A1A1',
base2 = '#EEE8D5',
base3 = '#FDF6E3',
base4 = '#fbf3db',
blue = '#268BD2',
cyan = '#2AA198',
orange = '#CB4B16',
red = '#DC322F',
violet = '#6C71C4',
yellow = '#B58900',
green = '#859900',
magenta = '#D33682',
diag_error = '#DC322F',
diag_hint = '#268BD2',
diag_info = '#268BD2',
diag_ok = '#859900',
diag_warning = '#B58900',
git_add = '#859900',
git_delete = '#DC322F',
git_modify = '#B58900',
mix_blue = '#e7ebe1',
mix_cyan = '#e7eddb',
mix_green = '#f1eccc',
mix_magenta = '#f8e2d9',
mix_orange = '#f8e4ce',
mix_base1 = '#2C4E56',
mix_base01 = '#CCCDC2',
mix_red = '#f9e2d1',
mix_violet = '#eee8df',
mix_yellow = '#f5ebcc',
}
---@type solarized.palette
M.selenized = {
base04 = '#0e3641',
base03 = '#103c48',
base02 = '#184956',
base01 = '#3a4d53',
base00 = '#53676d',
base0 = '#53676d',
base1 = '#909995',
base2 = '#ece3cc',
base3 = '#fbf3db',
base4 = '#ece3cc',
yellow = '#ad8900',
orange = '#c25d1e',
red = '#d2212d',
magenta = '#ca4898',
violet = '#8762c6',
blue = '#0072d4',
cyan = '#009c8f',
green = '#489100',
diag_error = '#d2212d',
diag_hint = '#0072d4',
diag_info = '#0072d4',
diag_ok = '#489100',
diag_warning = '#ad8900',
git_add = '#489100',
git_delete = '#DC322F',
git_modify = '#ad8900',
mix_yellow = '#f3e8c5',
mix_orange = '#f5e4c8',
mix_red = '#f6dec9',
mix_magenta = '#f6e1d4',
mix_violet = '#efe4d8',
mix_blue = '#e1e6da',
mix_cyan = '#e1ead3',
mix_green = '#e9e9c5',
mix_base1 = '#486B74',
mix_base01 = '#CACBBC',
}
return M

View file

@ -1,16 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- When `termguicolors` is enabled, this plugin is designed to work automatically,
-- deriving colours from the user's theme.
--
-- My attempt to fix bufferline on transparent background
if config.transparent then
set_hl('BufferLineFill', { bg = c.base02 })
set_hl('BufferLineBufferSelected', { fg = c.base2, italic = true })
set_hl('BufferLineSeparator', { fg = c.base02 })
set_hl('BufferLineSeparatorSelected', { fg = c.base02 })
set_hl('BufferLineSeparatorVisible', { fg = c.base02 })
end
end

View file

@ -1,36 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- set_hl('CmpItemAbbr') -- Highlight group for unmatched characters of each completion field.
set_hl('CmpItemAbbrDeprecated', { fg = c.base1, strikethrough = true }) -- Highlight group for unmatched characters of each deprecated completion field.
set_hl('CmpItemAbbrMatch', { fg = c.yellow }) -- Highlight group for matched characters of each completion field.
set_hl('CmpItemAbbrMatchFuzzy', { fg = c.yellow }) -- Highlight group for fuzzy-matched characters of each completion field.
-- set_hl('CmpItemKind') -- Highlight group for the kind of the field.
-- set_hl('CmpItemMenu') -- The menu field's highlight group.
set_hl('CmpItemKindReference', { link = 'Underlined' })
set_hl('CmpItemKindUnit', { link = 'Number' })
set_hl('CmpItemKindEnum', { link = 'Type' })
set_hl('CmpItemKindField', { link = '@field' })
set_hl('CmpItemKindClass', { link = 'Type' })
set_hl('CmpItemKindFile', { fg = c.base0 })
set_hl('CmpItemKindProperty', { link = '@field' })
set_hl('CmpItemKindMethod', { link = 'Function' })
set_hl('CmpItemKindKeyword', { link = 'Keyword' })
set_hl('CmpItemKindFolder', { link = 'Directory' })
set_hl('CmpItemKindSnippet', { link = 'Keyword' })
set_hl('CmpItemKindVariable', { link = 'Identifier' })
set_hl('CmpItemKindStruct', { link = 'Structure' })
set_hl('CmpItemKindInterface', { link = 'Type' })
set_hl('CmpItemKindTypeParameter', { link = 'Type' })
set_hl('CmpItemKindEnumMember', { link = 'Constant' })
set_hl('CmpItemKindEvent', { fg = c.base2 })
set_hl('CmpItemKindConstructor', { link = '@constructor' })
set_hl('CmpItemKindConstant', { link = 'Constant' })
set_hl('CmpItemKindModule', { link = '@namespace' })
set_hl('CmpItemKindValue', { fg = c.base2 })
set_hl('CmpItemKindColor', { fg = c.magenta })
set_hl('CmpItemKindFunction', { link = 'Function' })
set_hl('CmpItemKindText', { link = 'String' })
end

View file

@ -1,23 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- general
set_hl('DashboardHeader', { fg = c.base00 })
set_hl('DashboardFooter', { fg = c.base00 })
-- Hyper
set_hl('DashboardProjectTitle', { fg = c.blue })
set_hl('DashboardProjectTitleIcon', { link = 'DashboardProjectTitle' })
set_hl('DashboardProjectIcon', { link = 'Directory' })
set_hl('DashboardMruTitle', { link = 'DashboardProjectTitle' })
set_hl('DashboardMruIcon', { link = 'DashboardMruTitle' })
set_hl('DashboardFiles', { fg = c.base0 })
set_hl('DashboardShotCutIcon', { fg = c.magenta })
-- Doom theme
set_hl('DashboardDesc', { fg = c.base0 })
set_hl('DashboardKey', { fg = c.magenta })
set_hl('DashboardIcon', { link = 'Directory' })
set_hl('DashboardShotCut', { fg = c.base00 })
end

View file

@ -1,52 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('DiagnosticError', { fg = c.error }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticWarn', { fg = c.warning }) --Used as the base highlight group.(except Underline)
set_hl('DiagnosticInfo', { fg = c.info }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticHint', { fg = c.hint }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticOk', { fg = c.cyan }) -- Used as the base highlight group.(except Underline)
-- set_hl('DiagnosticVirtualTextError') -- Used for "Error" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextWarn') -- Used for "Warn" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextInfo') -- Used for "Info" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextHint') -- Used for "Hint" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextOk') -- Used for "Ok" diagnostic virtual text.
set_hl('DiagnosticUnderlineError', { fg = c.error, sp = c.error }) --Used to underline "Error" diagnostics.
set_hl('DiagnosticUnderlineWarn', { fg = c.warning, sp = c.warning }) -- Used to underline "Warn" diagnostics.
set_hl('DiagnosticUnderlineInfo', { fg = c.info, sp = c.info }) -- Used to underline "Info" diagnostics.
set_hl('DiagnosticUnderlineHint', { fg = c.hint, sp = c.hint }) -- Used to underline "Hint" diagnostics.
set_hl('DiagnosticUnderlineOk', { fg = c.cyan, sp = c.cyan }) -- Used to underline "Ok" diagnostics.
-- set_hl('DiagnosticFloatingError') -- Used to color "Error" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingWarn') -- Used to color "Warn" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingInfo') -- Used to color "Info" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingHint') -- Used to color "Hint" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingOk') -- Used to color "Ok" diagnostic messages in diagnostics float.
set_hl(
'DiagnosticSignError',
{ fg = c.error, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Error" signs in sign column.
set_hl(
'DiagnosticSignWarn',
{ fg = c.warning, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Warn" signs in sign column.
set_hl(
'DiagnosticSignInfo',
{ fg = c.info, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Info" signs in sign column.
set_hl(
'DiagnosticSignHint',
{ fg = c.hint, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Hint" signs in sign column.
set_hl(
'DiagnosticSignOk',
{ fg = c.cyan, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for "Ok" signs in sign column.
-- set_hl('DiagnosticDeprecated') -- Used for deprecated or obsolete code.
-- set_hl('DiagnosticUnnecessary') -- Used for unnecessary or unused code.
end

View file

@ -1,110 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('ColorColumn', { bg = c.base02 }) -- used for columns
set_hl('Conceal', { fg = c.blue }) -- placeholder characters
set_hl('CurSearch', { fg = c.base2, bg = c.base02 }) -- highlight under cursor
set_hl('Cursor', { fg = c.base03, bg = c.base0 }) -- character under cursor
set_hl('lCursor', { link = 'Cursor' }) -- character under the cursor
set_hl('CursorIM', { link = 'Cursor' }) -- like cursor, but IME mode
set_hl('CursorColumn', { link = 'ColorColumn' }) -- screen-column at the cursor
set_hl('CursorLine', { bg = c.base02, sp = c.base1 }) -- screen-line at the cursor
set_hl('Directory', { fg = c.blue }) -- directory names
set_hl('DiffAdd', { fg = c.add, reverse = true }) -- Added line
set_hl('DiffChange', { fg = c.change, reverse = true }) -- Changed line
set_hl('DiffDelete', { fg = c.delete, reverse = true }) -- Deleted line
set_hl('DiffText', { fg = c.blue, reverse = true }) -- Changed Text
set_hl('EndOfBuffer', { fg = c.base03 }) -- Filler lines (~)
set_hl('TermCursor', { link = 'Cursor' }) -- Cursor in a focused terminal
set_hl('TermCursorNC', { fg = c.base03, bg = c.base0 }) -- Cursor in an unfocused terminal
set_hl('ErrorMsg', { fg = c.error, reverse = true }) -- Error messages on the command line
set_hl(
'WinSeparator',
{ fg = c.base00, bg = c.base02 },
{ transparent = config.transparent }
) -- Separators between window splits
set_hl(
'Folded',
{ fg = c.base0, bg = c.base02, underline = true, bold = true }
) -- Line used for closed folds
set_hl('FoldColumn', { fg = c.base0, bg = c.base02, bold = true }) -- 'foldcolumn'
set_hl(
'SignColumn',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
) -- Column were signs are displayed
set_hl('IncSearch', { fg = c.orange, standout = true }) -- 'incsearch' highlighting, also for the text replaced
set_hl('Substitute', { link = 'IncSearch' }) -- :substitute replacement text highlight
set_hl(
'LineNr',
{ fg = c.base01, bg = c.base02 },
{ transparent = config.transparent }
) -- Line number for ":number" and ":#" commands
set_hl('LineNrAbove', { link = 'LineNr' }) -- Line number, above the cursor line
set_hl('LineNrBelow', { link = 'LineNr' }) -- Line number, below the cursor
set_hl(
'CursorLineNr',
{ fg = c.base1, bg = c.base02, bold = true },
{ transparent = config.transparent }
) -- Like LineNr when 'cursorline' is set
set_hl('CursorLineFold', { link = 'FoldColumn' }) -- Like FoldColumn when 'cursorline' is set
set_hl('CursorLineSign', { link = 'SignColumn' }) -- Like SignColumn when 'cursorline' is set
set_hl('MatchParen', { fg = c.red, bg = c.base01, bold = true }) -- Character under the cursor or just before it
set_hl('ModeMsg', { fg = c.blue }) -- 'showmode' message (e.g., "-- INSERT --")
set_hl('MsgArea', { link = 'Normal' }) -- 'Area for messages and cmdline'
set_hl('MsgSeparator', { link = 'Normal' }) -- Separator for scrolled messages msgsep.
set_hl('MoreMsg', { fg = c.blue }) -- more-prompt
set_hl('NonText', { fg = c.base1, bold = true }) -- '@' at the end of the window
set_hl(
'Normal',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Normal text
set_hl('NormalFloat', { fg = c.base0, bg = c.base02 }) -- Normal text in floating windows
set_hl('FloatBorder', { link = 'WinSeparator', bold = true }) -- Border of floating windows.
set_hl('FloatTitle', { fg = c.orange }) -- Title of float windows.
set_hl('NormalNC', { link = 'Normal' }) -- Normal text in non-current windows.
set_hl(
'Pmenu',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
) -- Popup menu: Normal item
set_hl('PmenuSel', { fg = c.base2, bg = c.base01 }) -- Popup menu: Selected item
set_hl('PmenuKind', { link = 'Pmenu' }) -- Popup menu: Normal item kind
set_hl('PmenuKindSel', { link = 'PmenuSel' }) -- Popup menu: Selected item kind
set_hl('PmenuExtra', { link = 'Pmenu' }) -- Popup menu: Normal item extra text
set_hl('PmenuExtraSel', { link = 'PmenuSel' }) -- Popup menu: Selected item extra text
set_hl('PmenuSbar', { fg = c.base0, bg = c.base2 }) -- Popup menu: Scrollbar
set_hl('PmenuThumb', { fg = c.base03, bg = c.base0 }) -- Popup menu: Thumb of the scrollbar
set_hl('Question', { fg = c.cyan, bold = true }) -- hit-enter prompt and yes/no questions.
set_hl('QuickFixLine', { fg = c.base0, bg = c.base03 }) -- Current quickfix item in the quickfix window
set_hl('Search', { fg = c.yellow, reverse = true }) -- Last search pattern highlighting
set_hl('SpecialKey', { fg = c.red, reverse = true }) -- Unprintable characters: Text displayed differently from what it really is.
set_hl('SpellBad', { sp = c.red, undercurl = true }) -- Word that is not recognized by the spellchecker.
set_hl('SpellCap', { sp = c.violet, undercurl = true }) -- Word that should start with a capital
set_hl('SpellLocal', { sp = c.yellow, undercurl = true }) -- Word that is recognized by the spellchecker as one that is used in another region
set_hl('SpellRare', { sp = c.cyan, undercurl = true }) -- Word that is recognized by the spellchecker as one that is hardly ever used.
set_hl('StatusLine', { fg = c.base02, bg = c.base1 }) -- Status line of current window.
set_hl('StatusLineNC', { fg = c.base02, bg = c.base00 }) -- Status lines of not-current windows.
set_hl(
'TabLine',
{ fg = c.base0, bg = c.base02, sp = c.base0, underline = true }
) -- Tab pages line, not active tab page label.
set_hl(
'TabLineFill',
{ fg = c.base0, bg = c.base02, sp = c.base0, underline = true }
) -- Tab pages line, where there are no labels.
set_hl(
'TabLineSel',
{ fg = c.base2, bg = c.base01, sp = c.base0, underline = true }
) -- Tab pages line, active tab page label.
set_hl('Title', { fg = c.orange, bold = true }) -- Titles for output from ":set all", ":autocmd" etc.
set_hl('Visual', { bg = c.base02, standout = true }) -- Visual mode selection.
set_hl('VisualNOS', { link = 'Visual' }) -- Visual mode selection when vim is "Not Owning the Selection".
set_hl('WarningMsg', { fg = c.warning, bold = true }) -- Warning messages.
set_hl('Whitespace', { fg = c.base01 }) -- "nbsp", "space", "tab", "multispace", "lead" and "trail" in 'listchars'.
set_hl('WildMenu', { fg = c.base2, bg = c.base02 }) -- Current match in 'wildmenu' completion.
set_hl('WinBar', { link = 'Pmenu' }) -- Window bar of current window.
set_hl('WinBarNC', { link = 'WinBar' }) -- Window bar of not-current windows.
end

View file

@ -1,20 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'GitSignsAdd',
{ fg = c.add, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'add' signs
set_hl(
'GitSignsChange',
{ fg = c.change, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'change' signs
set_hl(
'GitSignsDelete',
{ fg = c.delete, bg = c.base02 },
{ transparent = config.transparent }
) -- Used for the text of 'delete' signs
end

View file

@ -1,9 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('HopNextKey', { fg = c.magenta })
set_hl('HopNextKey1', { fg = c.blue })
set_hl('HopNextKey2', { fg = '#1b6294' })
set_hl('HopUnmatched', { fg = c.base01 })
end

View file

@ -1,17 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('IndentBlanklineChar', { fg = c.base01 }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.base0 }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = c.base0, nocombine = true })
set_hl('IblScope', { fg = c.base01, nocombine = true })
-- set_hl('IndentBlanklineSpaceCharBlankline', {}) -- Highlight of space character on blank lines. Default: Whitespace
-- set_hl('IndentBlanklineContextStart', {}) -- Highlight of the first line of the current context. Default: Label
end

View file

@ -1,24 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local darken = colortool.darken
local lighten = colortool.lighten
local set_hl = utils.set_hl
set_hl('LspReferenceText', { link = 'Visual' }) -- used for highlighting "text" references
set_hl('LspReferenceRead', { link = 'Visual' }) -- used for highlighting "read" references
set_hl('LspReferenceWrite', { link = 'Visual' }) -- used for highlighting "write" references
if vim.o.background == 'dark' then
set_hl('LspInlayHint', { fg = darken(c.yellow, 20) }) -- used for highlighting inlay hints
else
set_hl('LspInlayHint', { fg = lighten(c.yellow, 20) })
end
-- if you want to me to enable the highlight groups bellow, please send a screenshot for me to see how
-- they look like or how to config for me to test.
-- set_hl('LspCodelens') -- Used to color the virtual text of the codelens.
-- set_hl('LspCodeLensSeparator') -- Used to color the separator between two or more code lenses.
-- set_hl('LspSignatureActiveParameter') -- Used to highlight the active parameter in the signature help. See
end

View file

@ -1,56 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Float window
set_hl('SagaNormal', { link = 'Pmenu' })
set_hl(
'TitleString',
{ fg = c.orange, bold = true, bg = c.base02 },
{ transparent = config.transparent }
)
-- Outline
set_hl('OutlineIndent', { fg = c.green })
-- Icons
set_hl('SagaWinbarModule', { link = '@namespace' })
set_hl('SagaWinbarInterface', { link = 'Type' })
set_hl('SagaWinbarConstructor', { link = '@constructor' })
set_hl('SagaWinbarStruct', { link = 'Structure' })
set_hl('SagaWinbarObject', { link = '@field' })
set_hl('SagaWinbarUnit', { link = 'Number' })
set_hl('SagaWinbarFile', { fg = c.base0 })
set_hl('SagaWinbarSnippet', { link = 'Keyword' })
set_hl('SagaWinbarText', { fg = c.base1 })
set_hl('SagaWinbarTypeAlias', { link = 'Type' })
set_hl('SagaWinbarEvent', { fg = c.base2 })
set_hl('SagaWinbarParameter', { link = '@parameter' })
set_hl('SagaWinbarKey', { link = '@field' })
set_hl('SagaWinbarValue', { fg = c.base2 })
set_hl('SagaWinbarMacro', { link = 'Macro' })
set_hl('SagaWinbarNumber', { link = 'Number' })
set_hl('SagaWinbarConstant', { link = 'Constant' })
set_hl('SagaWinbarFunction', { link = 'Function' })
set_hl('SagaWinbarEnum', { link = 'Type' })
set_hl('SagaWinbarField', { link = '@field' })
set_hl('SagaWinbarProperty', { link = '@field' })
set_hl('SagaWinbarMethod', { link = 'Function' })
set_hl('SagaWinbarClass', { link = 'Type' })
set_hl('SagaWinbarFolder', { link = 'Directory' })
set_hl('SagaWinbarPackage', { link = 'Directory' })
set_hl('SagaWinbarStaticMethod', { link = 'Function' })
set_hl('SagaWinbarTypeParameter', { link = 'Type' })
set_hl('SagaWinbarEnumMember', { link = 'Constant' })
set_hl('SagaWinbarOperator', { link = 'Operator' })
set_hl('SagaWinbarNull', { link = 'Constant' })
set_hl('SagaWinbarNamespace', { link = '@namespace' })
set_hl('SagaWinbarArray', { link = 'Delimiter' })
set_hl('SagaWinbarBoolean', { link = 'Boolean' })
set_hl('SagaWinbarString', { link = 'String' })
set_hl('SagaWinbarVariable', { link = 'Identifier' })
set_hl('SagaWinbarFilename', { fg = c.base0 })
set_hl('SagaWinbarFolderName', { fg = c.base0 })
set_hl('SagaWinbarFileIcon', { link = 'Directory' })
set_hl('SagaWinbarSep', { link = 'Keyword' })
end

View file

@ -1,38 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- MiniCursor
set_hl('MiniCursorword', { bg = c.base02 })
-- MiniStatusLine
set_hl('MiniStatuslineModeNormal', { fg = c.base03, bg = c.blue })
set_hl('MiniStatuslineModeInsert', { fg = c.base03, bg = c.green })
set_hl('MiniStatuslineModeVisual', { fg = c.base03, bg = c.magenta })
set_hl('MiniStatuslineModeReplace', { fg = c.base03, bg = c.red })
set_hl('MiniStatuslineModeCommand', { fg = c.base03, bg = c.orange })
set_hl('MinistatusLineFileName', { fg = c.base0, bg = c.base02 })
set_hl('MiniStatuslineDevinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineFileinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineInactive', { fg = c.base01, bg = c.base03 })
-- MiniTabLine
set_hl('MiniTablineCurrent', { fg = c.base2, bg = c.base1 })
set_hl('MiniTablineVisible', { fg = c.base2, bg = c.base03 })
set_hl('MiniTablineHidden', { fg = c.base01, bg = c.base03 })
set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
set_hl('MiniTablineFill', { link = 'NormalFloat' })
set_hl('MiniTablineTabpagesection', { link = 'NormalFloat' })
-- MiniStarter
set_hl('MiniStarterCurrent', { link = 'CursorLine' })
set_hl('MiniStarterHeader', { fg = c.base00 })
set_hl('MiniStarterFooter', { fg = c.base00 })
set_hl('MiniStarterItem', { fg = c.base0 })
set_hl('MiniStarterItemBullet', { fg = c.blue })
set_hl('MiniStarterItemPrefix', { fg = c.blue })
set_hl('MiniStarterSection', { link = 'Title' })
set_hl('MiniStarterQuery', { fg = c.magenta, bg = 'NONE', bold = true })
end

View file

@ -1,33 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NavicIconsFile', { fg = c.base00 })
set_hl('NavicIconsModule', { link = '@namespace' })
set_hl('NavicIconsNamespace', { link = '@namespace' })
set_hl('NavicIconsPackage', { link = 'Directory' })
set_hl('NavicIconsClass', { link = 'Type' })
set_hl('NavicIconsMethod', { link = 'Type' })
set_hl('NavicIconsProperty', { link = '@field' })
set_hl('NavicIconsField', { link = '@field' })
set_hl('NavicIconsConstructor', { link = '@constructor' })
set_hl('NavicIconsEnum', { link = 'Type' })
set_hl('NavicIconsInterface', { link = 'Type' })
set_hl('NavicIconsFunction', { link = 'Function' })
set_hl('NavicIconsVariable', { link = 'Identifier' })
set_hl('NavicIconsConstant', { link = 'Constant' })
set_hl('NavicIconsString', { link = 'String' })
set_hl('NavicIconsNumber', { link = 'Number' })
set_hl('NavicIconsBoolean', { link = 'Boolean' })
set_hl('NavicIconsArray', { link = 'Delimiter' })
set_hl('NavicIconsObject', { link = '@field' })
set_hl('NavicIconsKey', { link = '@field' })
set_hl('NavicIconsNull', { link = 'Constant' })
set_hl('NavicIconsEnumMember', { link = 'Constant' })
set_hl('NavicIconsStruct', { link = 'Structure' })
set_hl('NavicIconsEvent', { fg = c.base2 })
set_hl('NavicIconsOperator', { link = 'Operator' })
set_hl('NavicIconsTypeParameter', { link = '@parameter' })
set_hl('NavicText', { fg = c.base1 })
set_hl('NavicSeparator', { link = 'Keyword' })
end

View file

@ -1,27 +0,0 @@
return function(c)
local blend = require('solarized.utils.colors').blend
local utils = require('solarized.utils')
local set_hl = utils.set_hl
local alpha = 0.05
set_hl('NeogitCursorLine', { link = 'CursorLine' })
set_hl('NeogitBranch', { fg = c.magenta })
set_hl('NeogitRemote', { fg = c.violet })
set_hl(
'NeogitHunkHeader',
{ fg = c.orange, bg = blend(c.orange, c.base03, alpha) }
)
set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
set_hl('NeogitDiffContextHighlight', { fg = c.base00, bg = c.base03 })
set_hl('NeogitDiffContext', { fg = c.base00, bg = c.base03 })
set_hl(
'NeogitDiffDeleteHighlight',
{ fg = c.red, bg = blend(c.red, c.base03, alpha) }
)
set_hl('NeogitDiffDelete', { fg = c.red })
set_hl(
'NeogitDiffAddHighlight',
{ fg = c.green, bg = blend(c.green, c.base03, alpha) }
)
set_hl('NeogitDiffAdd', { fg = c.green })
end

View file

@ -1,28 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local set_hl = utils.set_hl
set_hl('NeoTreeNormal', {
fg = c.base0,
}, { transparent = config.transparent })
set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
set_hl('NeoTreeEndOfBuffer', { fg = c.base02 })
set_hl('NeoTreeRootName', { link = 'Directory' })
set_hl('NeoTreeFileName', { fg = c.base0 })
set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
set_hl('NeoTreeFloatTitle', { link = 'Title' })
set_hl('NeoTreeGitAdded', { fg = c.add, bg = 'NONE' })
set_hl('NeoTreeGitConflict', { fg = c.change })
set_hl('NeoTreeGitDeleted', { fg = c.delete })
set_hl('NeoTreeGitIgnored', { fg = c.base01, italic = true })
set_hl('NeoTreeGitModified', { fg = c.change })
set_hl('NeoTreeGitUnstaged', { fg = c.change })
set_hl('NeoTreeGitUntracked', { fg = c.change })
set_hl('NeoTreeGitStaged', { fg = c.add })
set_hl('NeoTreeIndentMarker', { fg = c.base01 })
set_hl('NeoTreeDotfile', { fg = c.base01 })
set_hl('NeoTreeFileStats', { fg = c.base01 })
set_hl('NeoTreeTitleBar', { fg = darken(c.blue, 50), bg = c.blue })
end

View file

@ -1,9 +0,0 @@
return function(c)
local set_hl = require('solarized.utils').set_hl
set_hl('NoiceFormatProgressTodo', { fg = c.base01, reverse = true })
set_hl('NoiceFormatProgressDone', { fg = c.cyan, reverse = true })
set_hl('NoiceLspProgressSpinner', { fg = c.cyan })
set_hl('NoiceLspProgressClient', { fg = c.blue })
set_hl('NoiceLspProgressTitle', { link = 'Title' })
end

View file

@ -1,26 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NotifyBackground', { bg = c.base03 })
set_hl('NotifyERRORBorder', { fg = c.error })
set_hl('NotifyWARNBorder', { fg = c.warn })
set_hl('NotifyINFOBorder', { fg = c.info })
set_hl('NotifyDEBUGBorder', { fg = c.magenta })
set_hl('NotifyTRACEBorder', { fg = c.violet })
set_hl('NotifyERRORIcon', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNIcon', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOIcon', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' })
set_hl('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORTitle', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNTitle', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOTitle', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGTitle', { link = 'NotifyDEBUGTitle' })
set_hl('NotifyTRACETitle', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORBody', { link = 'Normal' })
set_hl('NotifyWARNBody', { link = 'Normal' })
set_hl('NotifyINFOBody', { link = 'Normal' })
set_hl('NotifyDEBUGBody', { link = 'Normal' })
set_hl('NotifyTRACEBody', { link = 'Normal' })
end

View file

@ -1,32 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Default highlight
set_hl('@lsp.type.class', { link = 'Type' }) -- Type
set_hl('@lsp.type.decorator', { link = 'Function' }) -- Function
set_hl('@lsp.type.enum', { link = 'Type' }) -- Type
set_hl('@lsp.type.enumMember', { link = 'Constant' }) -- Constant
set_hl('@lsp.type.function', { link = 'Function' }) -- Function
set_hl('@lsp.type.interface', { link = 'Type' }) -- Type
set_hl('@lsp.type.macro', { link = 'Macro' }) -- Keyword
set_hl('@lsp.type.method', { link = 'Function' }) -- Function
set_hl('@lsp.type.namespace', { link = '@namespace' }) -- Namespace
set_hl(
'@lsp.type.parameter',
{ fg = c.base0, italic = true },
{ styles = config.styles.parameters }
)
set_hl('@lsp.type.property', { link = '@field' }) -- Property
set_hl('@lsp.type.struct', { link = 'Structure' }) -- Structure
set_hl('@lsp.type.type', { link = 'Type' }) -- Type
set_hl('@lsp.type.typeParameter', { link = 'Type' }) -- Type
set_hl('@lsp.type.variable', { link = 'Identifier' }) -- Identifier
-- Extra highlight
set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' }) -- Constant variables ex: const hello = 'Hello World'
set_hl('@lsp.typemod.variable.global', { link = 'Constant' }) -- Global variables ex: HELLO = 'Hello World'
set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' }) -- documentation comments
set_hl('@lsp.typemod.class.documentation', { link = 'Type' }) -- documentation comments
set_hl('@lsp.typemod.property.readonly', { link = 'Constant' }) -- Ex: System."out".println()
end

View file

@ -1,48 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'Comment',
{ fg = c.base01, italic = true },
{ styles = config.styles.comments }
) -- any comment
set_hl('Constant', { fg = c.cyan }, { styles = config.styles.constants }) -- any constant
set_hl('String', { fg = c.cyan }) -- a string constant: "this is a string"
set_hl('Character', { link = 'String' }) -- a character constant: 'c', '\n'
set_hl('Number', { fg = c.magenta }, { styles = config.styles.numbers }) -- a number constant: 234, 0xff
set_hl('Boolean', { link = 'Constant' }) -- a boolean constant: TRUE, false
set_hl('Float', { link = 'Number' }) -- a floating point constant: 2.3e10
set_hl('Identifier', { fg = c.blue }, { styles = config.styles.variables }) -- any variable name
set_hl('Function', { fg = c.blue }, { styles = config.styles.functions }) -- function name (also: methods for classes)
set_hl('Statement', { fg = c.green }) -- any statement
set_hl('Conditional', { link = 'Statement' }) -- if, then, else, endif, switch, etc.
set_hl('Repeat', { link = 'Statement' }) -- for, do, while, etc.
set_hl('Label', { link = 'Statement' }) -- case, default, etc.
set_hl('Operator', { link = 'Statement' }) -- "sizeof", "+", "*", etc.
set_hl(
'Keyword',
{ fg = c.base1, bold = true },
{ styles = config.styles.keywords }
) -- any other keyword
set_hl('Exception', { link = 'Statement' }) -- try, catch, throw
set_hl('PreProc', { fg = c.orange }) -- generic Preprocessor
set_hl('Include', { link = 'PreProc' }) -- preprocessor #include
set_hl('Define', { link = 'PreProc' }) -- preprocessor #define
set_hl('Macro', { link = 'PreProc' }) -- same as Define
set_hl('PreCondit', { link = 'PreProc' }) -- preprocessor #if, #else, #endif, etc.
set_hl('Type', { fg = c.yellow }, { styles = config.styles.types }) -- int, long, char, etc.
set_hl('StorageClass', { fg = c.yellow }) -- static, register, volatile, etc.
set_hl('Structure', { fg = c.yellow }) -- struct, union, enum, etc.
set_hl('Typedef', { fg = c.yellow }) -- A typedef
set_hl('Special', { fg = c.red }) -- special symbol
set_hl('SpecialChar', { link = 'Special' }) -- special character in a constant
set_hl('Tag', { link = 'Special' }) -- you can use CTRL-] on this
set_hl('Delimiter', { fg = c.base00 }) -- character that needs attention
set_hl('SpecialComment', { link = 'Special' }) -- special things inside a comment
set_hl('Debug', { link = 'Special' }) -- debugging statements
set_hl('Underlined', { fg = c.violet }) --text that stands out, HTML links
set_hl('Ignore') --left blank, hidden |hl-Ignore|
set_hl('Error', { fg = c.error, bold = true }) --any erroneous construct
set_hl('Todo', { fg = c.magenta, bold = true }) --anything that needs extra attention; mostly the keywords TODO FIXME and XXX
end

View file

@ -1,43 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('TelescopeSelection', { link = 'Visual' })
set_hl('TelescopeSelectionCaret', { link = 'TelescopeSelection' })
set_hl('TelescopeMultiSelection', { link = 'Type' })
set_hl('TelescopeMultiIcon', { fg = c.cyan })
-- "Normal" in the floating windows created by telescope.
set_hl(
'TelescopeNormal',
{ fg = c.base0, bg = c.base02 },
{ transparent = config.transparent }
)
set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
-- Border highlight groups.
-- Use TelescopeBorder to override the default.
-- Otherwise set them specifically
set_hl('TelescopeBorder', { link = 'WinSeparator' })
set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
-- Title highlight groups.
-- Use TelescopeTitle to override the default.
-- Otherwise set them specifically
set_hl('TelescopeTitle', { fg = c.blue, reverse = true })
set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePromptCounter', { link = 'NonText' })
-- Used for highlighting characters that you match.
set_hl('TelescopeMatching', { fg = c.yellow })
-- Used for the prompt prefix
set_hl('TelescopePromptPrefix', { fg = c.magenta })
end

View file

@ -1,50 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local set_hl = utils.set_hl
local colorFunc
local percentage = 80
if vim.o.background == 'light' then
colorFunc = colortool.lighten
else
colorFunc = colortool.darken
end
-- TODO: TODO
-- WARN: WARN
-- TEST: TEST
-- PERF: PERF
-- NOTE: NOTE
-- HACK: HACK
set_hl('TodoFgTODO', { fg = c.info })
set_hl('TodoFgWARN', { fg = c.warning })
set_hl('TodoFgTEST', { fg = c.violet })
set_hl('TodoFgPERF', { fg = c.magenta })
set_hl('TodoFgNOTE', { fg = c.hint })
set_hl('TodoFgHACK', { fg = c.cyan })
set_hl('TodoFgFIX', { fg = c.error })
set_hl('TodoSignTODO', { fg = c.info })
set_hl('TodoSignWARN', { fg = c.warning })
set_hl('TodoSignTEST', { fg = c.violet })
set_hl('TodoSignPERF', { fg = c.magenta })
set_hl('TodoSignNOTE', { fg = c.hint })
set_hl('TodoSignHACK', { fg = c.cyan })
set_hl('TodoSignFIX', { fg = c.error })
set_hl('TodoBgTODO', { fg = c.info, bg = colorFunc(c.info, percentage) })
set_hl(
'TodoBgWARN',
{ fg = c.warning, bg = colorFunc(c.warning, percentage) }
)
set_hl('TodoBgTEST', { fg = c.violet, bg = colorFunc(c.violet, percentage) })
set_hl(
'TodoBgPERF',
{ fg = c.magenta, bg = colorFunc(c.magenta, percentage) }
)
set_hl('TodoBgNOTE', { fg = c.hint, bg = colorFunc(c.hint, percentage) })
set_hl('TodoBgHACK', { fg = c.cyan, bg = colorFunc(c.cyan, percentage) })
set_hl('TodoBgFIX', { fg = c.error, bg = colorFunc(c.error, percentage) })
end

View file

@ -1,66 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('NvimTreeSymlink', { link = 'Underlined' })
set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
-- set_hl('NvimTreeSymlinkFolderName') -- (Directory)
set_hl('NvimTreeFolderName', { fg = c.base0 }) -- (Directory)
set_hl('NvimTreeRootFolder', { link = 'Title' })
set_hl('NvimTreeFolderIcon', { link = 'Directory' })
-- set_hl('NvimTreeOpenedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeClosedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeFileIcon')
set_hl('NvimTreeEmptyFolderName', { fg = c.base0 }) -- (Directory)
-- set_hl('NvimTreeOpenedFolderName') -- (Directory)
set_hl('NvimTreeExecFile', { link = 'Function' })
set_hl('NvimTreeOpenedFile', { fg = c.blue, bold = true })
set_hl('NvimTreeModifiedFile', { fg = c.change })
set_hl('NvimTreeSpecialFile', { link = 'Special' })
-- set_hl('NvimTreeImageFile')
set_hl('NvimTreeIndentMarker', { fg = c.base01 })
-- set_hl('NvimTreeLspDiagnosticsError') -- (DiagnosticError)
-- set_hl('NvimTreeLspDiagnosticsWarning') -- (DiagnosticWarn)
set_hl('NvimTreeLspDiagnosticsInformation') -- (DiagnosticInfo)
set_hl('NvimTreeLspDiagnosticsHint') -- (DiagnosticHint)
set_hl('NvimTreeGitDirty', { fg = c.change })
set_hl('NvimTreeGitStaged', { fg = c.add })
set_hl('NvimTreeGitMerge', { fg = c.change })
set_hl('NvimTreeGitRenamed', { fg = c.add })
set_hl('NvimTreeGitNew', { fg = c.add })
set_hl('NvimTreeGitDeleted', { fg = c.delete })
-- set_hl('NvimTreeGitIgnored') -- (Comment)
-- set_hl('NvimTreeWindowPicker')
set_hl(
'NvimTreeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
set_hl('NvimTreeEndOfBuffer', { fg = base04 }) -- (NonText)
-- set_hl('NvimTreeCursorLine') -- (CursorLine)
-- set_hl('NvimTreeCursorLineNr') -- (CursorLineNr)
-- set_hl('NvimTreeLineNr') -- (LineNr)
set_hl(
'NvimTreeWinSeparator',
{ fg = base04, bg = base04 },
{ transparent = config.transparent }
) -- (WinSeparator)
-- set_hl('NvimTreeCursorColumn') -- (CursorColumn)
--
-- There are also links for file highlight with git properties, linked to their
-- Git equivalent:
--
-- set_hl('NvimTreeFileDirty') -- (NvimTreeGitDirty)
-- set_hl('NvimTreeFileStaged') -- (NvimTreeGitStaged)
-- set_hl('NvimTreeFileMerge') -- (NvimTreeGitMerge)
-- set_hl('NvimTreeFileRenamed') -- (NvimTreeGitRenamed)
-- set_hl('NvimTreeFileNew') -- (NvimTreeGitNew)
-- set_hl('NvimTreeFileDeleted') -- (NvimTreeGitDeleted)
-- set_hl('NvimTreeFileIgnored') -- (NvimTreeGitIgnored)
-- set_hl('NvimTreeLiveFilterPrefix')
-- set_hl('NvimTreeLiveFilterValue')
-- set_hl('NvimTreeBookmark')
end

View file

@ -1,114 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
--[[ Highlight capture names as of nvim-treesitter commit `6806d7a` ]]
--
-- Identifiers
set_hl('@variable', { link = 'Identifier' }) -- various variable names
set_hl('@variable.builtin', { link = 'Identifier' }) -- built-in variable names (e.g. `this`)
set_hl(
'@variable.parameter',
{ fg = c.base0, italic = true },
{ styles = config.styles.parameters }
) -- parameters of a function
set_hl('@variable.member', { fg = c.blue }) -- object and struct fields
set_hl('@constant', { link = 'Constant' }) -- constant identifiers
set_hl('@constant.builtin', { link = 'Constant' }) -- built-in constant values
set_hl('@constant.macro', { link = 'Constant' }) -- constants defined by the preprocessor
set_hl('@module', { fg = c.violet }) -- modules or namespaces
set_hl('@module.builtin', { fg = c.cyan }) -- built-in modules or namespaces
set_hl('@label', { link = 'Label' }) -- GOTO and other labels (e.g. `label:` in C), including heredoc labels
-- Literals
set_hl('@string', { link = 'String' }) -- string literals
set_hl('@string.documentation', { link = 'Comment' }) -- string documenting code (e.g. Python docstrings)
set_hl('@string.regexp', { fg = c.violet }) -- regular expressions
set_hl('@string.escape', { link = 'Keyword' }) -- escape sequences
set_hl('@string.special', { link = 'SpecialChar' }) -- other special strings (e.g. dates)
set_hl('@string.special.symbol', { fg = c.violet }) -- symbols or atoms
set_hl('@string.special.url', { link = 'Underlined' }) -- URIs (e.g. hyperlinks)
set_hl('@string.special.path', { link = 'Underlined' }) -- filenames
set_hl('@character', { link = 'String' }) -- character literals
set_hl('@character.special', { link = '@string.special' }) -- special characters (e.g. wildcards)
set_hl('@character.printf', { fg = c.violet }) -- special characters (e.g. wildcards)
set_hl('@boolean', { link = 'Boolean' }) -- boolean literals
set_hl('@number', { link = 'Number' }) -- numeric literals
set_hl('@number.float', { link = 'Float' }) -- floating-point number literals
-- Types
set_hl('@type', { link = 'Type' }) -- type or class definitions and annotations
set_hl('@type.builtin', { link = 'Type' }) -- built-in types
set_hl('@type.definition', { link = 'Type' }) -- identifiers in type definitions (e.g. `typedef <type> <identifier>` in C)
set_hl('@type.qualifier', { link = 'Keyword' }) -- type qualifiers (e.g. `const`)
set_hl('@attribute', { link = 'Function' }) -- attribute annotations (e.g. Python decorators)
set_hl('@property', { link = '@variable.member' }) -- the key in key/value pairs
-- Functions
set_hl('@function', { link = 'Function' }) -- function definitions
set_hl('@function.builtin', { link = 'Function' }) -- built-in functions
set_hl('@function.call', { link = 'Function' }) -- function calls
set_hl('@function.macro', { link = 'Function' }) -- preprocessor macros
set_hl('@function.method', { link = 'Function' }) -- method definitions
set_hl('@function.method.call', { link = 'Function' }) -- method calls
set_hl('@constructor', { link = 'Function' }) -- constructor calls and definitions
set_hl('@operator', { link = 'Operator' }) -- symbolic operators (e.g. `+` / `*`)
-- Keywords
set_hl('@keyword', { link = 'Keyword' }) -- keywords not fitting into specific categories
set_hl('@keyword.coroutine', { link = 'Statement' }) -- keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
set_hl('@keyword.function', { link = 'Keyword' }) -- keywords that define a function (e.g. `func` in Go, `def` in Python)
set_hl('@keyword.operator', { link = 'Operator' }) -- operators that are English words (e.g. `and` / `or`)
set_hl('@keyword.import', { link = 'Include' }) -- keywords for including modules (e.g. `import` / `from` in Python)
set_hl('@keyword.storage', { link = 'StorageClass' }) -- modifiers that affect storage in memory or life-time
set_hl('@keyword.repeat', { link = 'Repeat' }) -- keywords related to loops (e.g. `for` / `while`)
set_hl('@keyword.return', { link = 'Statement' }) -- keywords like `return` and `yield`
set_hl('@keyword.debug', { link = 'Debug' }) -- keywords related to debugging
set_hl('@keyword.exception', { link = 'Exception' }) -- keywords related to exceptions (e.g. `throw` / `catch`)
set_hl('@keyword.conditional', { link = 'Conditional' }) -- keywords related to conditionals (e.g. `if` / `else`)
set_hl('@keyword.conditional.ternary', { link = 'Conditional' }) -- ternary operator (e.g. `?` / `:`)
set_hl('@keyword.directive', { link = 'PreProc' }) -- various preprocessor directives & shebangs
set_hl('@keyword.directive.define', { link = 'Define' }) -- preprocessor definition directives
-- Punctuations
set_hl('@punctuation.delimiter', { link = 'Delimiter' }) -- delimiters (e.g. `;` / `.` / `,`)
set_hl('@punctuation.bracket', { link = 'Delimiter' }) -- brackets (e.g. `()` / `{}` / `[]`)
set_hl('@punctuation.special', { link = 'Delimiter' }) -- special symbols (e.g. `{}` in string interpolation)
-- Comments
set_hl('@comment', { link = 'Comment' }) -- line and block comments
set_hl('@comment.documentation', { link = 'Comment' }) -- comments documenting code
set_hl('@comment.error', { fg = c.error }) -- error-type comments (e.g. `ERROR`, `FIXME`, `DEPRECATED:`)
set_hl('@comment.warning', { fg = c.warning }) -- warning-type comments (e.g. `WARNING:`, `FIX:`, `HACK:`)
set_hl('@comment.todo', { link = 'Todo' }) -- todo-type comments (e.g. `TODO:`, `WIP:`, `FIXME:`)
set_hl('@comment.note', { fg = c.info }) -- note-type comments (e.g. `NOTE:`, `INFO:`, `XXX`)
-- Markups
set_hl('@markup.strong', { fg = c.yellow }) -- bold text
set_hl('@markup.italic', { fg = c.yellow, italic = true }) -- italic text
set_hl('@markup.strikethrough', { fg = c.base01, strikethrough = true }) -- struck-through text
set_hl('@markup.underline', { link = 'Underlined' }) -- underlined text (only for literal underline markup!)
set_hl('@markup.heading', { link = 'Title' }) -- headings, titles (including markers)
set_hl('@markup.quote', { fg = c.cyan }) -- block quotes
set_hl('@markup.math', { link = 'Number' }) -- math environments (e.g. `$ ... $` in LaTeX)
set_hl('@markup.environment', { fg = c.base0 }) -- environments (e.g. in LaTeX)
set_hl('@markup.link', { link = 'Underlined' }) -- text references, footnotes, citations, etc.
set_hl('@markup.link.label', { link = 'Constant' }) -- link, reference descriptions
set_hl('@markup.link.url', { link = 'Underlined' }) -- URL-style links
set_hl('@markup.raw', { fg = c.base0 }) -- literal or verbatim text (e.g., inline code)
set_hl('@markup.raw.block', { fg = c.base0 }) -- literal or verbatim text as a stand-alone block (use priority 90 for blocks with injections)
set_hl('@markup.list', { link = 'Delimiter' }) -- list markers
set_hl('@markup.list.checked', { link = 'Delimiter' }) -- checked todo-style list markers
set_hl('@markup.list.unchecked', { link = 'Delimiter' }) -- unchecked todo-style list markers
-- Diffs
set_hl('@diff.plus', { fg = c.add }) -- added text (for diff files)
set_hl('@diff.minus', { fg = c.delete }) -- deleted text (for diff files)
set_hl('@diff.delta', { fg = c.change }) -- changed text (for diff files)
-- Tags
set_hl('@tag', { fg = c.blue, bold = true }) -- XML-style tag names (and similar)
set_hl('@tag.attribute', { fg = c.violet }) -- XML-style tag attributes
set_hl('@tag.delimiter', { fg = c.base01 }) -- XML-style tag delimiters
end

View file

@ -1,12 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('WhichKey', { fg = c.base0 }) -- the key
set_hl('WhichKeyGroup', { fg = c.blue }) -- a group
set_hl('WhichKeySeparator', { fg = c.magenta }) -- the separator between the key and its label
set_hl('WhichKeyDesc', { fg = c.base2 }) -- the label of the key
-- set_hl('WhichKeyFloat') -- Normal in the popup window
-- set_hl('WhichKeyBorder', { link = 'WinSeparator' })
-- set_hl('WhichKeyValue') -- used by plugins that provide values
end

View file

@ -1,16 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- When `termguicolors` is enabled, this plugin is designed to work automatically,
-- deriving colours from the user's theme.
--
-- My attempt to fix bufferline on transparent background
if config.transparent then
set_hl('BufferLineFill', { bg = c.base02 })
set_hl('BufferLineBufferSelected', { fg = c.base2, italic = true })
set_hl('BufferLineSeparator', { fg = c.base02 })
set_hl('BufferLineSeparatorSelected', { fg = c.base02 })
set_hl('BufferLineSeparatorVisible', { fg = c.base02 })
end
end

View file

@ -1,36 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- set_hl('CmpItemAbbr') -- Highlight group for unmatched characters of each completion field.
set_hl('CmpItemAbbrDeprecated', { fg = c.base1, strikethrough = true }) -- Highlight group for unmatched characters of each deprecated completion field.
set_hl('CmpItemAbbrMatch', { link = 'IncSearch' }) -- Highlight group for matched characters of each completion field.
set_hl('CmpItemAbbrMatchFuzzy', { link = 'IncSearch' }) -- Highlight group for fuzzy-matched characters of each completion field.
-- set_hl('CmpItemKind') -- Highlight group for the kind of the field.
-- set_hl('CmpItemMenu') -- The menu field's highlight group.
set_hl('CmpItemKindReference', { link = 'Underlined' })
set_hl('CmpItemKindUnit', { link = 'Number' })
set_hl('CmpItemKindEnum', { link = 'Type' })
set_hl('CmpItemKindField', { link = '@field' })
set_hl('CmpItemKindClass', { link = 'Type' })
set_hl('CmpItemKindFile', { fg = c.base0 })
set_hl('CmpItemKindProperty', { link = '@field' })
set_hl('CmpItemKindMethod', { link = 'Function' })
set_hl('CmpItemKindKeyword', { link = 'Keyword' })
set_hl('CmpItemKindFolder', { link = 'Directory' })
set_hl('CmpItemKindSnippet', { link = 'Keyword' })
set_hl('CmpItemKindVariable', { link = 'Identifier' })
set_hl('CmpItemKindStruct', { link = 'Structure' })
set_hl('CmpItemKindInterface', { link = 'Type' })
set_hl('CmpItemKindTypeParameter', { link = 'Type' })
set_hl('CmpItemKindEnumMember', { link = 'Constant' })
set_hl('CmpItemKindEvent', { fg = c.base2 })
set_hl('CmpItemKindConstructor', { link = '@constructor' })
set_hl('CmpItemKindConstant', { link = 'Constant' })
set_hl('CmpItemKindModule', { link = '@namespace' })
set_hl('CmpItemKindValue', { fg = c.base2 })
set_hl('CmpItemKindColor', { fg = c.magenta })
set_hl('CmpItemKindFunction', { link = 'Function' })
set_hl('CmpItemKindText', { link = 'String' })
end

View file

@ -1,23 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- general
set_hl('DashboardHeader', { fg = c.red })
set_hl('DashboardFooter', { fg = c.violet })
-- Hyper
set_hl('DashboardProjectTitle', { fg = c.blue })
set_hl('DashboardProjectTitleIcon', { link = 'DashboardProjectTitle' })
set_hl('DashboardProjectIcon', { link = 'Directory' })
set_hl('DashboardMruTitle', { link = 'DashboardProjectTitle' })
set_hl('DashboardMruIcon', { link = 'DashboardMruTitle' })
set_hl('DashboardFiles', { fg = c.base0 })
set_hl('DashboardShotCutIcon', { fg = c.magenta })
-- Doom theme
set_hl('DashboardDesc', { fg = c.base00 })
set_hl('DashboardKey', { fg = c.magenta })
set_hl('DashboardIcon', { link = 'Directory' })
set_hl('DashboardShotCut', { fg = c.base00 })
end

View file

@ -1,32 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('DiagnosticError', { fg = c.error }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticWarn', { fg = c.warning }) --Used as the base highlight group.(except Underline)
set_hl('DiagnosticInfo', { fg = c.info }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticHint', { fg = c.hint }) -- Used as the base highlight group.(except Underline)
set_hl('DiagnosticOk', { fg = c.cyan }) -- Used as the base highlight group.(except Underline)
-- set_hl('DiagnosticVirtualTextError') -- Used for "Error" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextWarn') -- Used for "Warn" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextInfo') -- Used for "Info" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextHint') -- Used for "Hint" diagnostic virtual text.
-- set_hl('DiagnosticVirtualTextOk') -- Used for "Ok" diagnostic virtual text.
set_hl('DiagnosticUnderlineError', { fg = c.error, sp = c.error }) --Used to underline "Error" diagnostics.
set_hl('DiagnosticUnderlineWarn', { fg = c.warning, sp = c.warning }) -- Used to underline "Warn" diagnostics.
set_hl('DiagnosticUnderlineInfo', { fg = c.info, sp = c.info }) -- Used to underline "Info" diagnostics.
set_hl('DiagnosticUnderlineHint', { fg = c.hint, sp = c.hint }) -- Used to underline "Hint" diagnostics.
set_hl('DiagnosticUnderlineOk', { fg = c.cyan, sp = c.cyan }) -- Used to underline "Ok" diagnostics.
-- set_hl('DiagnosticFloatingError') -- Used to color "Error" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingWarn') -- Used to color "Warn" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingInfo') -- Used to color "Info" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingHint') -- Used to color "Hint" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticFloatingOk') -- Used to color "Ok" diagnostic messages in diagnostics float.
-- set_hl('DiagnosticSignError') -- Used for "Error" signs in sign column.
-- set_hl('DiagnosticSignWarn') -- Used for "Warn" signs in sign column.
-- set_hl('DiagnosticSignInfo') -- Used for "Info" signs in sign column.
-- set_hl('DiagnosticSignHint') -- Used for "Hint" signs in sign column.
-- set_hl('DiagnosticSignOk') -- Used for "Ok" signs in sign column.
-- set_hl('DiagnosticDeprecated') -- Used for deprecated or obsolete code.
-- set_hl('DiagnosticUnnecessary') -- Used for unnecessary or unused code.
end

View file

@ -1,109 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
if config.transparent then
set_hl('ColorColumn', { bg = c.base02 }) -- used for columns
else
set_hl('ColorColumn', { bg = base04 }) -- used for columns
end
set_hl('Conceal', { fg = c.blue }) -- placeholder characters
set_hl('CurSearch', { fg = c.base2, bg = c.base02 }) -- highlight under cursor
set_hl('Cursor', { fg = c.base03, bg = c.cyan }) -- character under cursor
set_hl('lCursor', { link = 'Cursor' }) -- character under the cursor
set_hl('CursorIM', { link = 'Cursor' }) -- like cursor, but IME mode
set_hl('CursorColumn', { link = 'ColorColumn' }) -- screen-column at the cursor
set_hl('CursorLine') -- screen-line at the cursor
set_hl('Directory', { fg = c.orange }) -- directory names
set_hl('DiffAdd', { fg = c.add }) -- Added line
set_hl('DiffChange', { fg = c.change }) -- Changed line
set_hl('DiffDelete', { fg = c.base03, bg = c.delete }) -- Deleted line
set_hl('DiffText', { fg = c.blue, reverse = true }) -- Changed Text
set_hl('EndOfBuffer', { fg = c.base03 }) -- Filler lines (~)
set_hl('TermCursor', { link = 'Cursor' }) -- Cursor in a focused terminal
set_hl('TermCursorNC', { fg = c.base03, bg = c.base0 }) -- Cursor in an unfocused terminal
set_hl('ErrorMsg', { fg = c.error }) -- Error messages on the command line
set_hl(
'WinSeparator',
{ fg = c.cyan, bg = base04 },
{ transparent = config.transparent }
) -- Separators between window splits
set_hl('Folded', { fg = c.base0, bg = c.base02 }) -- Line used for closed folds
set_hl('FoldColumn', { fg = c.base0, bg = base04 }) -- 'foldcolumn'
set_hl(
'SignColumn',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Column were signs are displayed
set_hl(
'IncSearch',
{ fg = c.base3, bg = base04, bold = true },
{ transparent = config.transparent }
) -- 'incsearch' highlighting, also for the text replaced
set_hl('Substitute', { fg = c.orange, reverse = true }) -- :substitute replacement text highlight
set_hl(
'LineNr',
{ fg = c.base01, bg = c.base03 },
{ transparent = config.transparent }
) -- Line number for ":number" and ":#" commands
set_hl('LineNrAbove', { link = 'LineNr' }) -- Line number, above the cursor line
set_hl('LineNrBelow', { link = 'LineNr' }) -- Line number, below the cursor
set_hl(
'CursorLineNr',
{ fg = c.base2, bg = c.base03 },
{ transparent = config.transparent }
) -- Like LineNr when 'cursorline' is set
set_hl('CursorLineFold', { link = 'FoldColumn' }) -- Like FoldColumn when 'cursorline' is set
set_hl('CursorLineSign', { link = 'SignColumn' }) -- Like SignColumn when 'cursorline' is set
set_hl('MatchParen', { fg = c.base2 }) -- Character under the cursor or just before it
set_hl('ModeMsg', { link = 'Normal' }) -- 'showmode' message (e.g., "-- INSERT --")
set_hl('MsgArea', { link = 'Normal' }) -- 'Area for messages and cmdline'
set_hl('MsgSeparator', { link = 'Normal' }) -- Separator for scrolled messages msgsep.
set_hl('MoreMsg', { fg = c.cyan }) -- more-prompt
set_hl('NonText', { fg = c.base00 }) -- '@' at the end of the window
set_hl(
'Normal',
{ fg = c.base0, bg = c.base03 },
{ transparent = config.transparent }
) -- Normal text
set_hl('NormalFloat', { fg = c.base0, bg = base04 }) -- Normal text in floating windows
set_hl('FloatBorder', { link = 'WinSeparator' }) -- Border of floating windows.
set_hl('FloatTitle', { fg = c.orange }) -- Title of float windows.
set_hl('NormalNC', { link = 'Normal' }) -- Normal text in non-current windows.
set_hl(
'Pmenu',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
) -- Popup menu: Normal item
set_hl('PmenuSel', { fg = c.base2 }) -- Popup menu: Selected item
set_hl('PmenuKind', { link = 'Pmenu' }) -- Popup menu: Normal item kind
set_hl('PmenuKindSel', { link = 'PmenuSel' }) -- Popup menu: Selected item kind
set_hl('PmenuExtra', { link = 'Pmenu' }) -- Popup menu: Normal item extra text
set_hl('PmenuExtraSel', { link = 'PmenuSel' }) -- Popup menu: Selected item extra text
set_hl('PmenuSbar', { bg = base04 }) -- Popup menu: Scrollbar
set_hl('PmenuThumb', { bg = c.base1 }) -- Popup menu: Thumb of the scrollbar
set_hl('Question', { fg = c.cyan, bg = c.base03 }) -- hit-enter prompt and yes/no questions.
set_hl('QuickFixLine', { fg = c.base0, bg = c.base03 }) -- Current quickfix item in the quickfix window
set_hl('Search', { bg = c.base02 }) -- Last search pattern highlighting
set_hl('SpecialKey', { fg = c.red }) -- Unprintable characters: Text displayed differently from what it really is.
set_hl('SpellBad', { fg = c.error, sp = c.error, underline = true }) -- Word that is not recognized by the spellchecker.
set_hl('SpellCap', { fg = c.hint, sp = c.hint, underline = true }) -- Word that should start with a capital
set_hl('SpellLocal', { fg = c.info, sp = c.info, underline = true }) -- Word that is recognized by the spellchecker as one that is used in another region
set_hl('SpellRare', { fg = c.warning, sp = c.warning, underline = true }) -- Word that is recognized by the spellchecker as one that is hardly ever used.
set_hl('StatusLine', { fg = c.base1, bg = base04 }) -- Status line of current window.
set_hl('StatusLineNC', { fg = c.base00, bg = base04 }) -- Status lines of not-current windows.
set_hl('TabLine', { bg = base04 }) -- Tab pages line, not active tab page label.
set_hl('TabLineFill', { fg = c.base0, bg = base04 }) -- Tab pages line, where there are no labels.
set_hl('TabLineSel', { fg = c.base2, bg = c.base03 }) -- Tab pages line, active tab page label.
set_hl('Title', { fg = c.orange }) -- Titles for output from ":set all", ":autocmd" etc.
set_hl('Visual', { bg = c.base02 }) -- Visual mode selection.
set_hl('VisualNOS', { link = 'Visual' }) -- Visual mode selection when vim is "Not Owning the Selection".
set_hl('WarningMsg', { fg = c.warning }) -- Warning messages.
set_hl('Whitespace', { fg = c.base01 }) -- "nbsp", "space", "tab", "multispace", "lead" and "trail" in 'listchars'.
set_hl('WildMenu', { bg = c.base02 }) -- Current match in 'wildmenu' completion.
set_hl('WinBar', { link = 'Pmenu' }) -- Window bar of current window.
set_hl('WinBarNC', { link = 'WinBar' }) -- Window bar of not-current windows.
end

View file

@ -1,8 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('GitSignsAdd', { fg = c.add }) -- Used for the text of 'add' signs
set_hl('GitSignsChange', { fg = c.change }) -- Used for the text of 'change' signs
set_hl('GitSignsDelete', { fg = c.delete }) -- Used for the text of 'delete' signs
end

View file

@ -1,9 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('HopNextKey', { fg = c.magenta })
set_hl('HopNextKey1', { fg = c.blue })
set_hl('HopNextKey2', { fg = '#1b6294' })
set_hl('HopUnmatched', { fg = c.base01 })
end

View file

@ -1,32 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local darken = colortool.darken
local lighten = colortool.lighten
local set_hl = utils.set_hl
if vim.o.background == 'dark' then
set_hl('IndentBlanklineChar', { fg = darken(c.green, 20) }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.green }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = darken(c.green, 20), nocombine = true })
set_hl('IblScope', { fg = c.green, nocombine = true })
else
set_hl('IndentBlanklineChar', { fg = lighten(c.blue, 20) }) -- Highlight of indent character. Default: Whitespace
set_hl('IndentBlanklineSpaceChar', { link = 'IndentBlanklineChar' }) -- Highlight of space character. Default: Whitespace
set_hl('IndentBlanklineContextChar', { fg = c.blue }) -- Highlight of indent character when base of current context. Default: Label
set_hl(
'IndentBlanklineContextSpaceChar',
{ link = 'IndentBlanklineContextChar' }
) -- Highlight of space characters one indent level of the current context. Default: Label
set_hl('IblIndent', { fg = lighten(c.blue, 20), nocombine = true })
set_hl('IblScope', { fg = c.blue, nocombine = true })
end
-- set_hl('IndentBlanklineSpaceCharBlankline', {}) -- Highlight of space character on blank lines. Default: Whitespace
-- set_hl('IndentBlanklineContextStart', {}) -- Highlight of the first line of the current context. Default: Label
end

View file

@ -1,24 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local darken = colortool.darken
local lighten = colortool.lighten
local set_hl = utils.set_hl
set_hl('LspReferenceText', { link = 'Visual' }) -- used for highlighting "text" references
set_hl('LspReferenceRead', { link = 'Visual' }) -- used for highlighting "read" references
set_hl('LspReferenceWrite', { link = 'Visual' }) -- used for highlighting "write" references
if vim.o.background == 'dark' then
set_hl('LspInlayHint', { fg = darken(c.yellow, 20) }) -- used for highlighting inlay hints
else
set_hl('LspInlayHint', { fg = lighten(c.yellow, 20) })
end
-- if you want to me to enable the highlight groups bellow, please send a screenshot for me to see how
-- they look like or how to config for me to test.
-- set_hl('LspCodelens') -- Used to color the virtual text of the codelens.
-- set_hl('LspCodeLensSeparator') -- Used to color the separator between two or more code lenses.
-- set_hl('LspSignatureActiveParameter') -- Used to highlight the active parameter in the signature help. See
end

View file

@ -1,55 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Float window
set_hl('SagaNormal', { link = 'Pmenu' })
set_hl(
'TitleString',
{ fg = c.orange, bold = true, bg = c.base02 },
{ transparent = config.transparent }
)
-- Outline
set_hl('OutlineIndent', { fg = c.green })
set_hl('SagaWinbarModule', { link = '@namespace' })
set_hl('SagaWinbarInterface', { link = 'Type' })
set_hl('SagaWinbarConstructor', { link = '@constructor' })
set_hl('SagaWinbarStruct', { link = 'Structure' })
set_hl('SagaWinbarObject', { link = '@field' })
set_hl('SagaWinbarUnit', { link = 'Number' })
set_hl('SagaWinbarFile', { fg = c.base0 })
set_hl('SagaWinbarSnippet', { link = 'Keyword' })
set_hl('SagaWinbarText', { fg = c.base1 })
set_hl('SagaWinbarTypeAlias', { link = 'Type' })
set_hl('SagaWinbarEvent', { fg = c.base2 })
set_hl('SagaWinbarParameter', { link = '@parameter' })
set_hl('SagaWinbarKey', { link = '@field' })
set_hl('SagaWinbarValue', { fg = c.base2 })
set_hl('SagaWinbarMacro', { link = 'Macro' })
set_hl('SagaWinbarNumber', { link = 'Number' })
set_hl('SagaWinbarConstant', { link = 'Constant' })
set_hl('SagaWinbarFunction', { link = 'Function' })
set_hl('SagaWinbarEnum', { link = 'Type' })
set_hl('SagaWinbarField', { link = '@field' })
set_hl('SagaWinbarProperty', { link = '@field' })
set_hl('SagaWinbarMethod', { link = 'Function' })
set_hl('SagaWinbarClass', { link = 'Type' })
set_hl('SagaWinbarFolder', { link = 'Directory' })
set_hl('SagaWinbarPackage', { link = 'Directory' })
set_hl('SagaWinbarStaticMethod', { link = 'Function' })
set_hl('SagaWinbarTypeParameter', { link = 'Type' })
set_hl('SagaWinbarEnumMember', { link = 'Constant' })
set_hl('SagaWinbarOperator', { link = 'Operator' })
set_hl('SagaWinbarNull', { link = 'Constant' })
set_hl('SagaWinbarNamespace', { link = '@namespace' })
set_hl('SagaWinbarArray', { link = 'Delimiter' })
set_hl('SagaWinbarBoolean', { link = 'Boolean' })
set_hl('SagaWinbarString', { link = 'String' })
set_hl('SagaWinbarVariable', { link = 'Identifier' })
set_hl('SagaWinbarFilename', { fg = c.base0 })
set_hl('SagaWinbarFolderName', { fg = c.base0 })
set_hl('SagaWinbarFileIcon', { link = 'Directory' })
set_hl('SagaWinbarSep', { link = 'Keyword' })
end

View file

@ -1,38 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- MiniCursor
set_hl('MiniCursorword', { bg = c.base02 })
-- MiniStatusLine
set_hl('MiniStatuslineModeNormal', { fg = c.base03, bg = c.blue })
set_hl('MiniStatuslineModeInsert', { fg = c.base03, bg = c.green })
set_hl('MiniStatuslineModeVisual', { fg = c.base03, bg = c.magenta })
set_hl('MiniStatuslineModeReplace', { fg = c.base03, bg = c.red })
set_hl('MiniStatuslineModeCommand', { fg = c.base03, bg = c.orange })
set_hl('MinistatusLineFileName', { fg = c.base0, bg = c.base02 })
set_hl('MiniStatuslineDevinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineFileinfo', { fg = c.base03, bg = c.base1 })
set_hl('MiniStatuslineInactive', { fg = c.base01, bg = c.base03 })
-- MiniTabLine
set_hl('MiniTablineCurrent', { fg = c.base2, bg = c.base1 })
set_hl('MiniTablineVisible', { fg = c.base2, bg = c.base03 })
set_hl('MiniTablineHidden', { fg = c.base01, bg = c.base03 })
set_hl('MiniTablineModifiedCurrent', { link = 'MiniTabLineCurrent' })
set_hl('MiniTablineModifiedVisible', { link = 'MiniTablineVisible' })
set_hl('MiniTablineModifiedHidden', { link = 'MiniTablineHidden' })
set_hl('MiniTablineFill', { link = 'NormalFloat' })
set_hl('MiniTablineTabpagesection', { link = 'NormalFloat' })
-- MiniStarter
set_hl('MiniStarterCurrent', { link = 'CursorLine' })
set_hl('MiniStarterHeader', { fg = c.base00 })
set_hl('MiniStarterFooter', { fg = c.base00 })
set_hl('MiniStarterItem', { fg = c.base0 })
set_hl('MiniStarterItemBullet', { fg = c.blue })
set_hl('MiniStarterItemPrefix', { fg = c.blue })
set_hl('MiniStarterSection', { link = 'Title' })
set_hl('MiniStarterQuery', { fg = c.magenta, bg = 'NONE', bold = true })
end

View file

@ -1,33 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NavicIconsFile', { fg = c.base00 })
set_hl('NavicIconsModule', { link = '@namespace' })
set_hl('NavicIconsNamespace', { link = '@namespace' })
set_hl('NavicIconsPackage', { link = 'Directory' })
set_hl('NavicIconsClass', { link = 'Type' })
set_hl('NavicIconsMethod', { link = 'Type' })
set_hl('NavicIconsProperty', { link = '@field' })
set_hl('NavicIconsField', { link = '@field' })
set_hl('NavicIconsConstructor', { link = '@constructor' })
set_hl('NavicIconsEnum', { link = 'Type' })
set_hl('NavicIconsInterface', { link = 'Type' })
set_hl('NavicIconsFunction', { link = 'Function' })
set_hl('NavicIconsVariable', { link = 'Identifier' })
set_hl('NavicIconsConstant', { link = 'Constant' })
set_hl('NavicIconsString', { link = 'String' })
set_hl('NavicIconsNumber', { link = 'Number' })
set_hl('NavicIconsBoolean', { link = 'Boolean' })
set_hl('NavicIconsArray', { link = 'Delimiter' })
set_hl('NavicIconsObject', { link = '@field' })
set_hl('NavicIconsKey', { link = '@field' })
set_hl('NavicIconsNull', { link = 'Constant' })
set_hl('NavicIconsEnumMember', { link = 'Constant' })
set_hl('NavicIconsStruct', { link = 'Structure' })
set_hl('NavicIconsEvent', { fg = c.base2 })
set_hl('NavicIconsOperator', { link = 'Operator' })
set_hl('NavicIconsTypeParameter', { link = '@parameter' })
set_hl('NavicText', { fg = c.base1 })
set_hl('NavicSeparator', { link = 'Keyword' })
end

View file

@ -1,27 +0,0 @@
return function(c)
local blend = require('solarized.utils.colors').blend
local utils = require('solarized.utils')
local set_hl = utils.set_hl
local alpha = 0.05
set_hl('NeogitCursorLine', { link = 'CursorLine' })
set_hl('NeogitBranch', { fg = c.magenta })
set_hl('NeogitRemote', { fg = c.violet })
set_hl(
'NeogitHunkHeader',
{ fg = c.orange, bg = blend(c.orange, c.base03, alpha) }
)
set_hl('NeogitHunkHeaderHighlight', { link = 'Title' })
set_hl('NeogitDiffContextHighlight', { fg = c.base00, bg = c.base03 })
set_hl('NeogitDiffContext', { fg = c.base00, bg = c.base03 })
set_hl(
'NeogitDiffDeleteHighlight',
{ fg = c.red, bg = blend(c.red, c.base03, alpha) }
)
set_hl('NeogitDiffDelete', { fg = c.red })
set_hl(
'NeogitDiffAddHighlight',
{ fg = c.green, bg = blend(c.green, c.base03, alpha) }
)
set_hl('NeogitDiffAdd', { fg = c.green })
end

View file

@ -1,28 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local set_hl = utils.set_hl
set_hl('NeoTreeNormal', {
fg = c.base0,
}, { transparent = config.transparent })
set_hl('NeoTreeNormalNC', { link = 'NeoTreeNormal' })
set_hl('NeoTreeEndOfBuffer', { fg = c.base02 })
set_hl('NeoTreeRootName', { link = 'Directory' })
set_hl('NeoTreeFileName', { fg = c.base0 })
set_hl('NeoTreeFileNameOpened', { link = 'Directory' })
set_hl('NeoTreeFloatBorder', { link = 'WinSeparator' })
set_hl('NeoTreeFloatTitle', { link = 'Title' })
set_hl('NeoTreeGitAdded', { fg = c.add, bg = 'NONE' })
set_hl('NeoTreeGitConflict', { fg = c.change })
set_hl('NeoTreeGitDeleted', { fg = c.delete })
set_hl('NeoTreeGitIgnored', { fg = c.base01, italic = true })
set_hl('NeoTreeGitModified', { fg = c.change })
set_hl('NeoTreeGitUnstaged', { fg = c.change })
set_hl('NeoTreeGitUntracked', { fg = c.change })
set_hl('NeoTreeGitStaged', { fg = c.add })
set_hl('NeoTreeIndentMarker', { fg = c.base01 })
set_hl('NeoTreeDotfile', { fg = c.base01 })
set_hl('NeoTreeFileStats', { fg = c.base01 })
set_hl('NeoTreeTitleBar', { fg = darken(c.cyan, 50), bg = c.cyan })
end

View file

@ -1,9 +0,0 @@
return function(c)
local set_hl = require('solarized.utils').set_hl
set_hl('NoiceFormatProgressTodo', { fg = c.base01, reverse = true })
set_hl('NoiceFormatProgressDone', { fg = c.cyan, reverse = true })
set_hl('NoiceLspProgressSpinner', { fg = c.cyan })
set_hl('NoiceLspProgressClient', { fg = c.blue })
set_hl('NoiceLspProgressTitle', { link = 'Title' })
end

View file

@ -1,26 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('NotifyBackground', { bg = c.base03 })
set_hl('NotifyERRORBorder', { fg = c.error })
set_hl('NotifyWARNBorder', { fg = c.warn })
set_hl('NotifyINFOBorder', { fg = c.info })
set_hl('NotifyDEBUGBorder', { fg = c.magenta })
set_hl('NotifyTRACEBorder', { fg = c.violet })
set_hl('NotifyERRORIcon', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNIcon', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOIcon', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGIcon', { link = 'NotifyDEBUGBorder' })
set_hl('NotifyTRACEIcon', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORTitle', { link = 'NotifyERRORBorder' })
set_hl('NotifyWARNTitle', { link = 'NotifyWARNBorder' })
set_hl('NotifyINFOTitle', { link = 'NotifyINFOBorder' })
set_hl('NotifyDEBUGTitle', { link = 'NotifyDEBUGTitle' })
set_hl('NotifyTRACETitle', { link = 'NotifyTRACEBorder' })
set_hl('NotifyERRORBody', { link = 'Normal' })
set_hl('NotifyWARNBody', { link = 'Normal' })
set_hl('NotifyINFOBody', { link = 'Normal' })
set_hl('NotifyDEBUGBody', { link = 'Normal' })
set_hl('NotifyTRACEBody', { link = 'Normal' })
end

View file

@ -1,33 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
-- Default highlight
set_hl('@lsp.type.class', { link = 'Type' }) -- Type
set_hl('@lsp.type.decorator', { link = 'Function' }) -- Function
set_hl('@lsp.type.enum', { link = 'Type' }) -- Type
set_hl('@lsp.type.enumMember', { link = 'Constant' }) -- Constant
set_hl('@lsp.type.function', { link = 'Function' }) -- Function
set_hl('@lsp.type.interface', { link = 'Type' }) -- Type
set_hl('@lsp.type.macro', { link = 'Keyword' }) -- Keyword
set_hl('@lsp.type.method', { link = 'Function' }) -- Function
set_hl('@lsp.type.namespace', { link = 'Constant' }) -- Constant
set_hl(
'@lsp.type.parameter',
{ fg = c.orange, italic = true },
{ styles = config.styles.parameters }
)
set_hl('@lsp.type.property', { fg = c.blue }) -- Property
set_hl('@lsp.type.struct', { link = 'Structure' }) -- Structure
set_hl('@lsp.type.type', { link = 'Type' }) -- Type
set_hl('@lsp.type.typeParameter', { link = 'Type' }) -- Type
set_hl('@lsp.type.variable', { link = 'Identifier' }) -- Identifier
-- Extra highlight
set_hl('@lsp.typemod.variable.defaultLibrary', { link = 'Constant' }) -- ex: "vim".api.nvim_set_hl
set_hl('@lsp.typemod.variable.readonly', { link = 'Constant' }) -- Constant variables ex: const hello = 'Hello World'
set_hl('@lsp.typemod.variable.global', { link = 'Constant' }) -- Global variables ex: HELLO = 'Hello World'
set_hl('@lsp.typemod.keyword.documentation', { link = 'Keyword' }) -- documentation comments
set_hl('@lsp.typemod.class.documentation', { link = 'Type' }) -- documentation comments
set_hl('@lsp.typemod.property.readonly', { link = 'Constant' }) -- Ex: System."out".println()
end

View file

@ -1,44 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl(
'Comment',
{ fg = c.base01, italic = true },
{ styles = config.styles.comments }
) -- any comment
set_hl('Constant', { fg = c.violet }, { styles = config.styles.constants }) -- any constant
set_hl('String', { fg = c.cyan }) -- a string constant: "this is a string"
set_hl('Character', { link = 'String' }) -- a character constant: 'c', '\n'
set_hl('Number', { fg = c.magenta }, { styles = config.styles.numbers }) -- a number constant: 234, 0xff
set_hl('Boolean', { fg = c.violet }) -- a boolean constant: TRUE, false
set_hl('Float', { link = 'Number' }) -- a floating point constant: 2.3e10
set_hl('Identifier', { fg = c.base0 }, { styles = config.styles.variables }) -- any variable name
set_hl('Function', { fg = c.blue }, { styles = config.styles.functions }) -- function name (also: methods for classes)
set_hl('Statement', { link = 'Keyword' }) -- any statement
set_hl('Conditional', { link = 'Keyword' }) -- if, then, else, endif, switch, etc.
set_hl('Repeat', { link = 'Keyword' }) -- for, do, while, etc.
set_hl('Label', { link = 'Keyword' }) -- case, default, etc.
set_hl('Operator', { link = 'Keyword' }) -- "sizeof", "+", "*", etc.
set_hl('Keyword', { fg = c.green }, { styles = config.styles.keywords }) -- any other keyword
set_hl('Exception', { link = 'Keyword' }) -- try, catch, throw
set_hl('PreProc', { link = 'Keyword' }) -- generic Preprocessor
set_hl('Include', { link = 'Keyword' }) -- preprocessor #include
set_hl('Define', { link = 'Keyword' }) -- preprocessor #define
set_hl('Macro', { link = 'Keyword' }) -- same as Define
set_hl('PreCondit', { link = 'Keyword' }) -- preprocessor #if, #else, #endif, etc.
set_hl('Type', { fg = c.yellow }, { styles = config.styles.types }) -- int, long, char, etc.
set_hl('StorageClass', { link = 'Keyword' }) -- static, register, volatile, etc.
set_hl('Structure', { fg = c.yellow }) -- struct, union, enum, etc.
set_hl('Typedef', { link = 'Keyword' }) -- A typedef
set_hl('Special', { fg = c.magenta }) -- special symbol
set_hl('SpecialChar', { fg = c.violet }) -- special character in a constant
set_hl('Tag', { link = 'Special' }) -- you can use CTRL-] on this
set_hl('Delimiter', { fg = c.orange }) -- character that needs attention
set_hl('SpecialComment', { link = 'Keyword' }) -- special things inside a comment
set_hl('Debug', { link = 'Keyword' }) -- debugging statements
set_hl('Underlined', { fg = c.violet, underline = true }) --text that stands out, HTML links
set_hl('Ignore') --left blank, hidden |hl-Ignore|
set_hl('Error', { fg = c.error }) --any erroneous construct
set_hl('Todo', { fg = c.violet }) --anything that needs extra attention; mostly the keywords TODO FIXME and XXX
end

View file

@ -1,45 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('TelescopeSelection', { link = 'CursorLine' })
set_hl('TelescopeSelectionCaret', { fg = c.red })
set_hl('TelescopeMultiSelection', { link = 'Type' })
set_hl('TelescopeMultiIcon', { fg = c.cyan })
-- "Normal" in the floating windows created by telescope.
set_hl(
'TelescopeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('TelescopePreviewNormal', { link = 'TelescopeNormal' })
set_hl('TelescopePromptNormal', { link = 'TelescopeNormal' })
set_hl('TelescopeResultsNormal', { link = 'TelescopeNormal' })
-- Border highlight groups.
-- Use TelescopeBorder to override the default.
-- Otherwise set them specifically
set_hl('TelescopeBorder', { link = 'WinSeparator' })
set_hl('TelescopePromptBorder', { link = 'TelescopeBorder' })
set_hl('TelescopeResultsBorder', { link = 'TelescopeBorder' })
set_hl('TelescopePreviewBorder', { link = 'TelescopeBorder' })
-- Title highlight groups.
-- Use TelescopeTitle to override the default.
-- Otherwise set them specifically
set_hl('TelescopeTitle', { fg = c.blue, reverse = true })
set_hl('TelescopePromptTitle', { link = 'TelescopeTitle' })
set_hl('TelescopeResultsTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePreviewTitle', { link = 'TelescopeTitle' })
set_hl('TelescopePromptCounter', { link = 'NonText' })
-- Used for highlighting characters that you match.
set_hl('TelescopeMatching', { link = 'IncSearch' })
-- Used for the prompt prefix
set_hl('TelescopePromptPrefix', { fg = c.magenta })
end

View file

@ -1,50 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local colortool = require('solarized.utils.colors')
local set_hl = utils.set_hl
local colorFunc
local percentage = 80
if vim.o.background == 'light' then
colorFunc = colortool.lighten
else
colorFunc = colortool.darken
end
-- TODO: TODO
-- WARN: WARN
-- TEST: TEST
-- PERF: PERF
-- NOTE: NOTE
-- HACK: HACK
set_hl('TodoFgTODO', { fg = c.info })
set_hl('TodoFgWARN', { fg = c.warning })
set_hl('TodoFgTEST', { fg = c.violet })
set_hl('TodoFgPERF', { fg = c.magenta })
set_hl('TodoFgNOTE', { fg = c.hint })
set_hl('TodoFgHACK', { fg = c.cyan })
set_hl('TodoFgFIX', { fg = c.error })
set_hl('TodoSignTODO', { fg = c.info })
set_hl('TodoSignWARN', { fg = c.warning })
set_hl('TodoSignTEST', { fg = c.violet })
set_hl('TodoSignPERF', { fg = c.magenta })
set_hl('TodoSignNOTE', { fg = c.hint })
set_hl('TodoSignHACK', { fg = c.cyan })
set_hl('TodoSignFIX', { fg = c.error })
set_hl('TodoBgTODO', { fg = c.info, bg = colorFunc(c.info, percentage) })
set_hl(
'TodoBgWARN',
{ fg = c.warning, bg = colorFunc(c.warning, percentage) }
)
set_hl('TodoBgTEST', { fg = c.violet, bg = colorFunc(c.violet, percentage) })
set_hl(
'TodoBgPERF',
{ fg = c.magenta, bg = colorFunc(c.magenta, percentage) }
)
set_hl('TodoBgNOTE', { fg = c.hint, bg = colorFunc(c.hint, percentage) })
set_hl('TodoBgHACK', { fg = c.cyan, bg = colorFunc(c.cyan, percentage) })
set_hl('TodoBgFIX', { fg = c.error, bg = colorFunc(c.error, percentage) })
end

View file

@ -1,66 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local darken = require('solarized.utils.colors').darken
local base04 = darken(c.base03, 10)
local set_hl = utils.set_hl
set_hl('NvimTreeSymlink', { link = 'Underlined' })
set_hl('NvimTreeSymlinkIcon', { link = 'Directory' })
-- set_hl('NvimTreeSymlinkFolderName') -- (Directory)
set_hl('NvimTreeFolderName', { fg = c.base0 }) -- (Directory)
set_hl('NvimTreeRootFolder', { link = 'Title' })
set_hl('NvimTreeFolderIcon', { link = 'Directory' })
-- set_hl('NvimTreeOpenedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeClosedFolderIcon') -- (NvimTreeFolderIcon)
-- set_hl('NvimTreeFileIcon')
set_hl('NvimTreeEmptyFolderName', { fg = c.base0 }) -- (Directory)
-- set_hl('NvimTreeOpenedFolderName') -- (Directory)
set_hl('NvimTreeExecFile', { link = 'Function' })
set_hl('NvimTreeOpenedFile', { fg = c.orange, bold = true })
set_hl('NvimTreeModifiedFile', { fg = c.change })
set_hl('NvimTreeSpecialFile', { link = 'Special' })
-- set_hl('NvimTreeImageFile')
set_hl('NvimTreeIndentMarker', { fg = c.base01 })
-- set_hl('NvimTreeLspDiagnosticsError') -- (DiagnosticError)
-- set_hl('NvimTreeLspDiagnosticsWarning') -- (DiagnosticWarn)
set_hl('NvimTreeLspDiagnosticsInformation') -- (DiagnosticInfo)
set_hl('NvimTreeLspDiagnosticsHint') -- (DiagnosticHint)
set_hl('NvimTreeGitDirty', { fg = c.change })
set_hl('NvimTreeGitStaged', { fg = c.add })
set_hl('NvimTreeGitMerge', { fg = c.change })
set_hl('NvimTreeGitRenamed', { fg = c.add })
set_hl('NvimTreeGitNew', { fg = c.add })
set_hl('NvimTreeGitDeleted', { fg = c.delete })
-- set_hl('NvimTreeGitIgnored') -- (Comment)
-- set_hl('NvimTreeWindowPicker')
set_hl(
'NvimTreeNormal',
{ fg = c.base0, bg = base04 },
{ transparent = config.transparent }
)
set_hl('NvimTreeNormalFloat', { link = 'NvimTreeNormal' })
set_hl('NvimTreeEndOfBuffer', { fg = base04 }) -- (NonText)
-- set_hl('NvimTreeCursorLine') -- (CursorLine)
-- set_hl('NvimTreeCursorLineNr') -- (CursorLineNr)
-- set_hl('NvimTreeLineNr') -- (LineNr)
set_hl(
'NvimTreeWinSeparator',
{ fg = base04, bg = base04 },
{ transparent = config.transparent }
) -- (WinSeparator)
-- set_hl('NvimTreeCursorColumn') -- (CursorColumn)
--
-- There are also links for file highlight with git properties, linked to their
-- Git equivalent:
--
-- set_hl('NvimTreeFileDirty') -- (NvimTreeGitDirty)
-- set_hl('NvimTreeFileStaged') -- (NvimTreeGitStaged)
-- set_hl('NvimTreeFileMerge') -- (NvimTreeGitMerge)
-- set_hl('NvimTreeFileRenamed') -- (NvimTreeGitRenamed)
-- set_hl('NvimTreeFileNew') -- (NvimTreeGitNew)
-- set_hl('NvimTreeFileDeleted') -- (NvimTreeGitDeleted)
-- set_hl('NvimTreeFileIgnored') -- (NvimTreeGitIgnored)
-- set_hl('NvimTreeLiveFilterPrefix')
-- set_hl('NvimTreeLiveFilterValue')
-- set_hl('NvimTreeBookmark')
end

View file

@ -1,114 +0,0 @@
return function(c, config)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
--[[ Highlight capture names as of nvim-treesitter commit `6806d7a` ]]
--
-- Identifiers
set_hl('@variable', { link = 'Identifier' }) -- various variable names
set_hl('@variable.builtin', { fg = c.violet, italic = true }) -- built-in variable names (e.g. `this`)
set_hl(
'@variable.parameter',
{ fg = c.orange, italic = true },
{ styles = config.styles.parameters }
) -- parameters of a function
set_hl('@variable.member', { fg = c.blue }) -- object and struct fields
set_hl('@constant', { link = 'Constant' }) -- constant identifiers
set_hl('@constant.builtin', { link = 'Constant' }) -- built-in constant values
set_hl('@constant.macro', { link = 'Constant' }) -- constants defined by the preprocessor
set_hl('@module', { fg = c.violet }) -- modules or namespaces
set_hl('@module.builtin', { fg = c.cyan }) -- built-in modules or namespaces
set_hl('@label', { link = 'Label' }) -- GOTO and other labels (e.g. `label:` in C), including heredoc labels
-- Literals
set_hl('@string', { link = 'String' }) -- string literals
set_hl('@string.documentation', { link = 'Comment' }) -- string documenting code (e.g. Python docstrings)
set_hl('@string.regexp', { fg = c.violet }) -- regular expressions
set_hl('@string.escape', { link = 'Keyword' }) -- escape sequences
set_hl('@string.special', { link = 'Constant' }) -- other special strings (e.g. dates)
set_hl('@string.special.symbol', { fg = c.violet }) -- symbols or atoms
set_hl('@string.special.url', { link = 'Underlined' }) -- URIs (e.g. hyperlinks)
set_hl('@string.special.path', { link = 'Underlined' }) -- filenames
set_hl('@character', { link = 'String' }) -- character literals
set_hl('@character.special', { link = 'Constant' }) -- special characters (e.g. wildcards)
set_hl('@character.printf', { fg = c.violet }) -- special characters (e.g. wildcards)
set_hl('@boolean', { link = 'Constant' }) -- boolean literals
set_hl('@number', { link = 'Number' }) -- numeric literals
set_hl('@number.float', { link = 'Number' }) -- floating-point number literals
-- Types
set_hl('@type', { link = 'Type' }) -- type or class definitions and annotations
set_hl('@type.builtin', { link = 'Type' }) -- built-in types
set_hl('@type.definition', { link = 'Type' }) -- identifiers in type definitions (e.g. `typedef <type> <identifier>` in C)
set_hl('@type.qualifier', { link = 'Keyword' }) -- type qualifiers (e.g. `const`)
set_hl('@attribute', { link = 'Function' }) -- attribute annotations (e.g. Python decorators)
set_hl('@property', { link = '@variable.member' }) -- the key in key/value pairs
-- Functions
set_hl('@function', { link = 'Function' }) -- function definitions
set_hl('@function.builtin', { link = 'Function' }) -- built-in functions
set_hl('@function.call', { link = 'Function' }) -- function calls
set_hl('@function.macro', { link = 'Function' }) -- preprocessor macros
set_hl('@function.method', { link = 'Function' }) -- method definitions
set_hl('@function.method.call', { link = 'Function' }) -- method calls
set_hl('@constructor', { fg = c.magenta }) -- constructor calls and definitions
set_hl('@operator', { link = 'Keyword' }) -- symbolic operators (e.g. `+` / `*`)
-- Keywords
set_hl('@keyword', { link = 'Keyword' }) -- keywords not fitting into specific categories
set_hl('@keyword.coroutine', { link = 'Keyword' }) -- keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
set_hl('@keyword.function', { link = 'Keyword' }) -- keywords that define a function (e.g. `func` in Go, `def` in Python)
set_hl('@keyword.operator', { link = 'Keyword' }) -- operators that are English words (e.g. `and` / `or`)
set_hl('@keyword.import', { link = 'Keyword' }) -- keywords for including modules (e.g. `import` / `from` in Python)
set_hl('@keyword.storage', { link = 'Keyword' }) -- modifiers that affect storage in memory or life-time
set_hl('@keyword.repeat', { link = 'Keyword' }) -- keywords related to loops (e.g. `for` / `while`)
set_hl('@keyword.return', { link = 'Keyword' }) -- keywords like `return` and `yield`
set_hl('@keyword.debug', { link = 'Keyword' }) -- keywords related to debugging
set_hl('@keyword.exception', { link = 'Keyword' }) -- keywords related to exceptions (e.g. `throw` / `catch`)
set_hl('@keyword.conditional', { link = 'Keyword' }) -- keywords related to conditionals (e.g. `if` / `else`)
set_hl('@keyword.conditional.ternary', { link = 'Keyword' }) -- ternary operator (e.g. `?` / `:`)
set_hl('@keyword.directive', { link = 'Keyword' }) -- various preprocessor directives & shebangs
set_hl('@keyword.directive.define', { link = 'Keyword' }) -- preprocessor definition directives
-- Punctuations
set_hl('@punctuation.delimiter', { link = 'Delimiter' }) -- delimiters (e.g. `;` / `.` / `,`)
set_hl('@punctuation.bracket', { link = 'Delimiter' }) -- brackets (e.g. `()` / `{}` / `[]`)
set_hl('@punctuation.special', { link = 'Delimiter' }) -- special symbols (e.g. `{}` in string interpolation)
-- Comments
set_hl('@comment', { link = 'Comment' }) -- line and block comments
set_hl('@comment.documentation', { link = 'Comment' }) -- comments documenting code
set_hl('@comment.error', { fg = c.error }) -- error-type comments (e.g. `ERROR`, `FIXME`, `DEPRECATED:`)
set_hl('@comment.warning', { fg = c.warning }) -- warning-type comments (e.g. `WARNING:`, `FIX:`, `HACK:`)
set_hl('@comment.todo', { link = 'Todo' }) -- todo-type comments (e.g. `TODO:`, `WIP:`, `FIXME:`)
set_hl('@comment.note', { fg = c.info }) -- note-type comments (e.g. `NOTE:`, `INFO:`, `XXX`)
-- Markup
set_hl('@markup.strong', { fg = c.yellow }) -- bold text
set_hl('@markup.italic', { fg = c.yellow, italic = true }) -- italic text
set_hl('@markup.strikethrough', { fg = c.base01, strikethrough = true }) -- struck-through text
set_hl('@markup.underline', { link = 'Underlined' }) -- underlined text (only for literal underline markup!)
set_hl('@markup.heading', { link = 'Title' }) -- headings, titles (including markers)
set_hl('@markup.quote', { fg = c.cyan }) -- block quotes
set_hl('@markup.math', { link = 'Number' }) -- math environments (e.g. `$ ... $` in LaTeX)
set_hl('@markup.environment', { fg = c.base0 }) -- environments (e.g. in LaTeX)
set_hl('@markup.link', { link = 'Underlined' }) -- text references, footnotes, citations, etc.
set_hl('@markup.link.label', { link = 'Constant' }) -- link, reference descriptions
set_hl('@markup.link.url', { link = 'Underlined' }) -- URL-style links
set_hl('@markup.raw', { fg = c.base0 }) -- literal or verbatim text (e.g., inline code)
set_hl('@markup.raw.block', { fg = c.base0 }) -- literal or verbatim text as a stand-alone block (use priority 90 for blocks with injections)
set_hl('@markup.list', { link = 'Delimiter' }) -- list markers
set_hl('@markup.list.checked', { link = 'Delimiter' }) -- checked todo-style list markers
set_hl('@markup.list.unchecked', { link = 'Delimiter' }) -- unchecked todo-style list markers
-- Diffs
set_hl('@diff.plus', { fg = c.add }) -- added text (for diff files)
set_hl('@diff.minus', { fg = c.delete }) -- deleted text (for diff files)
set_hl('@diff.delta', { fg = c.change }) -- changed text (for diff files)
-- Tags
set_hl('@tag', { fg = c.green }) -- XML-style tag names (and similar)
set_hl('@tag.attribute', { link = '@variable.member' }) -- XML-style tag attributes
set_hl('@tag.delimiter', { link = 'Delimiter' }) -- XML-style tag delimiters
end

View file

@ -1,12 +0,0 @@
return function(c)
local utils = require('solarized.utils')
local set_hl = utils.set_hl
set_hl('WhichKey', { fg = c.base0 }) -- the key
set_hl('WhichKeyGroup', { fg = c.blue }) -- a group
set_hl('WhichKeySeparator', { fg = c.magenta }) -- the separator between the key and its label
set_hl('WhichKeyDesc', { fg = c.base2 }) -- the label of the key
-- set_hl('WhichKeyFloat') -- Normal in the popup window
-- set_hl('WhichKeyBorder', { link = 'WinSeparator' })
-- set_hl('WhichKeyValue') -- used by plugins that provide values
end

37
lua/solarized/utils.lua Normal file
View file

@ -0,0 +1,37 @@
local function to_hex(decimal)
if type(decimal) ~= 'number' then
return decimal
end
local hex = string.format('#%06x', decimal)
return hex:upper()
end
local function nvim_get_hl(name)
local output = vim.api.nvim_get_hl(0, { name = name, link = false })
local t = {}
for key, value in pairs(output) do
t[key] = to_hex(value)
end
return t
end
local function get_colors()
local config = require('solarized').config
local colors = {}
if vim.o.background == 'dark' then
local palette = require 'solarized.palette'
colors = palette[config.palette]
else
local palette = require 'solarized.palette.solarized-light'
colors = palette[config.palette]
end
return colors
end
return {
get_colors = get_colors,
nvim_get_hl = nvim_get_hl,
}

View file

@ -1,88 +0,0 @@
local M = {}
--- Convert a hexadecimal color code to RGB color values
---
--- @param hex string The hexadecimal color code (e.g., "#RRGGBB" or "RRGGBB")
--- @return number red The red component of the RGB color (0-255)
--- @return number green The green component of the RGB color (0-255)
--- @return number blue The blue component of the RGB color (0-255)
function M.hex_to_rgb(hex)
local red = tonumber(hex:sub(2, 3), 16)
local green = tonumber(hex:sub(4, 5), 16)
local blue = tonumber(hex:sub(6, 7), 16)
return red, green, blue
end
--- Convert rgb to hex
---
--- @param red number
--- @param green number
--- @param blue number
--- @return string color
function M.rgb_to_hex(red, green, blue)
return string.format('#%02x%02x%02x', red, green, blue)
end
--- Darken a color by a given distance
---
--- @param color string The color to be darkened in any valid color format
--- @param percentage number The distance by which the color should be darkened (between 1 and 10)
--- @return string color The resulting darkened color in the same format as the input color
function M.darken(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red * (1 - (percentage / 100) * i),
green = green * (1 - (percentage / 100) * i),
blue = blue * (1 - (percentage / 100) * i),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
--- Lighten a color by a given percentage
---
--- @param color string The color to be lightened in any valid color format
--- @param percentage number The percentage by which the color should be lightened (between 1 and 10)
--- @return string color The resulting lightened color in the same format as the input color
function M.lighten(color, percentage)
local red, green, blue = M.hex_to_rgb(color)
local i = 1
local result = {
red = red + (255 - red) * i * (percentage / 100),
green = green + (255 - green) * i * (percentage / 100),
blue = blue + (255 - blue) * i * (percentage / 100),
}
return M.rgb_to_hex(result.red, result.green, result.blue)
end
--- Blend two colors with a given alpha value
---
--- @param hex_fg string The foreground color in hexadecimal format (e.g., "#RRGGBB")
--- @param hex_bg string The background color in hexadecimal format (e.g., "#RRGGBB")
--- @param alpha number The alpha value between 0 and 1, indicating the blending ratio
--- @return string color The resulting blended color in hexadecimal format
function M.blend(hex_fg, hex_bg, alpha)
local red_bg, green_bg, blue_bg = M.hex_to_rgb(hex_bg)
local red_fg, green_fg, blue_fg = M.hex_to_rgb(hex_fg)
local min = math.min
local max = math.max
local floor = math.floor
local function blend_channel(fg, bg)
local ret = alpha * fg + ((1 - alpha) * bg)
return floor(min(max(0, ret), 255) + 0.5)
end
return M.rgb_to_hex(
blend_channel(red_fg, red_bg),
blend_channel(green_fg, green_bg),
blend_channel(blue_fg, blue_bg)
)
end
return M

View file

@ -1,49 +0,0 @@
local M = {}
--- Sets a highlight group
--- @param name string
--- @param val? table
--- @param opts? table The opts object..
--- - opts.transparent: (boolean) Specifies whether transparency is enabled.
--- - opts.styles: (table) A table of custom styles for various elements.
---@return nil
function M.set_hl(name, val, opts)
local default_val = { fg = 'NONE', bg = 'NONE' }
val = val or {}
if not val.link then val = vim.tbl_extend('force', default_val, val) end
if opts then
if opts.styles then val = vim.tbl_extend('force', val, opts.styles) end
if opts.transparent then val.bg = 'NONE' end
end
vim.api.nvim_set_hl(0, name, val)
end
--- get highlight group
--- @param highlight_name string
--- @return table highlight
function M.get_hl(highlight_name)
local highlight =
vim.api.nvim_get_hl(0, { name = highlight_name, link = true })
if highlight.link then return M.get_hl(highlight.link) end
return highlight
end
--- @param opts table The user-specified custom configuration
--- - fnc (function): callback type configuration
--- - tbl (function): table type configuration
--- @param config (table|function): config to be used
function M.on_config(opts, config)
if type(config) == 'table' and not vim.tbl_isempty(config) then
opts.tbl()
elseif type(config) == 'function' then
opts.fnc()
end
end
return M

View file

@ -1,7 +0,0 @@
local M = {}
function M.to_hex(decimal)
return string.format('#%06x', decimal)
end
return M

View file

@ -0,0 +1,300 @@
local M = {}
---@class solarized_variants.opts
---@field colors solarized.palette
---@field color solarized.color
---@field config solarized.config
---@field nvim_set_hl fun(group_name: string, group_val: vim.api.keyset.highlight, config?: solarized.nvim_set_hl.config)
---@param opts solarized_variants.opts
M.set_variant = function(opts)
local colors, _, config, nvim_set_hl = opts.colors, opts.color, opts.config, opts.nvim_set_hl
if config.variant == 'winter' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.base01, bg = colors.base04 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.base01, bg = colors.base04 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl(
'SignColumn',
{ fg = colors.base1, bg = colors.base02 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base02 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.cyan, bg = colors.mix_cyan, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base01 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.base1, bold = true }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { link = 'Keyword' })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.orange }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.blue })
nvim_set_hl('TagAttribute', { fg = colors.base1 })
nvim_set_hl('TagDelimiter', { fg = colors.base01 })
nvim_set_hl('Delimiter', { fg = colors.base0 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'summer' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base04 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.cyan, bg = colors.base04 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base03 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.yellow, bg = colors.mix_yellow, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base01 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { fg = colors.magenta })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Number' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.yellow }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { fg = colors.orange })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.red }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.red })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.red })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'autumn' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base04 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.cyan, bg = colors.base04 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base03 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.orange, bg = colors.mix_orange, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base01 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { fg = colors.magenta })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Number' })
nvim_set_hl('Identifier', { fg = colors.base0 }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { fg = colors.orange })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.yellow }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.green })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.orange })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'spring' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base04 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.cyan, bg = colors.base04 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base03 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.magenta, bg = colors.mix_magenta, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base01 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.magenta }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { link = 'Keyword' })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.yellow }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.magenta })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.base01 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
end
end
return M

View file

@ -0,0 +1,294 @@
local M = {}
---@param opts solarized_variants.opts
M.set_variant = function(opts)
local colors, _, config, nvim_set_hl = opts.colors, opts.color, opts.config, opts.nvim_set_hl
if config.variant == 'winter' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.cyan, bg = colors.base4 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.cyan, bg = colors.base4 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_blue, bg = colors.blue })
nvim_set_hl(
'SignColumn',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'LineNr',
{ fg = colors.base01, bg = colors.base2 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.cyan, bg = colors.mix_cyan, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base1 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.magenta }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.base01, bold = true }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { fg = colors.orange })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.yellow }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.blue })
nvim_set_hl('TagAttribute', { fg = colors.violet })
nvim_set_hl('TagDelimiter', { fg = colors.base1 })
nvim_set_hl('Delimiter', { fg = colors.base00 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'summer' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.blue, bg = colors.base4 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.blue, bg = colors.base4 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_cyan, bg = colors.cyan })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base1, bg = colors.base3 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.yellow, bg = colors.mix_yellow, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base1 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.magenta }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.yellow }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { fg = colors.orange })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.red }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.red })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.red })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'autumn' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.blue, bg = colors.base4 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.blue, bg = colors.base4 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_cyan, bg = colors.cyan })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base1, bg = colors.base3 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.orange, bg = colors.mix_orange, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base1 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.magenta }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.base00 }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.green }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { fg = colors.orange })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.yellow }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.green })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.orange })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
elseif config.variant == 'spring' then
nvim_set_hl(
'WinSeparator',
{ fg = colors.blue, bg = colors.base4 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl('FloatBorder', { fg = colors.blue, bg = colors.base4 }, {
transparent = config.transparent.enabled,
})
nvim_set_hl('FloatTitle', { fg = colors.mix_cyan, bg = colors.cyan })
nvim_set_hl('SignColumn', { link = 'Normal' })
nvim_set_hl(
'LineNr',
{ fg = colors.base1, bg = colors.base3 },
{ transparent = config.transparent.enabled }
)
nvim_set_hl(
'CursorLineNr',
{ fg = colors.magenta, bg = colors.mix_magenta, bold = true },
{ transparent = config.transparent.enabled }
)
-- SYNTAX :h group-name
-- Property, Parameter, TagAttribute, TagDelimiter <-- custom
nvim_set_hl('Comment', { fg = colors.base1 }, { styles = config.styles.comments })
nvim_set_hl('Constant', { fg = colors.violet }, { styles = config.styles.constants })
nvim_set_hl('String', { fg = colors.cyan }, { styles = config.styles.strings })
nvim_set_hl('Character', { link = 'String' })
nvim_set_hl('Number', { link = 'Constant' })
nvim_set_hl('Boolean', { link = 'Constant' })
nvim_set_hl('Float', { link = 'Constant' })
nvim_set_hl('Identifier', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl('Property', { fg = colors.blue }, { styles = config.styles.variables })
nvim_set_hl(
'Parameter',
{ fg = colors.blue, italic = true },
{ styles = config.styles.variables }
)
nvim_set_hl('Function', { fg = colors.blue }, { styles = config.styles.functions })
nvim_set_hl('Statement', { fg = colors.magenta }, { styles = config.styles.statements })
nvim_set_hl('Conditional', { link = 'Statement' })
nvim_set_hl('Repeat', { link = 'Statement' })
nvim_set_hl('Label', { link = 'Statement' })
nvim_set_hl('Operator', { link = 'Statement' })
nvim_set_hl('Keyword', { fg = colors.green }, { styles = config.styles.keywords })
nvim_set_hl('Exception', { link = 'Statement' })
nvim_set_hl('Include', { link = 'Keyword' })
nvim_set_hl('Define', { link = 'Include' })
nvim_set_hl('Macro', { link = 'Include' })
nvim_set_hl('PreProc', { link = 'Include' })
nvim_set_hl('PreCondit', { link = 'Statement' })
nvim_set_hl('Type', { fg = colors.yellow }, { styles = config.styles.types })
nvim_set_hl('StorageClass', { link = 'Statement' })
nvim_set_hl('Structure', { link = 'Type' })
nvim_set_hl('Typedef', { link = 'Statement' })
nvim_set_hl('Special', { fg = colors.violet })
nvim_set_hl('SpecialChar', { fg = colors.violet })
nvim_set_hl('Tag', { fg = colors.magenta })
nvim_set_hl('TagAttribute', { fg = colors.blue })
nvim_set_hl('TagDelimiter', { link = 'Delimiter' })
nvim_set_hl('Delimiter', { fg = colors.base1 })
nvim_set_hl('SpecialComment', { link = 'Statement' })
nvim_set_hl('Debug', { fg = colors.magenta })
nvim_set_hl('Underlined', { fg = colors.magenta, underline = true })
nvim_set_hl('Ignore', {})
nvim_set_hl('Error', { fg = colors.diag_error, bold = true })
nvim_set_hl('Todo', { fg = colors.blue })
nvim_set_hl('Added', { fg = colors.git_add })
nvim_set_hl('Changed', { fg = colors.git_modify })
nvim_set_hl('Removed', { fg = colors.git_delete })
end
end
return M

4
makefile Normal file
View file

@ -0,0 +1,4 @@
fmt:
stylua -f ./stylua.toml .
test: fmt
vusted ./tests

View file

@ -1,8 +1,5 @@
vim.api.nvim_create_user_command('Solarized', function(args)
require('solarized.command').load(
args.fargs[1],
vim.list_slice(args.fargs, 2)
)
require('solarized.command').load(args.fargs[1], vim.list_slice(args.fargs, 2))
end, {
range = true,
nargs = '+',

View file

@ -1,7 +1,6 @@
column_width = 80
column_width = 100
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
call_parentheses = "Always"
collapse_simple_statement = "ConditionalOnly"
call_parentheses = "None"

27
test.py
View file

@ -1,27 +0,0 @@
#!/usr/bin/python3
import subprocess
import sys
def run_commands(commands):
for command in commands:
process = subprocess.Popen(command, shell=True)
process.wait()
if __name__ == '__main__':
install_dependencies = False
if len(sys.argv) > 1 and sys.argv[1] == '--install':
install_dependencies = True
commands = []
if install_dependencies:
commands.append('cargo install stylua')
commands.append('sudo luarocks install luacheck')
commands.append('sudo luarocks install vusted')
commands.append('stylua . -f ./stylua.toml')
commands.append('vusted ./tests')
run_commands(commands)

View file

@ -1,19 +0,0 @@
describe('Autocmd', function()
test('Solarized Highlights is being created', function()
vim.cmd.colorscheme('solarized')
local todo = {
'TODO',
'WARN',
'TEST',
'PERF',
'NOTE',
'HACK',
'FIX',
}
for _, name in pairs(todo) do
local output = vim.api.nvim_get_hl(0, { name = 'SolarizedToken' .. name })
assert.is_true(type(output.fg) == 'number')
end
end)
end)

View file

@ -1,47 +0,0 @@
local colorhelper = require('solarized.utils.colors')
local solarized_palette = require('solarized.palette')
describe('Color Conversions', function()
test('Convert hex to RGB', function()
local colors = solarized_palette.get_colors()
local red, green, blue = colorhelper.hex_to_rgb(colors.yellow)
local expect = { red = 181, green = 137, blue = 0 }
assert.are.same(expect.red, red)
assert.are.same(expect.green, green)
assert.are.same(expect.blue, blue)
end)
test('Convert RGB to hex', function()
local colors = solarized_palette.get_colors()
local yellow = { red = 181, green = 137, blue = 0 }
local output = colorhelper.rgb_to_hex(yellow.red, yellow.green, yellow.blue)
local expect = colors.yellow
assert.equals(expect, string.lower(output))
end)
test('Darken the color by percentage', function()
local colors = solarized_palette.get_colors()
local output = colorhelper.darken(colors.green, 100)
local expect = '#000000'
assert.equals(expect, output)
end)
test('Lighten the color by percentage', function()
local colors = solarized_palette.get_colors()
local output = colorhelper.lighten(colors.green, 100)
local expect = '#ffffff'
assert.equals(expect, output)
end)
test('Blend colors', function()
local blend = require('solarized.utils.colors').blend
local alpha = 0.15
local expect = '#27383f'
local output = blend('#73daca', '#1a1b26', alpha)
assert.equals(output, expect)
end)
end)

View file

@ -1,34 +0,0 @@
describe('Configuration', function()
local default_config = require('solarized.config').default_config()
test('Default configuration', function()
local expect = 'table'
assert.equals(expect, type(default_config))
end)
test('Unique configuration table instances', function()
local config1 = require('solarized.config').default_config()
local config2 = require('solarized.config').default_config()
assert.are_not.equals(config1, config2)
end)
test('Extend default configuration', function()
local user_config = {
transparent = true,
styles = {},
}
local config = vim.tbl_deep_extend('force', default_config, user_config)
local expect = 'table'
local expect2 = true
assert.equals(expect, type(config.styles.comments))
assert.equals(expect, type(config.styles.functions))
assert.equals(expect, type(config.styles.variables))
assert.equals(expect, type(config.styles.numbers))
assert.equals(expect, type(config.colors))
assert.equals(expect, type(config.highlights))
assert.equals(expect2, config.transparent)
end)
end)

View file

@ -1,30 +1,23 @@
local utils = require('solarized.utils.test')
local to_hex = utils.to_hex
local nvim_get_hl = require('solarized.utils').nvim_get_hl
describe('Initialization', function()
describe('solarized.load', function()
setup(function()
vim.o.background = 'light'
vim.cmd.colorscheme('solarized')
vim.o.background = 'dark'
vim.cmd.colorscheme 'solarized'
end)
test('Loads without encountering any errors', function()
assert.equal('solarized', vim.g.colors_name)
assert.is_true(vim.o.termguicolors)
test('name', function()
local expected = 'solarized'
assert.equal(expected, vim.g.colors_name)
end)
test('Background is set to light', function()
local output = vim.api.nvim_get_hl(0, { name = 'Normal' })
local expect = '#fdf6e3'
assert.equals(expect, to_hex(output.bg))
test('default config', function()
local config = require 'solarized.config'
assert.True(type(config) == 'table')
end)
test('Selenized is being loaded', function()
require('solarized').setup({ palette = 'selenized' })
vim.cmd.colorscheme('solarized')
local output = vim.api.nvim_get_hl(0, { name = 'Normal' })
local expect = '#fbf3db'
assert.equals(expect, to_hex(output.bg))
test('set_highlight', function()
local Comment = nvim_get_hl 'Comment'
assert.True('#586E75' == Comment.fg)
end)
end)

View file

@ -1,39 +0,0 @@
local solarized_palette = require('solarized.palette')
describe('Palette', function()
test('Extend solarized color palette', function()
local default_colors = solarized_palette.get_colors()
local custom_colors = {
blue2 = '#c7e8f3',
purple = '#cf9aca',
magenta2 = '#8e4162',
}
local output =
solarized_palette.extend_colors(default_colors, custom_colors)
local expect = vim.deepcopy(default_colors)
expect.blue2 = custom_colors.blue2
expect.purple = custom_colors.purple
expect.magenta2 = custom_colors.magenta2
assert.are.same(expect, output)
end)
test(
'Correct any invalid colors when extending the solarized palette',
function()
local default_colors = solarized_palette.get_colors()
local custom_colors = {
white = '#aaaaaaa',
pink = '#cf9',
purple = '#8e4',
}
local output =
solarized_palette.extend_colors(default_colors, custom_colors)
local expect = vim.deepcopy(default_colors)
expect.pink = '#cf9cf9'
expect.purple = '#8e48e4'
assert.are.same(expect, output)
end
)
end)

View file

@ -1,85 +1,72 @@
local solarized_palette = require('solarized.palette')
local utils = require('solarized.utils.test')
local to_hex = utils.to_hex
local nvim_get_hl = require('solarized.utils').nvim_get_hl
describe('Setup', function()
describe('solarized.setup', function()
setup(function()
local solarized = require('solarized')
vim.o.background = 'light'
---@type solarized
local solarized = require 'solarized'
solarized.setup({
theme = 'neo',
colors = function(c, helper)
return {
fg = '#c7e8f3',
bg = '#000',
yellow2 = helper.darken(c.yellow, 20),
}
end,
styles = {
comments = { italic = false, bold = true, underline = true },
functions = { italic = true },
solarized.setup {
transparent = {
enabled = true,
},
highlights = function(c)
styles = {
strings = { italic = true },
comments = { bold = true },
},
on_colors = function()
return {
Normal = { fg = c.fg, bg = c.bg },
Function = { italic = false },
Type = { fg = c.yellow2 },
['@function.builtin'] = { link = 'Special' },
mycolor = '#ffffff',
}
end,
})
vim.cmd.colorscheme('solarized')
on_highlights = function(colors)
return {
---@diagnostic disable-next-line: undefined-field
CustomHighlight = { fg = colors.mycolor },
}
end,
}
vim.cmd 'colorscheme solarized'
end)
test('Customizing Highlight Groups', function()
local colors = solarized_palette.get_colors()
local output1 = vim.api.nvim_get_hl(0, { name = 'Normal' })
local output2 = vim.api.nvim_get_hl(0, { name = 'Function' })
assert.equals('#c7e8f3', to_hex(output1.fg))
assert.equals('#000000', to_hex(output1.bg))
assert.are_not.same(colors.yellow, to_hex(output2.fg))
test('transparent', function()
local normal = nvim_get_hl 'Normal'
assert.falsy(normal.bg)
end)
test('Changing Comment Style', function()
local output = vim.api.nvim_get_hl(0, { name = 'Comment' })
assert.is_true(output.bold)
assert.is_true(output.underline)
assert.is_nil(output.italic)
test('on_colors and on_highlight', function()
local user_group = nvim_get_hl 'CustomHighlight'
local expected = { fg = '#FFFFFF' }
assert.are.same(expected, user_group)
end)
test('Changing Function Style', function()
local output = vim.api.nvim_get_hl(0, { name = 'Function' })
assert.is_true(output.cterm.italic)
test('styles', function()
local strings = nvim_get_hl 'String'
local comments = nvim_get_hl 'Comment'
assert.True(strings.italic)
assert.True(comments.bold)
end)
test(
'Customizable Highlight Groups Without Losing Previous Configuration',
function()
local output = vim.api.nvim_get_hl(0, { name = 'Function' })
local default_colors = solarized_palette.get_colors()
test('styles.enabled', function()
local solarized = require 'solarized'
solarized.setup {
styles = {
enabled = false,
strings = { italic = true },
comments = { bold = true },
},
}
vim.cmd 'colorscheme solarized'
assert.is_nil(output.italic)
assert.equals(default_colors.blue, to_hex(output.fg))
end
)
test('Ability to Change the Default Theme', function()
local colors = solarized_palette.get_colors()
local output = vim.api.nvim_get_hl(0, { name = 'Directory' })
assert.equals(colors.orange, to_hex(output.fg))
local strings = nvim_get_hl 'String'
local comments = nvim_get_hl 'Comment'
assert.Nil(strings.italic)
assert.Nil(comments.bold)
end)
test(
'Function.builtin in linked to special, but doesnt have guifg',
function()
local output = vim.api.nvim_get_hl(0, { name = '@function.builtin' })
local expected = { link = 'Special' }
assert.are.same(expected, output)
end
)
test('nil config', function()
local solarized = require 'solarized'
solarized.setup()
vim.cmd 'colorscheme solarized'
end)
end)