Bundle editor themes and add selective capture and device presets

This commit is contained in:
fi3w0 2026-10-03 23:11:35 +02:00
parent 17b7d978bd
commit 2010b8090e
150 changed files with 7489 additions and 130 deletions

View file

@ -37,7 +37,7 @@ The existing installation has not been changed by creating this repo.
## Start
```sh
git clone --branch v0.1.1 https://git.fiwlabs.dev/fiwdev/Fiw-Gentoo-Dots.git
git clone --branch v0.1.2 https://git.fiwlabs.dev/fiwdev/Fiw-Gentoo-Dots.git
cd Fiw-Gentoo-Dots
./install
```
@ -49,7 +49,8 @@ a final preview. Enter saves without applying. `r` runs the full restore;
`v` enables selected services and `b` deploys the selected bootloader.
`e` updates configs while preserving local edits; `p` opens pending changes
for a diff and individual acceptance. `u` opens config backups for preview
and restoration. Apply actions finish
and restoration. `n` saves a [named device selection](docs/devices.md), available
alongside Stock and Fiw's Ryzen on the preset screen. Apply actions finish
with a [combined report](docs/reports.md) of outcomes and remaining setup.
Linux amd64 includes a verified prebuilt TUI; Git and Python 3.11+ are enough.
Go 1.24+ is the source fallback for changed frontend code or other platforms.
@ -117,6 +118,8 @@ Fish, Kitty and Neovim are usable without KDE or KWin. Fastfetch keeps the
tree layout and purple colours with the built-in Gentoo logo. MangoHud and
Vesktop preferences are included; browser profiles, chat sessions and account
data are excluded. App autostart is a separate optional selection.
Neovim's Catppuccin and VS Code's ayu MiDas themes are bundled with their
respective optional configs, so their styling is available on fresh devices.
Ark, Gwenview and Prism preferences are individually optional too; see
[app configs and requirements](docs/app-configs.md). Each config's required
packages appear in the final preview without changing package selections.
@ -152,6 +155,8 @@ docs/ Setup, decisions and asset credits
```sh
python3 tools/capture.py # recapture only the explicit allowlist
python3 tools/capture.py --config kde-shortcuts # refresh only shortcuts
python3 tools/capture.py --config kitty neovim # refresh only these apps
python3 tools/check-private.py
python3 -m unittest discover -s tests
go test ./...
@ -162,6 +167,7 @@ service presets enable audio, networking, Bluetooth and power profiles for
the next boot/login. See [setup](docs/setup.md) and the [helper list](docs/scripts.md).
Review captures before committing. `local/` and built binaries are ignored.
See [selective recapture](docs/capture.md) for supported selections and pinned assets.
This repo starts with fresh history. Third-party theme/cursor assets retain
their licence notices; overlay ebuilds retain their original notices.

View file

@ -1 +1 @@
0.1.1
0.1.2

View file

@ -1 +1 @@
a14492188be4cbf1bfdda2f793527b07c0168b2e0d36b7f268922a5cb7b0c08c fiw-dots-linux-amd64.gz
98b963755ac7137176b07fa9a94cd340acd1f65d4de9f8d173aea7ea02862548 fiw-dots-linux-amd64.gz

Binary file not shown.

View file

@ -1,12 +1,12 @@
{
"version": "0.1.1",
"source_sha256": "92a1dc2a662d9ec71c0abec3b96078662268ab16f358be6d2617bbcc4baaf324",
"version": "0.1.2",
"source_sha256": "fec416b33a93e3de28faf388d69d6b86c39296715a1a87a6ed32d6fb51c4a36c",
"binaries": {
"linux-amd64": {
"file": "fiw-dots-linux-amd64.gz",
"sha256": "6da013a88843912b105f1e2a956cd094b22cfa853b5d9eeed3b2430c7f7ec798",
"gzip_sha256": "a14492188be4cbf1bfdda2f793527b07c0168b2e0d36b7f268922a5cb7b0c08c",
"size": 3559586
"sha256": "c2856c93808c16c1d9003891beffd368e0c80b7ca965f4ca4e8849912fcfedaa",
"gzip_sha256": "98b963755ac7137176b07fa9a94cd340acd1f65d4de9f8d173aea7ea02862548",
"size": 3567778
}
}
}

147
assets/editor-themes.json Normal file
View file

@ -0,0 +1,147 @@
{
"catppuccin": {
"upstream": "https://github.com/catppuccin/nvim",
"commit": "edefef779ab08ce1a4a404713e3012b0d202bd35",
"root": "configs/neovim/files/.config/nvim/pack/themes/start/catppuccin",
"license": "MIT",
"note": "Runtime colors, lua, after and original LICENSE.md; development files omitted.",
"sha256": {
"LICENSE.md": "814096d2c34cc216c624738a49356f32b7237733b4f7edb0685f4e50ef5074ba",
"after/queries/css/highlights.scm": "9ef978da67df48bd10f63a7e16a3a94786a52fad8623fde6abeb60c15711de9c",
"after/queries/javascript/highlights.scm": "db58666e2f5bd6e4198c600976c4a663a9bcc98b7f971d9e317ea2378d204d0d",
"after/queries/typescript/highlights.scm": "db58666e2f5bd6e4198c600976c4a663a9bcc98b7f971d9e317ea2378d204d0d",
"colors/catppuccin-frappe.lua": "d0b770fdea4ac6f7cf691c4fb7a66d231fc4c135de8fc91cf746d92bc7f7d4bf",
"colors/catppuccin-latte.lua": "90d0000a70dd909847cf453c779eb1175540a3a4a58e1aa2cce85a2b18f86ec4",
"colors/catppuccin-macchiato.lua": "d5f0982bfebce1414a44dcff86167504c3a806d0a69fa335aaa719a80de2269e",
"colors/catppuccin-mocha.lua": "74fb39acf4d305f83bc6bda410f131efb7af3aa3ce386f35ba893e1ad0f47f2c",
"colors/catppuccin-nvim.vim": "d3155fd94ee3859bf085ee68e3e169d9990cfd3d5a96384128b774a15cf20dba",
"colors/catppuccin.lua": "1e1018f7bcdf93d0bb0caedb7ed78968415b4034d9c6a7a677e97d93a33d262c",
"lua/barbecue/theme/catppuccin-frappe.lua": "42bcd5254df562dce48c50abd4064fb47b43f96b87fae770a40be25b8a0999b2",
"lua/barbecue/theme/catppuccin-latte.lua": "b8fe0214831c704a7e6a23a449a439db55bd8763bc3d97574b3f5b1d9001d40e",
"lua/barbecue/theme/catppuccin-macchiato.lua": "21d784621c89fee7f65c1e0487b53cd4714657c53ec6cc8b58a34d32eb6f4b06",
"lua/barbecue/theme/catppuccin-mocha.lua": "0cc2c282aea656e569730e3e46109385cfdb5c134b05f0b9d31fcf6a1881ccb3",
"lua/barbecue/theme/catppuccin-nvim.lua": "83945477aa880778ff313fe8fc57d486886c53629809471a27a2d8253feb400e",
"lua/catppuccin/groups/editor.lua": "34ee0baf52cff0bdc9fe667b80ff92f14bd8664695e96bcea5857c5ac36cf018",
"lua/catppuccin/groups/integrations/aerial.lua": "cb2599cbeb02012a01ff86f153ba71a6512d179a56356f9e752792faaad50331",
"lua/catppuccin/groups/integrations/alpha.lua": "20ffa273938f47611c54af9464da4fcd75e0cf19c9f64e5e57541c662b276f1e",
"lua/catppuccin/groups/integrations/artio.lua": "402c306b0bb6ecc8e65c77c90e7b0d7b883fb5a7f14c0e8299defdfbac9cb93f",
"lua/catppuccin/groups/integrations/avante.lua": "d035a3f0ced7e5a585999d83947ec27b8b2720130d1056d8c5ca13173db97fa7",
"lua/catppuccin/groups/integrations/barbar.lua": "a8c74328e4cd4c1cfc8fb28fd57e986fec4622b822b91a854d98d53b134ec5ca",
"lua/catppuccin/groups/integrations/beacon.lua": "22af2a39673f000c34d1a2151e0f11722e3834b74e9b07f9a79a791b5cdbf2e9",
"lua/catppuccin/groups/integrations/blink_cmp.lua": "8bedb10753b941cfa08514f81d7483e1688faf98b446f2a4ee01aa5645836ecc",
"lua/catppuccin/groups/integrations/blink_indent.lua": "2baacb882dad63b237fb13d4c80f7af5a857167475d0fab3aba2eb48d31d3334",
"lua/catppuccin/groups/integrations/blink_pairs.lua": "48b261f4437d99c39b307cdf81bc2b7606d1be378717cd8e4ba8cbfc6267e14f",
"lua/catppuccin/groups/integrations/buffon.lua": "376cd4344432dd65c3471863ba91a26530a31b064e3e1a53510e3c3c60374e03",
"lua/catppuccin/groups/integrations/cmp.lua": "d2aeff85075583e8427c0e4ddbe4463c1f3e31bd3435603fb6dc0efca79e3cd7",
"lua/catppuccin/groups/integrations/coc_nvim.lua": "19e3ae3a57be79b55d6ea361f40c47acc3bf759d13aaac775881727ae6d3823a",
"lua/catppuccin/groups/integrations/colorful_winsep.lua": "150e5862f68bf758eec4caf7a8e879afae8d7e8919d3888620c5fb2863d3f0e4",
"lua/catppuccin/groups/integrations/copilot_vim.lua": "97fb547d540e7a6bfb151472feac9ceb4f8ac476e41a1b2edb13a9a022381f07",
"lua/catppuccin/groups/integrations/dadbod_ui.lua": "039b52e1a60cf50b6c409a54dcfcb014d6b5e8630a04e26741d9f30bd31caa81",
"lua/catppuccin/groups/integrations/dap.lua": "3bce98869a5cf1dc74b764a489ebda0a0a2dcae74601beaa4b1b6089aa5ec69e",
"lua/catppuccin/groups/integrations/dap_ui.lua": "f85c73431892360006cd83203e261a1047101b4865268092878d331d488b450b",
"lua/catppuccin/groups/integrations/dashboard.lua": "830ce29d174ed6b97e0a4371002f62898639ce40a6705e88e92e496c80b78403",
"lua/catppuccin/groups/integrations/diffview.lua": "9331d113de7cb5f29bd3bb7b968c0c3d25e985aee67031a47c6efeff36ea3697",
"lua/catppuccin/groups/integrations/dropbar.lua": "1ecd99800619649aabb821070a909de0179a71da928d9db6352b183ef2c0835b",
"lua/catppuccin/groups/integrations/fern.lua": "8bb40443fb4894cc387eed3774909e00d829c03817432200b01983a5bb557935",
"lua/catppuccin/groups/integrations/fidget.lua": "61dde6fcfff3f7a28c99cae55ca073485136519c644bf4f72a0be37a8673e6bd",
"lua/catppuccin/groups/integrations/flash.lua": "1655696967541d4affece5542d751e5c75f8905c3a57d31df17b7947a269a601",
"lua/catppuccin/groups/integrations/fzf.lua": "15e3baceb760257106fd2eda566ee0c6264f94647d2f81ff3ee18f22db32f66c",
"lua/catppuccin/groups/integrations/gitgraph.lua": "8e48914515cb256d4c2739837f081956285ef045f8d5a774f53a56341ed673d0",
"lua/catppuccin/groups/integrations/gitgutter.lua": "65c6addaa60723ebbac45b0fc3d9ea01826b31c1f466a96b10b6d169c5c5a2a6",
"lua/catppuccin/groups/integrations/gitsigns.lua": "a9d6bbce752198a2dd4f4fae8fab8896bb84dd5ae7c03d1b09e919df1e0d0e23",
"lua/catppuccin/groups/integrations/grug_far.lua": "09f1e23be01d7e9175638e62387f42f0f928f1c82f69f090b58055eb9f674e52",
"lua/catppuccin/groups/integrations/harpoon.lua": "555387b4a0de62be54264e2adc438cf65ab5509fe0eaee7313306a82debc12ba",
"lua/catppuccin/groups/integrations/headlines.lua": "10f01ab32094733f09dda3c5f7a0effbc57b5e5b995d827899e88d53bb53ca48",
"lua/catppuccin/groups/integrations/hop.lua": "18a9568ca191cf4b9f9f77113d09c101d4f31b7c456ae0da7c0b47068f96b8bf",
"lua/catppuccin/groups/integrations/illuminate.lua": "d886f4d5275849101da9bacdbb4fc9180c2f658251694c63dc16c7bc50fbfcce",
"lua/catppuccin/groups/integrations/indent_blankline.lua": "0c0d72ea4117dc9ca2ecebbd1edb31111521d978a72dc8a93ca2df2cab931d11",
"lua/catppuccin/groups/integrations/leap.lua": "bb972bc3e7249a24a6a9023683070f1af4617bab3e32109621b41218655c6352",
"lua/catppuccin/groups/integrations/lightspeed.lua": "68f3239d64c6d3bd244c03973ff1b80643d9ca0545f8619e037cf6813fb44752",
"lua/catppuccin/groups/integrations/lir.lua": "bd386a9559d87e503a90348ec0dbb4351516c39a58c1eeb97204e33370fba14e",
"lua/catppuccin/groups/integrations/lsp_saga.lua": "eae83c1941bb7b90e1bfb0ac1db5aa130e2c9ada55124175c14b6cb9e8f4b819",
"lua/catppuccin/groups/integrations/lsp_trouble.lua": "7dff289346e6c0e6d82823b4b1ff55f0e7205a109c80f93cf1d74b4c774ec485",
"lua/catppuccin/groups/integrations/markview.lua": "ad1260c16e1b8913e4fb23372c4551d7bfeaa872cd7649adb0c99b71c11f6b14",
"lua/catppuccin/groups/integrations/mason.lua": "9b43638900613003456c515689c80f0d18cfd53daf632e103a21a194c7526277",
"lua/catppuccin/groups/integrations/mini.lua": "b44ea384e1bd8631b86717c6d45dc306abbf3154ab155e6d92a89ffac5bd1d7e",
"lua/catppuccin/groups/integrations/navic.lua": "975b5f57fc26688bf950f10938ac7d9a71c3632d22ffe14c261fc53ca9a1313e",
"lua/catppuccin/groups/integrations/neogit.lua": "31793ba38044ed119d392e03c3b62225400f4a38e6f1d9aad9e6adc0cdf5a67b",
"lua/catppuccin/groups/integrations/neotest.lua": "3f923cc1746f153b1c7ea8522b85cbf2a2e383c1d1f6e75abe2e2d7bc14b858a",
"lua/catppuccin/groups/integrations/neotree.lua": "26a7c4b63f954b4d7241adf4ef6b5ede9d52a34447ebf9bec421292bdcdbfb97",
"lua/catppuccin/groups/integrations/noice.lua": "582c9ecbe0aa3156bc22f9a76d1c160feea0ee895732c43c29552b3c4284028f",
"lua/catppuccin/groups/integrations/notifier.lua": "308faefafbd20d211f4c10a594bebaa3ed4c6c3e904b9eac99bf0fa08c23e36d",
"lua/catppuccin/groups/integrations/notify.lua": "753dd004bceeda176ca14798e369a7f214fbfd78258fb1e52d586d5f2770f4b2",
"lua/catppuccin/groups/integrations/nvim_surround.lua": "eb7ee6e25095af66b95fcd4edb0da68533bbcde73a032c8dcd94a8b80b17a94b",
"lua/catppuccin/groups/integrations/nvimtree.lua": "9fd02398db64403160a0dd74efb312f07c02a9e16780d33057f975eda0017d4f",
"lua/catppuccin/groups/integrations/octo.lua": "aa5e6cd0c0d8212c8bae0552caf3a585cb23694e97f693318b87331a0130b708",
"lua/catppuccin/groups/integrations/overseer.lua": "92bc318a88e5defdb2bcba933f259f15a2110777c7e4369baef02e30631c794a",
"lua/catppuccin/groups/integrations/pounce.lua": "9cea987d67ed8be8b96a44ad033aa891db28e2efd071969f73c1729fed7cddc4",
"lua/catppuccin/groups/integrations/rainbow_delimiters.lua": "1a62382dc80d7229beb0b3856fc398c2cfca7966556540694f6359e1ba4279a1",
"lua/catppuccin/groups/integrations/render_markdown.lua": "214d1d388e3b9042cae9d1115c7c26b443a1914fab64eed1f5a336c3c31fa37e",
"lua/catppuccin/groups/integrations/sandwich.lua": "ae4d4dedf4bd8e28e98055b02ef2f45d3a4386314028399142805d6d8fffba1e",
"lua/catppuccin/groups/integrations/signify.lua": "b614ae4abfd8db355c0b4be5d35d97eb07b46f20705962c4c086024bf0c5581b",
"lua/catppuccin/groups/integrations/snacks.lua": "9d505961e771340009d4d2f8727d6e4ad0d210db35860d48c4c1a310f3e1fcdf",
"lua/catppuccin/groups/integrations/symbols_outline.lua": "f23afaea70c8af25af5cc3e484b61f0addcc223612119dc06f82ed22d4e60895",
"lua/catppuccin/groups/integrations/telekasten.lua": "3ee8c1253c232c9541f932c07fc14164371d10248278378b5a2a37f1b9f83471",
"lua/catppuccin/groups/integrations/telescope.lua": "92f86988ac114c2b8bc985df034223306c486b1998cf8b829f35bc131f55568d",
"lua/catppuccin/groups/integrations/treesitter_context.lua": "e34887fc9eb755d2b2a205c650dac452bcd626777d58060fd863b8a3501a8fd9",
"lua/catppuccin/groups/integrations/ts_rainbow.lua": "14c47153066db7402dd8746aa1f220d13c05a6851f5baf60b883238bec8a542f",
"lua/catppuccin/groups/integrations/ts_rainbow2.lua": "0653536e22b227b80cb91b5019382cb088436c0aaf20ee7cb12f38263c47d184",
"lua/catppuccin/groups/integrations/ufo.lua": "8defc9c1cda22e12a6159c9d5ef877791395d503b46f3f31598bac89ced44a67",
"lua/catppuccin/groups/integrations/vim_sneak.lua": "e9bbfa98082602cd3ad5dac35b82599004b843810d2630c6ba9a061a99b4abf3",
"lua/catppuccin/groups/integrations/vimwiki.lua": "74c4368d697672c7785b7067e3f0c4295820e7bd26bfa6270c64e0f5e0d79706",
"lua/catppuccin/groups/integrations/which_key.lua": "231cfd466f8ad2daf9924bf4fe51a8f511e755bbc99bc093e156b40f4143ffb5",
"lua/catppuccin/groups/integrations/window_picker.lua": "937409a7c27fbf684b16bb7cc9f70873883a81c8d27c34c36414e91dbc566be8",
"lua/catppuccin/groups/lsp.lua": "9652febc3ed5114357f264b699d1a3ee820f05a781654674518b884ea9618d4c",
"lua/catppuccin/groups/semantic_tokens.lua": "ffcda7ae73b7ce6220a44bf43d013aea2be26c4870d0fd76a7beaf558afd60fd",
"lua/catppuccin/groups/syntax.lua": "7f1d30a72e2dca94a38ab35aff861953082c8012a41217abf349c1799f0b989c",
"lua/catppuccin/groups/terminal.lua": "2625a84419e9001a93256d7cd1bb1279d62c6a8a29c1ba2c05718b213801ee71",
"lua/catppuccin/groups/treesitter.lua": "5b5b0ca4da48f0650d9ec3866fd6b0805526dfc26c7fb88d5dff6a1752d428a0",
"lua/catppuccin/init.lua": "967b784814cfe5bea69a32b0c7d582f57485281290fc83faaa3a1defb2a7cfec",
"lua/catppuccin/lib/compiler.lua": "596f6331c052fec9999b8ef59c3159eba4bc5dfb40c4ca9c1c8c6b512c953161",
"lua/catppuccin/lib/detect_integrations.lua": "3bc529be585cd3c2dbffbc03d08fce8e209fa2eb06d27846d411c9a621c8a6e7",
"lua/catppuccin/lib/hashing.lua": "16a43b210468c5b37bd472036e776c110dba472be2cbcb0cf7d87368a7ac01a7",
"lua/catppuccin/lib/highlighter.lua": "03f3e558454d7e875fb9c9d157d7adc31999b168cf2ad73e2d974831baef482d",
"lua/catppuccin/lib/hsluv.lua": "d6835861b08b504e1c928d129adc2b7005a6553c2ed3207ec73e7c05909f6671",
"lua/catppuccin/lib/mapper.lua": "35993d791f42451b2f51d8eba03b28a5083b92585ea9f179c0dd38ad9419cc96",
"lua/catppuccin/palettes/frappe.lua": "9c07fdf3dda5bea178c0d7d9d7c7c1902517aeb56d924888935c51520bfa0e04",
"lua/catppuccin/palettes/init.lua": "8a3bf0ac9f2b9ff0f6f77f904d593e7da6b6b6132e93b8e824b4c20dcc0f6323",
"lua/catppuccin/palettes/latte.lua": "77972e16f8e73209e4a493469eddcc7532d5a9c767f446646ebab2736d125ab1",
"lua/catppuccin/palettes/macchiato.lua": "c7fcca540b7216137dc02e434f5b735332ccd30be8a2f4199237664acefcca66",
"lua/catppuccin/palettes/mocha.lua": "28963db88a817fb69a658c9859b2638e18d1175423e3d82df747b9a10660274c",
"lua/catppuccin/special/bufferline.lua": "56d7ac16d4f20580a288095bf6a4fa662f1334ffaa3c1f292576d8841da53340",
"lua/catppuccin/special/feline.lua": "30ce5edb9a2bfe18afe6243dee3e674003853c0cbc831ea0fc35825f5523a789",
"lua/catppuccin/types.lua": "27d70ce2a5e910b24a7b703647218c9066985928ad8c7a13d3c33bb5d6cd2558",
"lua/catppuccin/utils/barbecue.lua": "a967d799a795320b4ffcb33509d561900a50c352aae8d9fa356110b117b77530",
"lua/catppuccin/utils/colors.lua": "ce2ca2fd987bcaca257cc279b2df1c3b0ba484158e05ff3b8ae1f6a5ed4e6ae3",
"lua/catppuccin/utils/integration_mappings.lua": "38bdeb2cf7f7ca82a247b2a00da3560c2f855028b1c3394802b09414f3f41774",
"lua/catppuccin/utils/lualine.lua": "232ff22bbf79fff54af9395700a77ea45539a701a7d31886f729eaa7b2d2e957",
"lua/catppuccin/utils/reactive.lua": "05041a21d60ccbe02d9708c36831b796b6fb9b7a5c4347b636fc11293ee167ad",
"lua/lualine/themes/catppuccin-frappe.lua": "3249e12158dd4d8d747cb4fc276091374d323bc3a3d8dd8ea063c0cc09972dcf",
"lua/lualine/themes/catppuccin-latte.lua": "7b0dd2b09f33210d3d5b40b975de308f911754927b9d42b25dd3677b13f933bb",
"lua/lualine/themes/catppuccin-macchiato.lua": "39bd6d9ee7ffac4f8ffa1a3ed4f7306f3528ea6e25747d1ee4130ab8d1dc81c4",
"lua/lualine/themes/catppuccin-mocha.lua": "a0d78b086265ef72a5b9bce9cd0d77ff6aa5d792c4e05c6327adbb220b1608f1",
"lua/lualine/themes/catppuccin-nvim.lua": "7b16272fc6edf1e4f523073282d6a7ed22946f634392979d9aae5e8bfd050a71",
"lua/reactive/presets/catppuccin-frappe-cursor.lua": "5b784baca79d58766d45e24628105142c4578bfe609aef439cee2e50106f7e82",
"lua/reactive/presets/catppuccin-frappe-cursorline.lua": "98c9bd0d187ca3447185f1d29793d80aa30ed301483bdd7343b22feb23e989de",
"lua/reactive/presets/catppuccin-latte-cursor.lua": "d497c9d390114965a6cb470d2ab8e30117bee89d9abb1e8200e654dbdf510e4e",
"lua/reactive/presets/catppuccin-latte-cursorline.lua": "faa2da25887b83075bf87a32309e7653dc04405f659d0b48ab240bacb2d40b09",
"lua/reactive/presets/catppuccin-macchiato-cursor.lua": "513447dbe885e313bff1aa0d0f2acb06cdc5d6c833a3751092491259d77d1c7d",
"lua/reactive/presets/catppuccin-macchiato-cursorline.lua": "0d8061edc51c62fa302645724916857655e788c1d5e6f2419f550410280f9780",
"lua/reactive/presets/catppuccin-mocha-cursor.lua": "1e8f2afaee7d5a1a7bf2388931fa5e83338045e49231a905cef1837ead401f82",
"lua/reactive/presets/catppuccin-mocha-cursorline.lua": "313422042f9872b2533ced2b0ff8b79de46cb0b03454a4537b390b0762912750"
}
},
"ayu-midas": {
"upstream": "https://github.com/qyurila/ayu-midas-vscode",
"commit": "8ce96d6002e7327be1aaf41a01f6106041517c8e",
"root": "configs/vscode/files/.vscode/extensions/qyurila.ayu-midas-1.1.0",
"version": "1.1.0",
"license": "MIT",
"note": "Original theme JSON and LICENSE with a runtime-only extension manifest; no JavaScript entry point.",
"sha256": {
"LICENSE": "e0af0e0d1754c18ca075649d42f5c6d9a60f8bdc03c20dfd97105f2253a94173",
"ayu-midas.json": "72dea34c4cfc7c5e993e95fd3c412277dc72bbb386584a1c69812c0c6beb5e5f",
"package.json": "05dedf22ea1d4ac7949370412b6c9b180a233c518105383f2fd80f7dc8eb7491"
}
}
}

View file

@ -48,6 +48,7 @@ type catalog struct {
Services map[string]setupOption `json:"services"`
Stock selection `json:"stock"`
Ryzen selection `json:"ryzen"`
Devices map[string]selection `json:"devices"`
}
type row struct {
id, label string
@ -84,6 +85,7 @@ type model struct {
done, loading bool
proposalID, proposalStatus string
proposals []proposalChoice
deviceName string
}
func contains(values []string, target string) bool {
@ -104,6 +106,21 @@ func (m *model) prepare() {
if m.selection.Profile == "fiw-ryzen" {
m.cursor = 1
}
ids := make([]string, 0, len(m.catalog.Devices))
for id := range m.catalog.Devices {
ids = append(ids, id)
}
sort.Strings(ids)
for _, id := range ids {
selected := m.selection.Name == id
m.rows = append(m.rows, row{"device:" + id, "Device: " + id + " (" + m.catalog.Devices[id].Profile + ")", selected})
if selected {
for i := range m.rows[:len(m.rows)-1] {
m.rows[i].checked = false
}
m.cursor = len(m.rows) - 1
}
}
case 1:
for _, id := range m.catalog.Groups {
label := id
@ -153,6 +170,17 @@ func (m *model) prepare() {
}
}
}
func (m *model) choosePreset() {
id := m.rows[m.cursor].id
switch id {
case "stock":
m.selection = m.catalog.Stock
case "fiw-ryzen":
m.selection = m.catalog.Ryzen
default:
m.selection = m.catalog.Devices[strings.TrimPrefix(id, "device:")]
}
}
func (m *model) remember() {
switch m.stage {
case 1:
@ -327,12 +355,39 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
case tea.KeyMsg:
key := v.String()
if key == "ctrl+c" || key == "q" {
if key == "ctrl+c" || (key == "q" && m.stage != 10) {
return m, tea.Quit
}
if m.loading {
return m, nil
}
if m.stage == 10 {
switch v.Type {
case tea.KeyEsc:
m.stage = 5
m.errorText = ""
case tea.KeyBackspace, tea.KeyDelete:
if len(m.deviceName) > 0 {
m.deviceName = m.deviceName[:len(m.deviceName)-1]
}
case tea.KeyRunes:
for _, character := range strings.ToLower(string(v.Runes)) {
if len(m.deviceName) < 48 && ((character >= 'a' && character <= 'z') || (character >= '0' && character <= '9') || (len(m.deviceName) > 0 && (character == '-' || character == '_'))) {
m.deviceName += string(character)
}
}
m.errorText = ""
case tea.KeyEnter:
if m.deviceName == "" {
m.errorText = "Enter a device preset name."
return m, nil
}
m.selection.Name = m.deviceName
m.action, m.done = "n", true
return m, tea.Quit
}
return m, nil
}
if m.stage == 5 || m.stage == 7 || m.stage == 9 {
switch key {
case "up", "k":
@ -372,6 +427,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.errorText = ""
return m, m.loadProposals()
}
case "n":
if m.stage == 5 && m.errorText == "" {
m.stage = 10
m.deviceName = ""
}
case "enter", "s", "a", "e", "i", "f", "v", "b", "r":
if m.errorText == "" {
if m.stage == 7 {
@ -442,11 +502,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
break
}
if m.stage == 0 {
if m.rows[m.cursor].id == "stock" {
m.selection = m.catalog.Stock
} else {
m.selection = m.catalog.Ryzen
}
m.choosePreset()
m.prepare()
} else {
id := m.rows[m.cursor].id
@ -470,11 +526,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
case "enter":
if m.stage == 0 {
if m.rows[m.cursor].id == "stock" {
m.selection = m.catalog.Stock
} else {
m.selection = m.catalog.Ryzen
}
m.choosePreset()
}
m.remember()
m.stage++
@ -498,8 +550,11 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
func (m model) View() string {
const purple = "\033[38;2;157;143;217m"
const reset = "\033[0m"
titles := []string{"Preset", "Package sections", "Optional app configs", "Kernel, bootloader and extras", "Flatpaks and optional services", "Final preview", "Config backups", "Restore backup preview", "Pending config updates", "Config update diff"}
titles := []string{"Preset", "Package sections", "Optional app configs", "Kernel, bootloader and extras", "Flatpaks and optional services", "Final preview", "Config backups", "Restore backup preview", "Pending config updates", "Config update diff", "Save device preset"}
text := purple + " Fiw-Gentoo-Dots\n" + reset + " " + titles[m.stage] + " · " + m.selection.Name + "\n\n"
if m.stage == 10 {
return text + " Name: " + m.deviceName + "_\n\n Up to 48 lowercase letters, digits, hyphens or underscores.\n Saves your selection locally. Existing names ask before replacement.\n\n Enter save · Esc back · Ctrl+C cancel\n " + m.errorText + "\n"
}
budget := m.height - 10
if budget < 5 {
budget = 5
@ -525,7 +580,7 @@ func (m model) View() string {
text += "\n ↑/↓ scroll · Esc back · Enter accept with confirmation · q cancel\n"
}
} else {
text += "\n ↑/↓ scroll · Esc back · Enter save · r full restore · a configs · e update configs\n i packages · f Flatpaks · v services · b bootloader\n p pending updates · u config backups · q cancel\n"
text += "\n ↑/↓ scroll · Esc back · Enter save · n save device · r full restore\n a configs · e update configs · i packages · f Flatpaks · v services\n b bootloader · p pending updates · u config backups · q cancel\n"
}
if m.errorText != "" {
text += " " + m.errorText + "\n"
@ -671,6 +726,12 @@ func main() {
var actionErr error
workflow := "restore"
switch final.action {
case "n":
if err := run("--save-device", false, final.deviceName); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
return
case "a":
workflow = "configs"
actionErr = run("--apply-configs", false)

View file

@ -163,3 +163,45 @@ func TestConfigUpdateIsASeparateAction(t *testing.T) {
t.Fatal("config update action was lost")
}
}
func TestNamedDeviceKeepsItsSelections(t *testing.T) {
device := selection{Name: "portable", Profile: "stock", Groups: []string{"cli"}, Configs: []string{"neovim"}, Kernel: "binary", Bootloader: "keep"}
m := model{catalog: catalog{Stock: selection{Name: "Stock", Profile: "stock"}, Ryzen: selection{Name: "Ryzen", Profile: "fiw-ryzen"}, Devices: map[string]selection{"portable": device}}, selection: device}
m.prepare()
if m.cursor != 2 || !m.rows[2].checked || m.rows[0].checked {
t.Fatal("saved device is not selected in the preset chooser")
}
next, _ := m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if m.stage != 1 || len(m.selection.Groups) != 1 || !contains(m.selection.Configs, "neovim") || m.selection.Name != "portable" {
t.Fatal("device choices were replaced by the stock preset")
}
}
func TestDeviceNameAcceptsQAndRequiresExplicitSave(t *testing.T) {
m := model{stage: 5}
next, _ := m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'n'}})
m = next.(model)
if m.stage != 10 || m.done {
t.Fatal("n must open the name input without saving")
}
next, command := m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'q'}})
m = next.(model)
if command != nil || m.deviceName != "q" {
t.Fatal("q should be accepted as part of a device name")
}
next, _ = m.Update(tea.KeyMsg{Type: tea.KeyEnter})
m = next.(model)
if !m.done || m.action != "n" || m.selection.Name != "q" {
t.Fatal("explicit named-device save was lost")
}
}
func TestDeviceNameEscapeDoesNotSave(t *testing.T) {
m := model{stage: 10, deviceName: "discard"}
next, command := m.Update(tea.KeyMsg{Type: tea.KeyEsc})
m = next.(model)
if m.stage != 5 || m.done || command != nil {
t.Fatal("cancelled device input saved a selection")
}
}

View file

@ -71,7 +71,7 @@
"packages": [
"app-editors/neovim"
],
"note": "Catppuccin is optional; the captured purple highlights also work with the built-in fallback."
"note": "Pinned Catppuccin runtime is bundled; no plugin manager, download or KDE dependency. Purple highlights retain a built-in fallback."
},
"fastfetch": {
"label": "Fastfetch tree layout with Gentoo logo",
@ -99,7 +99,8 @@
"group": "fiw-apps",
"packages": [
"app-editors/vscode"
]
],
"note": "Pinned ayu MiDas colour theme is bundled as a user extension; no Marketplace download or compilation."
},
"autostart": {
"label": "Optional application autostart",

View file

@ -1,6 +1,8 @@
-- Colors
vim.opt.termguicolors = true
-- catppuccin is a plugin (not bundled with Neovim); fall back to the built-in dark theme
-- Load the bundled native theme package before applying the captured highlights.
pcall(vim.cmd.packadd, "catppuccin")
-- Keep a built-in fallback if the theme package is intentionally omitted.
if not pcall(vim.cmd.colorscheme, "catppuccin-mocha") then
vim.o.background = "dark"
vim.cmd.colorscheme "default"

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 Catppuccin
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,16 @@
;; extends
[
(class_name)
] @property.class
[
(id_name)
] @property.id
[
(declaration
(plain_value) @string.plain)
]
[
(tag_name)
] @type.tag

View file

@ -0,0 +1,4 @@
;; extends
[
"export"
] @keyword.export

View file

@ -0,0 +1,4 @@
;; extends
[
"export"
] @keyword.export

View file

@ -0,0 +1 @@
require("catppuccin").load "frappe"

View file

@ -0,0 +1 @@
require("catppuccin").load "latte"

View file

@ -0,0 +1 @@
require("catppuccin").load "macchiato"

View file

@ -0,0 +1 @@
require("catppuccin").load "mocha"

View file

@ -0,0 +1 @@
lua require("catppuccin").load()

View file

@ -0,0 +1 @@
require("catppuccin").load()

View file

@ -0,0 +1 @@
return require "catppuccin.utils.barbecue" "frappe"

View file

@ -0,0 +1 @@
return require "catppuccin.utils.barbecue" "latte"

View file

@ -0,0 +1 @@
return require "catppuccin.utils.barbecue" "macchiato"

View file

@ -0,0 +1 @@
return require "catppuccin.utils.barbecue" "mocha"

View file

@ -0,0 +1 @@
return require "catppuccin.utils.barbecue"()

View file

@ -0,0 +1,118 @@
local M = {}
function M.get()
local pumsolid = O.float.solid
if vim.fn.has "nvim-0.12" == 1 then pumsolid = vim.o.pumborder == "solid" end
return {
ColorColumn = { bg = C.surface0 }, -- used for the columns set with 'colorcolumn'
Conceal = { fg = C.overlay1 }, -- placeholder characters substituted for concealed text (see 'conceallevel')
Cursor = { fg = C.base, bg = C.rosewater }, -- character under the cursor
lCursor = { fg = C.base, bg = C.rosewater }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
CursorIM = { fg = C.base, bg = C.rosewater }, -- like Cursor, but used when in IME mode |CursorIM|
CursorColumn = { bg = C.mantle }, -- Screen-column at the cursor, when 'cursorcolumn' is set.
CursorLine = {
bg = U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
}, -- Screen-line at the cursor, when 'cursorline' is set. Low-priority if forecrust (ctermfg OR guifg) is not set.
Dimmed = { fg = C.overlay1 },
Directory = { fg = C.blue }, -- directory names (and other special names in listings)
EndOfBuffer = { fg = C.surface1 }, -- filler lines (~) after the end of the buffer. By default, this is highlighted like |hl-NonText|.
ErrorMsg = { fg = C.red, style = { "bold", "italic" } }, -- error messages on the command line
VertSplit = { fg = O.transparent_background and C.surface1 or C.crust }, -- the column separating vertically split windows
Folded = { fg = C.blue, bg = O.transparent_background and C.none or C.surface1 }, -- line used for closed folds
FoldColumn = { fg = C.overlay0 }, -- 'foldcolumn'
SignColumn = { fg = C.surface1 }, -- column where |signs| are displayed
SignColumnSB = { bg = C.crust, fg = C.surface1 }, -- column where |signs| are displayed
Substitute = { bg = C.surface1, fg = U.vary_color({ latte = C.red }, C.pink) }, -- |:substitute| replacement text highlighting
LineNr = { fg = C.surface1 }, -- Line number for ":number" and ":#" commands, and when 'number' or 'relativenumber' option is set.
CursorLineNr = { fg = C.lavender }, -- Like LineNr when 'cursorline' or 'relativenumber' is set for the cursor line. highlights the number in numberline.
MatchParen = { fg = C.peach, bg = U.darken(C.surface1, 0.70, C.base), style = { "bold" } }, -- The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt|
ModeMsg = { fg = C.text, style = { "bold" } }, -- 'showmode' message (e.g., "-- INSERT -- ")
-- MsgArea = { fg = C.text }, -- Area for messages and cmdline, don't set this highlight because of https://github.com/neovim/neovim/issues/17832
MsgSeparator = { link = "WinSeparator" }, -- Separator for scrolled messages, `msgsep` flag of 'display'
MoreMsg = { fg = C.blue }, -- |more-prompt|
NonText = { fg = C.overlay0 }, -- '@' at the end of the window, characters from 'showbreak' and other characters that do not really exist in the text (e.g., ">" displayed when a double-wide character doesn't fit at the end of the line). See also |hl-EndOfBuffer|.
Normal = { fg = C.text, bg = O.transparent_background and C.none or C.base }, -- normal text
NormalNC = {
fg = C.text,
bg = (O.transparent_background and O.dim_inactive.enabled and C.dim)
or (O.dim_inactive.enabled and C.dim)
or (O.transparent_background and C.none)
or C.base,
}, -- normal text in non-current windows
NormalSB = { fg = C.text, bg = C.crust }, -- normal text in non-current windows
NormalFloat = { fg = C.text, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle }, -- Normal text in floating windows.
FloatBorder = O.float.solid
and ((O.float.transparent and vim.o.winblend == 0) and { fg = C.surface2, bg = C.none } or {
fg = C.mantle,
bg = C.mantle,
})
or { fg = C.blue, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle },
FloatTitle = O.float.solid and {
fg = C.crust,
bg = C.lavender,
} or { fg = C.subtext0, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle }, -- Title of floating windows
FloatShadow = { bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.overlay0, blend = 80 },
FloatShadowThrough = {
bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.overlay0,
blend = 100,
},
OkMsg = { fg = C.green }, -- success messages on the command line
Pmenu = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = C.overlay2,
}, -- Popup menu: normal item.
PmenuBorder = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = pumsolid and ((O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle) or C.blue,
}, -- Popup menu: border
PmenuSel = { bg = C.surface0, style = { "bold" } }, -- Popup menu: selected item.
PmenuMatch = { fg = C.text, style = { "bold" } }, -- Popup menu: matching text.
PmenuMatchSel = { style = { "bold" } }, -- Popup menu: matching text in selected item; is combined with |hl-PmenuMatch| and |hl-PmenuSel|.
PmenuSbar = { bg = C.surface0 }, -- Popup menu: scrollbar.
PmenuThumb = { bg = C.overlay0 }, -- Popup menu: Thumb of the scrollbar.
PmenuKind = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
fg = C.blue,
}, -- Popup menu: item kind. Background and style must match `Pmenu`.
PmenuKindSel = { bg = C.surface0, fg = C.blue, style = { "bold" } }, -- Popup menu: selected item kind. Background and style must match `PmenuSel`.
PmenuExtra = { fg = C.overlay0 }, -- Popup menu: normal item extra text.
PmenuExtraSel = {
bg = C.surface0,
fg = C.overlay0,
style = { "bold" },
}, -- Popup menu: selected item extra text.
ComplMatchIns = { link = "PreInsert" }, -- Matched text of the currently inserted completion.
PreInsert = { fg = C.overlay2 }, -- Text inserted when "preinsert" is in 'completeopt'.
ComplHint = { fg = C.subtext0 }, -- Virtual text of the currently selected completion.
ComplHintMore = { link = "Question" }, -- The additional information of the virtual text.
Question = { fg = C.blue }, -- |hit-enter| prompt and yes/no questions
QuickFixLine = { bg = U.darken(C.surface1, 0.70, C.base), style = { "bold" } }, -- Current |quickfix| item in the quickfix window. Combined with |hl-CursorLine| when the cursor is there.
Search = { bg = U.darken(C.sky, 0.30, C.base), fg = C.text }, -- Last search pattern highlighting (see 'hlsearch'). Also used for similar items that need to stand out.
IncSearch = { bg = U.darken(C.sky, 0.90, C.base), fg = C.mantle }, -- 'incsearch' highlighting; also used for the text replaced with ":s///c"
CurSearch = { bg = C.red, fg = C.mantle }, -- 'cursearch' highlighting: highlights the current search you're on differently
SpecialKey = { link = "NonText" }, -- Unprintable characters: text displayed differently from what it really is. But not 'listchars' textspace. |hl-Whitespace|
SpellBad = { sp = C.red, style = { "undercurl" } }, -- Word that is not recognized by the spellchecker. |spell| Combined with the highlighting used otherwise.
SpellCap = { sp = C.yellow, style = { "undercurl" } }, -- Word that should start with a capital. |spell| Combined with the highlighting used otherwise.
SpellLocal = { sp = C.blue, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is used in another region. |spell| Combined with the highlighting used otherwise.
SpellRare = { sp = C.green, style = { "undercurl" } }, -- Word that is recognized by the spellchecker as one that is hardly ever used. |spell| Combined with the highlighting used otherwise.
StatusLine = { fg = C.text, bg = O.transparent_background and C.none or C.mantle }, -- status line of current window
StatusLineNC = { fg = C.surface1, bg = O.transparent_background and C.none or C.mantle }, -- status lines of not-current windows Note: if this is equal to "StatusLine" Vim will use "^^^" in the status line of the current window.
TabLine = { bg = C.crust, fg = C.overlay0 }, -- tab pages line, not active tab page label
TabLineFill = { bg = O.transparent_background and C.none or C.mantle }, -- tab pages line, where there are no labels
TabLineSel = { link = "Normal" }, -- tab pages line, active tab page label
TermCursor = { fg = C.base, bg = C.rosewater }, -- cursor in a focused terminal
TermCursorNC = { fg = C.base, bg = C.overlay2 }, -- cursor in unfocused terminals
Title = { fg = C.blue, style = { "bold" } }, -- titles for output from ":set all", ":autocmd" etc.
Visual = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection
VisualNOS = { bg = C.surface1, style = { "bold" } }, -- Visual mode selection when vim is "Not Owning the Selection".
WarningMsg = { fg = C.yellow }, -- warning messages
Whitespace = { fg = C.surface1 }, -- "nbsp", "space", "tab" and "trail" in 'listchars'
WildMenu = { bg = C.overlay0 }, -- current match in 'wildmenu' completion
WinBar = { fg = C.rosewater },
WinBarNC = { link = "WinBar" },
WinSeparator = { fg = O.transparent_background and C.surface1 or C.crust },
}
end
return M

View file

@ -0,0 +1,38 @@
local M = {}
M.url = "https://github.com/stevearc/aerial.nvim"
function M.get()
return {
AerialLine = { fg = C.yellow, bg = C.none },
AerialGuide = { fg = C.overlay2 },
AerialBooleanIcon = { link = "@boolean" },
AerialClassIcon = { link = "@type" },
AerialConstantIcon = { link = "@constant" },
AerialConstructorIcon = { link = "@constructor" },
AerialFieldIcon = { link = "@field" },
AerialFunctionIcon = { link = "@function" },
AerialMethodIcon = { link = "@method" },
AerialNamespaceIcon = { link = "@namespace" },
AerialNumberIcon = { link = "@number" },
AerialOperatorIcon = { link = "@operator" },
AerialTypeParameterIcon = { link = "@type" },
AerialPropertyIcon = { link = "@property" },
AerialStringIcon = { link = "@string" },
AerialVariableIcon = { link = "@constant" },
AerialEnumMemberIcon = { link = "@field" },
AerialEnumIcon = { link = "@type" },
AerialFileIcon = { link = "@text.uri" },
AerialModuleIcon = { link = "@namespace" },
AerialPackageIcon = { link = "@namespace" },
AerialInterfaceIcon = { link = "@type" },
AerialStructIcon = { link = "@type" },
AerialEventIcon = { link = "@type" },
AerialArrayIcon = { link = "@constant" },
AerialObjectIcon = { link = "@type" },
AerialKeyIcon = { link = "@type" },
AerialNullIcon = { link = "@type" },
}
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
M.url = "https://github.com/goolord/alpha-nvim"
function M.get()
return {
AlphaShortcut = { fg = C.green },
AlphaHeader = { fg = C.blue },
AlphaHeaderLabel = { fg = C.peach },
AlphaButtons = { fg = C.lavender },
AlphaFooter = { fg = C.yellow, style = { "italic" } },
}
end
return M

View file

@ -0,0 +1,26 @@
local M = {}
M.url = "https://github.com/comfysage/artio.nvim"
function M.get()
local transparent_background = O.transparent_background
return {
ArtioNormal = {
fg = C.text,
bg = transparent_background and "NONE" or C.mantle,
},
ArtioSel = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
ArtioMatch = { fg = C.blue },
ArtioPointer = { fg = C.flamingo },
ArtioPrompt = { fg = C.blue },
ArtioMark = { fg = C.yellow },
ArtioMarkLine = { link = "Visual" },
}
end
return M

View file

@ -0,0 +1,71 @@
local M = {}
M.url = "https://github.com/yetone/avante.nvim"
function M.get()
local rounded = O.integrations.avante.windows_sidebar_header_rounded
return {
-- titles
AvanteTitle = rounded and { bg = C.lavender, fg = C.base } or { fg = C.lavender },
AvanteReversedTitle = rounded and { bg = C.none, fg = C.lavender } or { fg = C.lavender },
AvanteSubtitle = rounded and { bg = C.peach, fg = C.base } or { fg = C.peach },
AvanteReversedSubtitle = rounded and { bg = C.none, fg = C.peach } or { fg = C.peach },
AvanteThirdTitle = rounded and { bg = C.blue, fg = C.base } or { fg = C.blue },
AvanteReversedThirdTitle = rounded and { bg = C.none, fg = C.blue } or { fg = C.blue },
-- hints
AvanteInlineHint = { fg = C.overlay0 },
AvantePopupHint = { fg = C.overlay0 },
AvanteAnnotation = { fg = C.overlay0 },
AvanteSuggestion = { fg = C.overlay0 },
-- conflicts
AvanteConflictCurrent = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.green,
},
AvanteConflictCurrentLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.green,
},
AvanteConflictIncoming = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.blue,
},
AvanteConflictIncomingLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.blue,
},
AvanteConflictAncestor = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.teal,
},
AvanteConflictAncestorLabel = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.teal,
},
AvanteToBeDeleted = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.red,
},
AvanteSidebarWinSeparator = {
link = "WinSeparator",
},
AvantePromptInput = {
link = "FloatNormal",
},
AvantePromptInputBorder = {
link = "FloatBorder",
},
}
end
return M

View file

@ -0,0 +1,27 @@
local M = {}
M.url = "https://github.com/romgrk/barbar.nvim"
function M.get()
return {
BufferCurrent = { bg = C.surface1, fg = C.text },
BufferCurrentIndex = { bg = C.surface1, fg = C.blue },
BufferCurrentMod = { bg = C.surface1, fg = C.yellow },
BufferCurrentSign = { bg = C.surface1, fg = C.blue },
BufferCurrentTarget = { bg = C.surface1, fg = C.red },
BufferVisible = { bg = C.mantle, fg = C.text },
BufferVisibleIndex = { bg = C.mantle, fg = C.blue },
BufferVisibleMod = { bg = C.mantle, fg = C.yellow },
BufferVisibleSign = { bg = C.mantle, fg = C.blue },
BufferVisibleTarget = { bg = C.mantle, fg = C.red },
BufferInactive = { bg = C.mantle, fg = C.overlay0 },
BufferInactiveIndex = { bg = C.mantle, fg = C.overlay0 },
BufferInactiveMod = { bg = C.mantle, fg = C.yellow },
BufferInactiveSign = { bg = C.mantle, fg = C.blue },
BufferInactiveTarget = { bg = C.mantle, fg = C.red },
BufferTabpages = { bg = C.mantle, fg = C.none },
BufferTabpage = { bg = C.mantle, fg = C.blue },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
M.url = "https://github.com/DanilaMihailov/beacon.nvim"
function M.get()
return {
Beacon = { bg = C.blue },
}
end
return M

View file

@ -0,0 +1,62 @@
local M = {}
M.url = "https://github.com/saghen/blink.cmp"
function M.get()
local style = O.integrations.blink_cmp.style
local highlights = {
BlinkCmpLabel = { fg = C.overlay2 },
BlinkCmpLabelDeprecated = { fg = C.overlay0, style = { "strikethrough" } },
BlinkCmpKind = { fg = C.blue },
BlinkCmpMenu = { link = "Pmenu" },
BlinkCmpDoc = { link = "NormalFloat" },
BlinkCmpLabelMatch = { link = "PmenuMatch" },
BlinkCmpMenuSelection = { bg = C.surface1, style = { "bold" } },
BlinkCmpScrollBarGutter = { bg = C.surface1 },
BlinkCmpScrollBarThumb = { bg = C.overlay0 },
BlinkCmpLabelDescription = { link = "PmenuExtra" },
BlinkCmpLabelDetail = { link = "PmenuExtra" },
BlinkCmpSignatureHelpBorder = { link = "FloatBorder" },
BlinkCmpKindText = { fg = C.green },
BlinkCmpKindMethod = { fg = C.blue },
BlinkCmpKindFunction = { fg = C.blue },
BlinkCmpKindConstructor = { fg = C.blue },
BlinkCmpKindField = { fg = C.green },
BlinkCmpKindVariable = { fg = C.flamingo },
BlinkCmpKindClass = { fg = C.yellow },
BlinkCmpKindInterface = { fg = C.yellow },
BlinkCmpKindModule = { fg = C.blue },
BlinkCmpKindProperty = { fg = C.blue },
BlinkCmpKindUnit = { fg = C.green },
BlinkCmpKindValue = { fg = C.peach },
BlinkCmpKindEnum = { fg = C.yellow },
BlinkCmpKindKeyword = { fg = C.mauve },
BlinkCmpKindSnippet = { fg = C.flamingo },
BlinkCmpKindColor = { fg = C.red },
BlinkCmpKindFile = { fg = C.blue },
BlinkCmpKindReference = { fg = C.red },
BlinkCmpKindFolder = { fg = C.blue },
BlinkCmpKindEnumMember = { fg = C.teal },
BlinkCmpKindConstant = { fg = C.peach },
BlinkCmpKindStruct = { fg = C.blue },
BlinkCmpKindEvent = { fg = C.blue },
BlinkCmpKindOperator = { fg = C.sky },
BlinkCmpKindTypeParameter = { fg = C.maroon },
BlinkCmpKindCopilot = { fg = C.teal },
}
if style == "bordered" then
-- uses FloatBorder.fg and Pmenu.bg
highlights["BlinkCmpMenuBorder"] = {
fg = C.blue,
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or C.mantle,
}
highlights["BlinkCmpDocBorder"] = { link = "FloatBorder" }
end
return highlights
end
return M

View file

@ -0,0 +1,28 @@
local M = {}
M.url = "https://github.com/saghen/blink.indent"
function M.get()
return {
BlinkIndent = { fg = C.surface0 },
BlinkIndentScope = { fg = C.overlay2 },
BlinkIndentRed = { fg = C.red },
BlinkIndentOrange = { fg = C.peach },
BlinkIndentYellow = { fg = C.yellow },
BlinkIndentGreen = { fg = C.green },
BlinkIndentCyan = { fg = C.sky },
BlinkIndentBlue = { fg = C.blue },
BlinkIndentViolet = { fg = C.mauve },
BlinkIndentRedUnderline = { sp = C.red, style = { "underline" } },
BlinkIndentOrangeUnderline = { sp = C.peach, style = { "underline" } },
BlinkIndentYellowUnderline = { sp = C.yellow, style = { "underline" } },
BlinkIndentGreenUnderline = { sp = C.green, style = { "underline" } },
BlinkIndentCyanUnderline = { sp = C.sky, style = { "underline" } },
BlinkIndentBlueUnderline = { sp = C.blue, style = { "underline" } },
BlinkIndentVioletUnderline = { sp = C.mauve, style = { "underline" } },
}
end
return M

View file

@ -0,0 +1,19 @@
local M = {}
M.url = "https://github.com/saghen/blink.pairs"
function M.get()
return {
BlinkPairsRed = { fg = C.red },
BlinkPairsYellow = { fg = C.yellow },
BlinkPairsBlue = { fg = C.blue },
BlinkPairsOrange = { fg = C.peach },
BlinkPairsGreen = { fg = C.green },
BlinkPairsPurple = { fg = C.mauve },
BlinkPairsCyan = { fg = C.teal },
BlinkPairsUnmatched = { fg = C.red },
BlinkPairsMatchParen = { link = "MatchParen" },
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
M.url = "https://github.com/francescarpi/buffon.nvim"
function M.get()
return {
BuffonUnloadedBuffer = { fg = C.surface1 },
BuffonShortcut = { fg = C.peach },
BuffonLineActive = { fg = C.sapphire },
BuffonUnsavedIndicator = { fg = C.red },
}
end
return M

View file

@ -0,0 +1,44 @@
local M = {}
M.url = "https://github.com/hrsh7th/nvim-cmp"
function M.get()
return {
CmpItemAbbr = { fg = C.overlay2 },
CmpItemAbbrDeprecated = { fg = C.overlay0, style = { "strikethrough" } },
CmpItemKind = { fg = C.blue },
CmpItemMenu = { fg = C.text },
CmpItemAbbrMatch = { fg = C.text, style = { "bold" } },
CmpItemAbbrMatchFuzzy = { fg = C.text, style = { "bold" } },
-- kind support
CmpItemKindSnippet = { fg = C.mauve },
CmpItemKindKeyword = { fg = C.red },
CmpItemKindText = { fg = C.teal },
CmpItemKindMethod = { fg = C.blue },
CmpItemKindConstructor = { fg = C.blue },
CmpItemKindFunction = { fg = C.blue },
CmpItemKindFolder = { fg = C.blue },
CmpItemKindModule = { fg = C.blue },
CmpItemKindConstant = { fg = C.peach },
CmpItemKindField = { fg = C.green },
CmpItemKindProperty = { fg = C.green },
CmpItemKindEnum = { fg = C.green },
CmpItemKindUnit = { fg = C.green },
CmpItemKindClass = { fg = C.yellow },
CmpItemKindVariable = { fg = C.flamingo },
CmpItemKindFile = { fg = C.blue },
CmpItemKindInterface = { fg = C.yellow },
CmpItemKindColor = { fg = C.red },
CmpItemKindReference = { fg = C.red },
CmpItemKindEnumMember = { fg = C.red },
CmpItemKindStruct = { fg = C.blue },
CmpItemKindValue = { fg = C.peach },
CmpItemKindEvent = { fg = C.blue },
CmpItemKindOperator = { fg = C.blue },
CmpItemKindTypeParameter = { fg = C.blue },
CmpItemKindCopilot = { fg = C.teal },
}
end
return M

View file

@ -0,0 +1,21 @@
local M = {}
M.url = "https://github.com/neoclide/coc.nvim"
function M.get()
return {
-- These groups are for the coc.nvim, see ":h coc-highlights"
-- Custom popup menu since coc v0.0.82
CocMenuSel = { link = "PmenuSel" },
CocPumSearch = { fg = C.sky, style = { "bold" } },
-- Inlay hints
CocInlayHint = {
-- fg of `Comment`
fg = C.overlay0,
style = { "italic" },
},
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
M.url = "https://github.com/nvim-zh/colorful-winsep.nvim"
function M.get()
local color = U.select_color(O.integrations.colorful_winsep.color, "red")
return {
ColorfulWinSep = {
fg = color,
bg = O.transparent_background and C.none or C.base,
},
NvimSeparator = { link = "ColorfulWinSep" },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
M.url = "https://github.com/github/copilot.vim"
function M.get()
return {
CopilotSuggestion = { fg = C.overlay0 },
CopilotAnnotation = { fg = C.blue },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
M.url = "https://github.com/kristijanhusak/vim-dadbod-ui"
function M.get()
return {
NotificationInfo = { fg = C.blue, bg = C.mantle },
NotificationWarning = { fg = C.yellow, bg = C.mantle },
NotificationError = { fg = C.red, bg = C.mantle },
}
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
M.url = "https://github.com/mfussenegger/nvim-dap"
function M.get()
return {
DapBreakpoint = { fg = C.red },
DapBreakpointCondition = { fg = C.yellow },
DapBreakpointRejected = { fg = C.mauve },
DapLogPoint = { fg = C.sky },
DapStopped = { fg = C.maroon },
}
end
return M

View file

@ -0,0 +1,49 @@
local M = {}
M.url = "https://github.com/rcarriga/nvim-dap-ui"
function M.get()
return {
DapUIScope = { fg = C.sky },
DapUIType = { fg = C.mauve },
DapUIValue = { fg = C.sky },
DapUIVariable = { fg = C.text },
DapUIModifiedValue = { fg = C.peach },
DapUIDecoration = { fg = C.sky },
DapUIThread = { fg = C.green },
DapUIStoppedThread = { fg = C.sky },
DapUISource = { fg = C.lavender },
DapUILineNumber = { fg = C.sky },
DapUIFloatBorder = { link = "FloatBorder" },
DapUIWatchesEmpty = { fg = C.maroon },
DapUIWatchesValue = { fg = C.green },
DapUIWatchesError = { fg = C.maroon },
DapUIBreakpointsPath = { fg = C.sky },
DapUIBreakpointsInfo = { fg = C.green },
DapUIBreakpointsCurrentLine = { fg = C.green, style = { "bold" } },
DapUIBreakpointsDisabledLine = { fg = C.surface2 },
DapUIStepOver = { fg = C.blue },
DapUIStepOverNC = { link = "DapUIStepOver" },
DapUIStepInto = { fg = C.blue },
DapUIStepIntoNC = { link = "DapUIStepInto" },
DapUIStepBack = { fg = C.blue },
DapUIStepBackNC = { link = "DapUIStepBack" },
DapUIStepOut = { fg = C.blue },
DapUIStepOutNC = { link = "DapUIStepOut" },
DapUIStop = { fg = C.red },
DapUIStopNC = { link = "DapUIStop" },
DapUIPlayPause = { fg = C.green },
DapUIPlayPauseNC = { link = "DapUIPlayPause" },
DapUIRestart = { fg = C.green },
DapUIRestartNC = { link = "DapUIRestart" },
DapUIUnavailable = { fg = C.surface1 },
DapUIUnavailableNC = { link = "DapUIUnavailable" },
DapUIWinSelect = { fg = C.peach },
}
end
return M

View file

@ -0,0 +1,20 @@
local M = {}
M.url = "https://github.com/nvimdev/dashboard-nvim"
function M.get()
return {
DashboardShortCut = { fg = C.pink },
DashboardHeader = { fg = C.blue },
DashboardCenter = { fg = C.green },
DashboardFooter = { fg = C.yellow, style = { "italic" } },
DashboardMruTitle = { fg = C.sky },
DashboardProjectTitle = { fg = C.sky },
DashboardFiles = { fg = C.lavender },
DashboardKey = { fg = C.peach },
DashboardDesc = { fg = C.blue },
DashboardIcon = { fg = C.pink, bold = true },
}
end
return M

View file

@ -0,0 +1,43 @@
local M = {}
M.url = "https://github.com/sindrets/diffview.nvim"
function M.get()
return {
DiffviewDim1 = { link = "Comment" },
DiffviewPrimary = { fg = C.blue },
DiffviewSecondary = { fg = C.green },
DiffviewNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
DiffviewWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
DiffviewFilePanelTitle = { fg = C.blue, style = { "bold" } },
DiffviewFilePanelCounter = { fg = C.text },
DiffviewFilePanelRootPath = { fg = C.lavender, style = { "bold" } },
DiffviewFilePanelFileName = { fg = C.text },
DiffviewFilePanelSelected = { fg = C.yellow },
DiffviewFilePanelPath = { link = "Comment" },
DiffviewFilePanelInsertions = { fg = C.green },
DiffviewFilePanelDeletions = { fg = C.red },
DiffviewFilePanelConflicts = { fg = C.yellow },
DiffviewFolderName = { fg = C.blue, style = { "bold" } },
DiffviewFolderSign = { fg = C.blue },
DiffviewHash = { fg = C.flamingo },
DiffviewReference = { fg = C.blue, style = { "bold" } },
DiffviewReflogSelector = { fg = C.pink },
DiffviewStatusAdded = { fg = C.green },
DiffviewStatusUntracked = { fg = C.green },
DiffviewStatusModified = { fg = C.yellow },
DiffviewStatusRenamed = { fg = C.yellow },
DiffviewStatusCopied = { fg = C.yellow },
DiffviewStatusTypeChange = { fg = C.yellow },
DiffviewStatusUnmerged = { fg = C.yellow },
DiffviewStatusUnknown = { fg = C.red },
DiffviewStatusDeleted = { fg = C.red },
DiffviewStatusBroken = { fg = C.red },
DiffviewStatusIgnored = { fg = C.overlay0 },
}
end
return M

View file

@ -0,0 +1,71 @@
local M = {}
M.url = "https://github.com/Bekaboo/dropbar.nvim"
function M.get()
local color = O.integrations.dropbar.color_mode
return {
DropBarMenuHoverEntry = { link = "Visual" },
DropBarMenuHoverIcon = { reverse = true },
DropBarMenuHoverSymbol = { bold = true },
DropBarIconUISeparator = { fg = C.overlay1 },
DropBarKindArray = color and { link = "DropBarIconKindArray" } or { fg = C.text },
DropBarKindBoolean = color and { link = "DropBarIconKindBoolean" } or { fg = C.text },
DropBarKindBreakStatement = color and { link = "DropBarIconKindBreakStatement" } or { fg = C.text },
DropBarKindCall = color and { link = "DropBarIconKindCall" } or { fg = C.text },
DropBarKindCaseStatement = color and { link = "DropBarIconKindCaseStatement" } or { fg = C.text },
DropBarKindClass = color and { link = "DropBarIconKindClass" } or { fg = C.text },
DropBarKindConstant = color and { link = "DropBarIconKindConstant" } or { fg = C.text },
DropBarKindConstructor = color and { link = "DropBarIconKindConstructor" } or { fg = C.text },
DropBarKindContinueStatement = color and { link = "DropBarIconKindContinueStatement" } or { fg = C.text },
DropBarKindDeclaration = color and { link = "DropBarIconKindDeclaration" } or { fg = C.text },
DropBarKindDelete = color and { link = "DropBarIconKindDelete" } or { fg = C.text },
DropBarKindDoStatement = color and { link = "DropBarIconKindDoStatement" } or { fg = C.text },
DropBarKindElseStatement = color and { link = "DropBarIconKindElseStatement" } or { fg = C.text },
DropBarKindEnum = color and { link = "DropBarIconKindEnum" } or { fg = C.text },
DropBarKindEnumMember = color and { link = "DropBarIconKindEnumMember" } or { fg = C.text },
DropBarKindEvent = color and { link = "DropBarIconKindEvent" } or { fg = C.text },
DropBarKindField = color and { link = "DropBarIconKindField" } or { fg = C.text },
DropBarKindFile = color and { link = "DropBarIconKindFile" } or { fg = C.text },
DropBarKindFolder = color and { link = "DropBarIconKindFolder" } or { fg = C.text },
DropBarKindForStatement = color and { link = "DropBarIconKindForStatement" } or { fg = C.text },
DropBarKindFunction = color and { link = "DropBarIconKindFunction" } or { fg = C.text },
DropBarKindIdentifier = color and { link = "DropBarIconKindIdentifier" } or { fg = C.text },
DropBarKindIfStatement = color and { link = "DropBarIconKindIfStatement" } or { fg = C.text },
DropBarKindInterface = color and { link = "DropBarIconKindInterface" } or { fg = C.text },
DropBarKindKeyword = color and { link = "DropBarIconKindKeyword" } or { fg = C.text },
DropBarKindList = color and { link = "DropBarIconKindList" } or { fg = C.text },
DropBarKindMacro = color and { link = "DropBarIconKindMacro" } or { fg = C.text },
DropBarKindMarkdownH1 = color and { link = "DropBarIconKindMarkdownH1" } or { fg = C.text },
DropBarKindMarkdownH2 = color and { link = "DropBarIconKindMarkdownH2" } or { fg = C.text },
DropBarKindMarkdownH3 = color and { link = "DropBarIconKindMarkdownH3" } or { fg = C.text },
DropBarKindMarkdownH4 = color and { link = "DropBarIconKindMarkdownH4" } or { fg = C.text },
DropBarKindMarkdownH5 = color and { link = "DropBarIconKindMarkdownH5" } or { fg = C.text },
DropBarKindMarkdownH6 = color and { link = "DropBarIconKindMarkdownH6" } or { fg = C.text },
DropBarKindMethod = color and { link = "DropBarIconKindMethod" } or { fg = C.text },
DropBarKindModule = color and { link = "DropBarIconKindModule" } or { fg = C.text },
DropBarKindNamespace = color and { link = "DropBarIconKindNamespace" } or { fg = C.text },
DropBarKindNull = color and { link = "DropBarIconKindNull" } or { fg = C.text },
DropBarKindNumber = color and { link = "DropBarIconKindNumber" } or { fg = C.text },
DropBarKindObject = color and { link = "DropBarIconKindObject" } or { fg = C.text },
DropBarKindOperator = color and { link = "DropBarIconKindOperator" } or { fg = C.text },
DropBarKindPackage = color and { link = "DropBarIconKindPackage" } or { fg = C.text },
DropBarKindProperty = color and { link = "DropBarIconKindProperty" } or { fg = C.text },
DropBarKindReference = color and { link = "DropBarIconKindReference" } or { fg = C.text },
DropBarKindRepeat = color and { link = "DropBarIconKindRepeat" } or { fg = C.text },
DropBarKindScope = color and { link = "DropBarIconKindScope" } or { fg = C.text },
DropBarKindSpecifier = color and { link = "DropBarIconKindSpecifier" } or { fg = C.text },
DropBarKindStatement = color and { link = "DropBarIconKindStatement" } or { fg = C.text },
DropBarKindString = color and { link = "DropBarIconKindString" } or { fg = C.text },
DropBarKindStruct = color and { link = "DropBarIconKindStruct" } or { fg = C.text },
DropBarKindSwitchStatement = color and { link = "DropBarIconKindSwitchStatement" } or { fg = C.text },
DropBarKindType = color and { link = "DropBarIconKindType" } or { fg = C.text },
DropBarKindTypeParameter = color and { link = "DropBarIconKindTypeParameter" } or { fg = C.text },
DropBarKindUnit = color and { link = "DropBarIconKindUnit" } or { fg = C.text },
DropBarKindValue = color and { link = "DropBarIconKindValue" } or { fg = C.text },
DropBarKindVariable = color and { link = "DropBarIconKindVariable" } or { fg = C.text },
DropBarKindWhileStatement = color and { link = "DropBarIconKindWhileStatement" } or { fg = C.text },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
M.url = "https://github.com/lambdalisue/vim-fern"
function M.get()
return {
FernBranchText = { fg = C.blue },
}
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
M.url = "https://github.com/j-hui/fidget.nvim"
function M.get()
return {
FidgetTask = {
bg = O.transparent_background and C.none or C.mantle,
fg = C.text,
},
FidgetTitle = { fg = C.blue },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
M.url = "https://github.com/folke/flash.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.base
return {
FlashBackdrop = { fg = C.overlay0 },
FlashLabel = { fg = C.green, bg = bg, style = { "bold" } },
FlashMatch = { fg = C.lavender, bg = bg },
FlashCurrent = { fg = C.peach, bg = bg },
FlashPrompt = { link = "NormalFloat" },
}
end
return M

View file

@ -0,0 +1,27 @@
local M = {}
M.url = "https://github.com/ibhagwan/fzf-lua"
function M.get()
return {
FzfLuaNormal = { link = "NormalFloat" },
FzfLuaBorder = { link = "FloatBorder" },
FzfLuaTitle = { link = "FloatTitle" },
FzfLuaHeaderBind = { fg = C.yellow },
FzfLuaHeaderText = { fg = C.peach },
FzfLuaDirPart = { link = "NonText" },
FzfLuaFzfMatch = { fg = C.blue },
FzfLuaFzfPrompt = { fg = C.blue },
FzfLuaPathColNr = { fg = C.blue },
FzfLuaPathLineNr = { fg = C.green },
FzfLuaBufName = { fg = C.mauve },
FzfLuaBufNr = { fg = C.yellow },
FzfLuaBufFlagCur = { fg = C.peach },
FzfLuaBufFlagAlt = { fg = C.blue },
FzfLuaTabTitle = { fg = C.sky },
FzfLuaTabMarker = { fg = C.yellow },
FzfLuaLiveSym = { fg = C.peach },
}
end
return M

View file

@ -0,0 +1,21 @@
local M = {}
M.url = "https://github.com/isakbm/gitgraph.nvim"
function M.get()
return {
GitGraphHash = { fg = C.mauve },
GitGraphTimestamp = { fg = C.lavender },
GitGraphAuthor = { fg = C.flamingo },
GitGraphBranchName = { fg = C.teal },
GitGraphBranchTag = { fg = C.pink },
GitGraphBranchMsg = { fg = C.overlay2 },
GitGraphBranch1 = { fg = C.yellow },
GitGraphBranch2 = { fg = C.pink },
GitGraphBranch3 = { fg = C.sky },
GitGraphBranch4 = { fg = C.green },
GitGraphBranch5 = { fg = C.red },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
M.url = "https://github.com/airblade/vim-gitgutter"
function M.get()
return {
GitGutterAdd = { fg = C.green },
GitGutterChange = { fg = C.yellow },
GitGutterDelete = { fg = C.red },
GitGutterAddLineNr = { fg = C.green },
GitGutterChangeLineNr = { fg = C.yellow },
GitGutterDeleteLineNr = { fg = C.red },
}
end
return M

View file

@ -0,0 +1,44 @@
local M = {}
M.url = "https://github.com/lewis6991/gitsigns.nvim"
function M.get()
local transparent = U.nonnil(O.integrations.gitsigns.transparent, O.transparent_background)
if transparent then
return {
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
GitSignsCurrentLineBlame = { fg = C.surface1 },
GitSignsAddPreview = { fg = C.green, bg = C.none },
GitSignsDeletePreview = { fg = C.red, bg = C.none },
-- for word diff in previews
GitSignsAddInline = { fg = C.base, bg = C.green, style = { "bold" } },
GitSignsDeleteInline = { fg = C.base, bg = C.red, style = { "bold" } },
GitSignsChangeInline = { fg = C.base, bg = C.blue, style = { "bold" } },
GitSignsDeleteVirtLn = { bg = C.none, fg = C.red },
}
else
return {
GitSignsAdd = { fg = C.green }, -- diff mode: Added line |diff.txt|
GitSignsChange = { fg = C.yellow }, -- diff mode: Changed line |diff.txt|
GitSignsDelete = { fg = C.red }, -- diff mode: Deleted line |diff.txt|
GitSignsCurrentLineBlame = { fg = C.surface1 },
GitSignsAddPreview = { link = "DiffAdd" },
GitSignsDeletePreview = { link = "DiffDelete" },
GitSignsAddInline = { bg = U.darken(C.green, 0.36, C.base) },
GitSignsChangeInline = { bg = U.darken(C.blue, 0.14, C.base) },
GitSignsDeleteInline = { bg = U.darken(C.red, 0.36, C.base) },
}
end
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
M.url = "https://github.com/MagicDuck/grug-far.nvim"
function M.get()
return {
GrugFarResultsMatch = { link = "IncSearch" },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
M.url = "https://github.com/ThePrimeagen/harpoon"
function M.get()
return {
HarpoonWindow = { fg = C.text, bg = O.transparent_background and C.none or C.base },
HarpoonBorder = { fg = C.blue },
}
end
return M

View file

@ -0,0 +1,20 @@
local M = {}
M.url = "https://github.com/lukas-reineke/headlines.nvim"
function M.get()
return {
Dash = { fg = C.overlay2, style = { "bold" } },
Quote = { link = "@markup.strong" },
CodeBlock = { bg = C.mantle },
Headline = { link = "Headline1" },
Headline1 = { bg = C.surface0, fg = C.red },
Headline2 = { bg = C.surface0, fg = C.peach },
Headline3 = { bg = C.surface0, fg = C.yellow },
Headline4 = { bg = C.surface0, fg = C.green },
Headline5 = { bg = C.surface0, fg = C.sapphire },
Headline6 = { bg = C.surface0, fg = C.lavender },
}
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
M.url = "https://github.com/hadronized/hop.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.base
return {
HopNextKey = { bg = bg, fg = C.peach, style = { "bold", "underline" } },
HopNextKey1 = { bg = bg, fg = C.blue, style = { "bold" } },
HopNextKey2 = { bg = bg, fg = C.teal, style = { "bold", "italic" } },
HopUnmatched = { bg = bg, fg = C.overlay0 },
}
end
return M

View file

@ -0,0 +1,16 @@
local M = {}
M.url = "https://github.com/RRethy/vim-illuminate"
function M.get()
return {
IlluminatedWordText = { bg = U.darken(C.surface1, 0.7, C.base) },
IlluminatedWordRead = { bg = U.darken(C.surface1, 0.7, C.base) },
IlluminatedWordWrite = {
bg = U.darken(C.surface1, 0.7, C.base),
style = O.integrations.illuminate.lsp and { "standout" } or {},
},
}
end
return M

View file

@ -0,0 +1,26 @@
local M = {}
M.url = "https://github.com/lukas-reineke/indent-blankline.nvim"
function M.get()
local scope_color = U.select_color(O.integrations.indent_blankline.scope_color, "overlay2")
local hi = {
IblIndent = { fg = C.surface0 },
IblScope = { fg = scope_color },
}
if O.integrations.indent_blankline.colored_indent_levels then
hi["RainbowRed"] = { blend = 0, fg = C.red }
hi["RainbowYellow"] = { blend = 0, fg = C.yellow }
hi["RainbowBlue"] = { blend = 0, fg = C.blue }
hi["RainbowOrange"] = { blend = 0, fg = C.peach }
hi["RainbowGreen"] = { blend = 0, fg = C.green }
hi["RainbowViolet"] = { blend = 0, fg = C.mauve }
hi["RainbowCyan"] = { blend = 0, fg = C.teal }
end
return hi
end
return M

View file

@ -0,0 +1,21 @@
local M = {}
M.url = "https://github.com/ggandor/leap.nvim"
function M.get()
return {
LeapMatch = {
fg = O.transparent_background and C.pink or U.vary_color({ latte = "#222222" }, U.brighten(C.green, 0.3)),
style = { "underline", "nocombine", O.transparent_background and "bold" or nil },
},
LeapLabel = {
fg = O.transparent_background and C.green or U.vary_color({ latte = "#222222" }, C.base),
bg = O.transparent_background and C.none
or U.vary_color({ latte = U.brighten(C.red, 0.4) }, U.brighten(C.green, 0.3)),
style = { "nocombine", O.transparent_background and "bold" or nil },
},
LeapBackdrop = { fg = O.transparent_background and C.overlay0 or C.none },
}
end
return M

View file

@ -0,0 +1,29 @@
local M = {}
M.url = "https://github.com/ggandor/lightspeed.nvim"
function M.get()
return {
LightspeedLabel = { fg = C.red, style = { "bold", "underline" } },
LightspeedLabelDistant = {
fg = U.vary_color({ latte = C.blue }, C.sky),
style = { "bold", "underline" },
},
LightspeedShortcut = {
fg = "#ffffff",
bg = U.increase_saturation(C.red, 0.7),
style = { "bold" },
},
LightspeedMaskedChar = {
fg = U.vary_color({ latte = U.lighten(C.pink, 0.7, C.text) }, U.darken(C.pink, 0.7, C.base)),
},
LightspeedUnlabeledMatch = { fg = C.text, style = { "bold" } },
LightspeedGreyWash = { link = "Comment" },
LightspeedUniqueChar = { link = "LightspeedUnlabeledMatch" },
LightspeedOneCharMatch = { link = "LightspeedShortcut" },
LightspeedPendingOpArea = { link = "IncSearch" },
LightspeedCursor = { link = "Cursor" },
}
end
return M

View file

@ -0,0 +1,28 @@
local M = {}
M.url = "https://github.com/tamago324/lir.nvim"
function M.get()
return vim.tbl_deep_extend("force", {}, {
LirFloatNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
LirFloatBorder = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
LirFloatCursorLine = { link = "CursorLine" },
LirDir = { fg = C.blue },
LirSymLink = { fg = C.pink },
LirEmptyDirText = { fg = C.blue },
LirFloatCurdirWindowNormal = { fg = C.text },
LirFloatCurdirWindowDirName = { fg = C.lavender, style = { "bold" } },
}, ((O.integrations.lir and O.integrations.lir.git_status) and {
LirGitStatusBracket = { fg = C.overlay0 },
LirGitStatusIndex = { fg = C.blue },
LirGitStatusWorktree = { fg = C.yellow },
LirGitStatusUnmerged = { fg = C.red },
LirGitStatusUntracked = { fg = C.subtext0 },
LirGitStatusIgnored = { fg = C.subtext0 },
}) or {})
end
return M

View file

@ -0,0 +1,134 @@
local M = {}
M.url = "https://github.com/nvimdev/lspsaga.nvim"
function M.get()
return {
SagaTitle = { fg = C.teal, style = { "bold" } },
SagaBorder = { fg = C.blue, bg = C.none },
SagaNormal = { bg = O.transparent_background and C.none or C.base },
SagaToggle = { fg = C.green },
SagaCount = { fg = C.overlay1 },
SagaBeacon = { bg = U.darken(C.surface0, 0.8, C.crust) },
SagaVirtLine = { fg = C.surface2 },
SagaSpinner = { fg = C.mauve, style = { "bold" } },
SagaSpinnerTitle = { fg = C.mauve, style = { "bold" } },
SagaText = { fg = C.text },
SagaSelect = { fg = C.blue, style = { "bold" } },
SagaSearch = { link = "Search" },
SagaFinderFname = { fg = C.subtext0, style = { "bold" } },
ActionFix = { fg = C.pink },
ActionPreviewTitle = { fg = C.mauve, bg = O.transparent_background and C.none or C.base },
CodeActionText = { fg = C.green },
CodeActionNumber = { fg = C.pink },
SagaImpIcon = { fg = C.pink },
SagaLightBulb = { link = "DiagnosticSignHint" },
RenameNormal = { fg = C.text },
RenameMatch = { link = "Search" },
DiagnosticText = { fg = C.text },
SagaWinbarSep = { fg = C.flamingo },
SagaDetail = { link = "Comment" },
SagaFileName = { fg = C.overlay2, style = { "bold" } },
SagaFolderName = { fg = C.overlay2, style = { "bold" } },
SagaInCurrent = { fg = C.peach },
-- Lspkind icons support
LspKindClass = { fg = C.yellow },
LspKindConstant = { fg = C.peach },
LspKindConstructor = { fg = C.sapphire },
LspKindEnum = { fg = C.yellow },
LspKindEnumMember = { fg = C.teal },
LspKindEvent = { fg = C.yellow },
LspKindField = { fg = C.teal },
LspKindFile = { fg = C.rosewater },
LspKindFunction = { fg = C.blue },
LspKindInterface = { fg = C.yellow },
LspKindKey = { fg = C.red },
LspKindMethod = { fg = C.blue },
LspKindModule = { fg = C.blue },
LspKindNamespace = { fg = C.blue },
LspKindNumber = { fg = C.peach },
LspKindOperator = { fg = C.sky },
LspKindPackage = { fg = C.blue },
LspKindProperty = { fg = C.teal },
LspKindStruct = { fg = C.yellow },
LspKindTypeParameter = { fg = C.blue },
LspKindVariable = { fg = C.peach },
LspKindArray = { fg = C.peach },
LspKindBoolean = { fg = C.peach },
LspKindNull = { fg = C.yellow },
LspKindObject = { fg = C.yellow },
LspKindString = { fg = C.green },
-- ccls-specific icons.
LspKindTypeAlias = { fg = C.green },
LspKindParameter = { fg = C.blue },
LspKindStaticMethod = { fg = C.peach },
-- Microsoft-specific icons.
LspKindText = { fg = C.green },
LspKindSnippet = { fg = C.mauve },
LspKindFolder = { fg = C.blue },
LspKindUnit = { fg = C.green },
LspKindValue = { fg = C.peach },
}
end
function M.custom_kind()
return {
File = { "󰈙 ", "LspKindFile" },
Module = { "", "LspKindModule" },
Namespace = { "󰌗 ", "LspKindNamespace" },
Package = { "󰏖 ", "LspKindPackage" },
Class = { "󰌗 ", "LspKindClass" },
Method = { "", "LspKindMethod" },
Property = { "󰆧 ", "LspKindProperty" },
Field = { "", "LspKindField" },
Constructor = { "", "LspKindConstructor" },
Enum = { "󰒻", "LspKindEnum" },
Interface = { "", "LspKindInterface" },
Function = { "󰊕 ", "LspKindFunction" },
Variable = { "", "LspKindVariable" },
Constant = { "", "LspKindConstant" },
String = { "󰀬 ", "LspKindString" },
Number = { "󰎠 ", "LspKindNumber" },
Boolean = { "", "LspKindBoolean" },
Array = { "󰅪 ", "LspKindArray" },
Object = { "󰅩 ", "LspKindObject" },
Key = { "󰌋 ", "LspKindKey" },
Null = { "", "LspKindNull" },
EnumMember = { "", "LspKindEnumMember" },
Struct = { "󰌗 ", "LspKindStruct" },
Event = { "", "LspKindEvent" },
Operator = { "󰆕 ", "LspKindOperator" },
TypeParameter = { "󰊄 ", "LspKindTypeParameter" },
TypeAlias = { "", "LspKindTypeAlias" },
Parameter = { "", "LspKindParameter" },
StaticMethod = { "󰠄 ", "LspKindStaticMethod" },
Macro = { "", "LspKindMacro" },
Text = { "󰉿 ", "LspKindText" },
Snippet = { "", "LspKindSnippet" },
Folder = { "", "LspKindFolder" },
Unit = { "󰉻 ", "LspKindUnit" },
Value = { "", "LspKindValue" },
}
end
-- Backwards compatibility
function M.custom_colors()
local C = require("catppuccin.palettes").get_palette()
return {
normal_bg = C.base,
title_bg = C.green,
red = C.red,
magenta = C.maroon,
orange = C.peach,
yellow = C.yellow,
green = C.green,
cyan = C.sky,
blue = C.blue,
purple = C.mauve,
white = C.text,
black = C.crust,
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
M.url = "https://github.com/folke/trouble.nvim"
function M.get()
return {
TroubleText = { fg = C.green },
TroubleCount = { fg = C.pink, bg = O.transparent_background and C.none or C.surface1 },
TroubleNormal = { fg = C.text, bg = O.transparent_background and C.none or C.crust },
TroubleNormalNC = { link = "TroubleNormal" },
}
end
return M

View file

@ -0,0 +1,50 @@
local M = {}
M.url = "https://github.com/OXY2DEV/markview.nvim"
-- markview.nvim highlight groups:
-- https://github.com/OXY2DEV/markview.nvim#-highlight-groups
function M.get()
local darkening_percentage = O.transparent_background and U.vary_color({ latte = 0.15 }, 0.28) or 0.095
local blockquote_bg = not O.transparent_background and C.mantle or nil
local groups = {
MarkviewBlockQuoteDefault = { fg = C.overlay2, bg = C.mantle },
MarkviewBlockQuoteError = { fg = C.red, bg = U.darken(C.red, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteNote = { fg = C.blue, bg = U.darken(C.blue, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteOk = { fg = C.green, bg = U.darken(C.green, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteSpecial = { fg = C.mauve, bg = U.darken(C.pink, darkening_percentage, blockquote_bg) },
MarkviewBlockQuoteWarn = { fg = C.yellow, bg = U.darken(C.yellow, darkening_percentage, blockquote_bg) },
MarkviewHyperlink = { link = "@markup.link.url" },
MarkviewCode = { bg = C.mantle },
MarkviewCodeFg = { fg = C.mantle },
MarkviewCodeInfo = { fg = C.overlay2, bg = C.mantle },
MarkviewInlineCode = { bg = C.surface0 },
MarkviewTableHeader = { fg = C.blue },
}
local rainbow = {
[0] = C.overlay2,
[7] = C.mauve,
}
local syntax = require("catppuccin.groups.syntax").get()
for i = 0, 7 do
local color = rainbow[i] or syntax["rainbow" .. i].fg
local bg = U.darken(color, darkening_percentage, C.base)
groups["MarkviewPalette" .. i] = { fg = color, bg = bg }
groups["MarkviewPalette" .. i .. "Fg"] = { fg = color }
groups["MarkviewPalette" .. i .. "Bg"] = { bg = bg }
groups["MarkviewIcon" .. i] = { fg = color, bg = C.mantle }
end
return groups
end
return M

View file

@ -0,0 +1,40 @@
local M = {}
M.url = "https://github.com/mason-org/mason.nvim"
function M.get()
local bg = O.transparent_background and C.none or C.lavender
local fg = O.transparent_background and C.lavender or C.base
local secondary_bg = O.transparent_background and C.none or C.blue
local secondary_fg = O.transparent_background and C.blue or C.base
local muted_bg = O.transparent_background and C.none or C.overlay0
local muted_fg = O.transparent_background and C.overlay0 or C.base
return {
MasonHeader = { fg = fg, bg = bg, style = { "bold" } },
MasonHeaderSecondary = { fg = secondary_fg, bg = secondary_bg, style = { "bold" } },
MasonHighlight = { fg = C.green },
MasonHighlightBlock = {
bg = O.transparent_background and C.none or C.green,
fg = O.transparent_background and C.green or C.base,
},
MasonHighlightBlockBold = { bg = secondary_bg, fg = secondary_fg, bold = true },
MasonHighlightSecondary = { fg = C.mauve },
MasonHighlightBlockSecondary = { fg = secondary_fg, bg = secondary_bg },
MasonHighlightBlockBoldSecondary = { fg = fg, bg = bg, bold = true },
MasonMuted = { fg = C.overlay0 },
MasonMutedBlock = { bg = muted_bg, fg = muted_fg },
MasonMutedBlockBold = { bg = C.yellow, fg = C.base, bold = true },
MasonError = { fg = C.red },
MasonHeading = { fg = C.lavender, bold = true },
}
end
return M

View file

@ -0,0 +1,168 @@
local M = {}
M.url = "https://github.com/echasnovski/mini.nvim"
function M.get()
local transparent_background = O.transparent_background
local bg_highlight = transparent_background and "NONE" or C.base
local inactive_bg = transparent_background and "NONE" or C.mantle
local indentscope_color = U.select_color(O.integrations.mini.indentscope_color, "overlay2")
return {
MiniAnimateCursor = { style = { "reverse", "nocombine" } },
MiniAnimateNormalFloat = { link = "NormalFloat" },
MiniClueBorder = { link = "FloatBorder" },
MiniClueDescGroup = { link = "DiagnosticFloatingWarn" },
MiniClueDescSingle = { link = "NormalFloat" },
MiniClueNextKey = { link = "DiagnosticFloatingHint" },
MiniClueNextKeyWithPostkeys = { link = "DiagnosticFloatingError" },
MiniClueSeparator = { link = "DiagnosticFloatingInfo" },
MiniClueTitle = { link = "FloatTitle" },
MiniCompletionActiveParameter = { style = { "underline" } },
MiniCursorword = { style = { "underline" } },
MiniCursorwordCurrent = { style = { "underline" } },
MiniDepsChangeAdded = { link = "diffAdded" },
MiniDepsChangeRemoved = { link = "diffRemoved" },
MiniDepsHint = { link = "DiagnosticHint" },
MiniDepsInfo = { link = "DiagnosticInfo" },
MiniDepsMsgBreaking = { link = "DiagnosticWarn" },
MiniDepsPlaceholder = { link = "Comment" },
MiniDepsTitle = { link = "Title" },
MiniDepsTitleError = { bg = C.red, fg = C.base },
MiniDepsTitleSame = { link = "DiffText" },
MiniDepsTitleUpdate = { bg = C.green, fg = C.base },
MiniDiffSignAdd = { fg = C.green },
MiniDiffSignChange = { fg = C.yellow },
MiniDiffSignDelete = { fg = C.red },
MiniDiffOverAdd = { link = "DiffAdd" },
MiniDiffOverChange = { link = "DiffText" },
MiniDiffOverContext = { link = "DiffChange" },
MiniDiffOverDelete = { link = "DiffDelete" },
MiniFilesBorder = { link = "FloatBorder" },
MiniFilesBorderModified = { link = "DiagnosticFloatingWarn" },
MiniFilesCursorLine = { link = "CursorLine" },
MiniFilesDirectory = { link = "Directory" },
MiniFilesFile = { fg = C.text },
MiniFilesNormal = { link = "NormalFloat" },
MiniFilesTitle = { link = "FloatTitle" },
MiniFilesTitleFocused = O.float.solid and {
fg = C.crust,
bg = C.mauve,
} or {
fg = C.subtext0,
bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle,
style = { "bold" },
},
MiniHipatternsFixme = { fg = C.base, bg = C.red, style = { "bold" } },
MiniHipatternsHack = { fg = C.base, bg = C.yellow, style = { "bold" } },
MiniHipatternsNote = { fg = C.base, bg = C.sky, style = { "bold" } },
MiniHipatternsTodo = { fg = C.base, bg = C.teal, style = { "bold" } },
MiniIconsAzure = { fg = C.sapphire },
MiniIconsBlue = { fg = C.blue },
MiniIconsCyan = { fg = C.teal },
MiniIconsGreen = { fg = C.green },
MiniIconsGrey = { fg = C.text },
MiniIconsOrange = { fg = C.peach },
MiniIconsPurple = { fg = C.mauve },
MiniIconsRed = { fg = C.red },
MiniIconsYellow = { fg = C.yellow },
MiniIndentscopeSymbol = { fg = indentscope_color },
MiniJump = { fg = C.overlay2, bg = C.pink },
MiniJump2dDim = { fg = C.overlay0 },
MiniJump2dSpot = { bg = C.base, fg = C.peach, style = { "bold", "underline" } },
MiniJump2dSpotAhead = { bg = C.dim, fg = C.teal },
MiniJump2dSpotUnique = { bg = C.base, fg = C.sky, style = { "bold" } },
MiniMapNormal = { link = "NormalFloat" },
MiniMapSymbolCount = { link = "Special" },
MiniMapSymbolLine = { link = "Title" },
MiniMapSymbolView = { link = "Delimiter" },
MiniNotifyBorder = { link = "FloatBorder" },
MiniNotifyNormal = { link = "NormalFloat" },
MiniNotifyTitle = { link = "FloatTitle" },
MiniOperatorsExchangeFrom = { link = "IncSearch" },
MiniPickBorder = { link = "FloatBorder" },
MiniPickBorderBusy = { link = "DiagnosticFloatingWarn" },
MiniPickBorderText = O.float.solid and {
fg = C.crust,
bg = C.mauve,
} or { fg = C.mauve, bg = (O.float.transparent and vim.o.winblend == 0) and C.none or C.mantle },
MiniPickIconDirectory = { link = "Directory" },
MiniPickIconFile = { link = "MiniPickNormal" },
MiniPickHeader = { link = "DiagnosticFloatingHint" },
MiniPickMatchCurrent = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
MiniPickMatchMarked = { link = "Visual" },
MiniPickMatchRanges = { link = "DiagnosticFloatingHint" },
MiniPickNormal = { link = "NormalFloat" },
MiniPickPreviewLine = { link = "CursorLine" },
MiniPickPreviewRegion = { link = "IncSearch" },
MiniPickPrompt = { fg = C.text, bg = O.float.transparent and C.none or C.mantle },
MiniPickPromptCaret = {
fg = C.flamingo,
bg = O.float.transparent and C.none or C.mantle,
},
MiniPickPromptPrefix = {
fg = C.flamingo,
bg = O.float.transparent and C.none or C.mantle,
},
MiniStarterCurrent = {},
MiniStarterFooter = { fg = C.yellow, style = { "italic" } },
MiniStarterHeader = { fg = C.blue },
MiniStarterInactive = { fg = C.surface2, style = O.styles.comments },
MiniStarterItem = { fg = C.text },
MiniStarterItemBullet = { fg = C.blue },
MiniStarterItemPrefix = { fg = C.pink },
MiniStarterSection = { fg = C.flamingo },
MiniStarterQuery = { fg = C.green },
MiniStatuslineDevinfo = { fg = C.subtext1, bg = C.surface1 },
MiniStatuslineFileinfo = { fg = C.subtext1, bg = C.surface1 },
MiniStatuslineFilename = { fg = C.text, bg = C.mantle },
MiniStatuslineInactive = { fg = C.blue, bg = C.mantle },
MiniStatuslineModeCommand = { fg = C.base, bg = C.peach, style = { "bold" } },
MiniStatuslineModeInsert = { fg = C.base, bg = C.green, style = { "bold" } },
MiniStatuslineModeNormal = { fg = C.mantle, bg = C.blue, style = { "bold" } },
MiniStatuslineModeOther = { fg = C.base, bg = C.teal, style = { "bold" } },
MiniStatuslineModeReplace = { fg = C.base, bg = C.red, style = { "bold" } },
MiniStatuslineModeVisual = { fg = C.base, bg = C.mauve, style = { "bold" } },
MiniSurround = { bg = C.pink, fg = C.surface1 },
MiniTablineCurrent = { fg = C.text, bg = C.base, sp = C.red, style = { "bold", "italic", "underline" } },
MiniTablineFill = { bg = bg_highlight },
MiniTablineHidden = { fg = C.text, bg = inactive_bg },
MiniTablineModifiedCurrent = { fg = C.red, bg = C.none, style = { "bold", "italic" } },
MiniTablineModifiedHidden = { fg = C.red, bg = C.none },
MiniTablineModifiedVisible = { fg = C.red, bg = C.none },
MiniTablineTabpagesection = { fg = C.surface1, bg = C.base },
MiniTablineVisible = { bg = C.none },
MiniTestEmphasis = { style = { "bold" } },
MiniTestFail = { fg = C.red, style = { "bold" } },
MiniTestPass = { fg = C.green, style = { "bold" } },
MiniTrailspace = { bg = C.red },
}
end
return M

View file

@ -0,0 +1,44 @@
local M = {}
M.url = "https://github.com/SmiteshP/nvim-navic"
function M.get()
local background = O.integrations.navic.custom_bg or C.none
if O.integrations.navic.custom_bg == "lualine" then background = C.mantle end
if background ~= C.none and string.sub(background, 0, 1) ~= "#" then
background = U.select_color(background, "none")
end
return {
NavicIconsFile = { fg = C.blue, bg = background },
NavicIconsModule = { fg = C.blue, bg = background },
NavicIconsNamespace = { fg = C.blue, bg = background },
NavicIconsPackage = { fg = C.blue, bg = background },
NavicIconsClass = { fg = C.yellow, bg = background },
NavicIconsMethod = { fg = C.blue, bg = background },
NavicIconsProperty = { fg = C.green, bg = background },
NavicIconsField = { fg = C.green, bg = background },
NavicIconsConstructor = { fg = C.blue, bg = background },
NavicIconsEnum = { fg = C.green, bg = background },
NavicIconsInterface = { fg = C.yellow, bg = background },
NavicIconsFunction = { fg = C.blue, bg = background },
NavicIconsVariable = { fg = C.flamingo, bg = background },
NavicIconsConstant = { fg = C.peach, bg = background },
NavicIconsString = { fg = C.green, style = O.styles.strings, bg = background },
NavicIconsNumber = { fg = C.peach, bg = background },
NavicIconsBoolean = { fg = C.peach, bg = background },
NavicIconsArray = { fg = C.peach, bg = background },
NavicIconsObject = { fg = C.peach, bg = background },
NavicIconsKey = { fg = C.pink, style = O.styles.keywords, bg = background },
NavicIconsNull = { fg = C.peach, bg = background },
NavicIconsEnumMember = { fg = C.red, bg = background },
NavicIconsStruct = { fg = C.blue, bg = background },
NavicIconsEvent = { fg = C.blue, bg = background },
NavicIconsOperator = { fg = C.sky, bg = background },
NavicIconsTypeParameter = { fg = C.blue, bg = background },
NavicText = { fg = C.sapphire, bg = background },
NavicSeparator = { fg = C.text, bg = background },
}
end
return M

View file

@ -0,0 +1,257 @@
local M = {}
M.url = "https://github.com/NeogitOrg/neogit"
function M.get()
return {
NeogitBranch = {
fg = C.peach,
style = { "bold" },
},
NeogitRemote = {
fg = C.green,
style = { "bold" },
},
NeogitUnmergedInto = {
link = "Function",
},
NeogitUnpulledFrom = {
link = "Function",
},
NeogitObjectId = {
link = "Comment",
},
NeogitStash = {
link = "Comment",
},
NeogitRebaseDone = {
link = "Comment",
},
NeogitHunkHeader = {
bg = U.darken(C.blue, 0.095, C.base),
fg = U.darken(C.blue, 0.5, C.base),
},
NeogitHunkHeaderHighlight = {
bg = U.darken(C.blue, 0.215, C.base),
fg = C.blue,
},
NeogitDiffContextHighlight = {
bg = C.surface0,
},
NeogitDiffDeleteHighlight = {
bg = U.darken(C.red, 0.345, C.base),
fg = U.lighten(C.red, 0.850, C.text),
},
NeogitDiffAddHighlight = {
bg = U.darken(C.green, 0.345, C.base),
fg = U.lighten(C.green, 0.850, C.text),
},
NeogitDiffDelete = {
bg = U.darken(C.red, 0.095, C.base),
fg = U.darken(C.red, 0.800, C.base),
},
NeogitDiffDeleteInline = {
bg = U.darken(C.red, 0.500, C.base),
style = { "bold" },
},
NeogitDiffAdd = {
bg = U.darken(C.green, 0.095, C.base),
fg = U.darken(C.green, 0.800, C.base),
},
NeogitDiffAddInline = {
bg = U.darken(C.green, 0.500, C.base),
style = { "bold" },
},
NeogitCommitViewHeader = {
bg = U.darken(C.blue, 0.300, C.base),
fg = U.lighten(C.blue, 0.800, C.text),
},
NeogitChangeModified = {
fg = C.blue,
style = { "bold" },
},
NeogitChangeDeleted = {
fg = C.red,
style = { "bold" },
},
NeogitChangeAdded = {
fg = C.green,
style = { "bold" },
},
NeogitChangeRenamed = {
fg = C.mauve,
style = { "bold" },
},
NeogitChangeUpdated = {
fg = C.peach,
style = { "bold" },
},
NeogitChangeCopied = {
fg = C.pink,
style = { "bold" },
},
NeogitChangeBothModified = {
fg = C.yellow,
style = { "bold" },
},
NeogitChangeNewFile = {
fg = C.green,
style = { "bold" },
},
NeogitUntrackedfiles = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnstagedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnmergedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitUnpulledchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitRecentcommits = {
fg = C.mauve,
style = { "bold" },
},
NeogitStagedchanges = {
fg = C.mauve,
style = { "bold" },
},
NeogitStashes = {
fg = C.mauve,
style = { "bold" },
},
NeogitRebasing = {
fg = C.mauve,
style = { "bold" },
},
NeogitNotificationInfo = {
fg = C.blue,
},
NeogitNotificationWarning = {
fg = C.yellow,
},
NeogitNotificationError = {
fg = C.red,
},
NeogitGraphRed = {
fg = C.red,
},
NeogitGraphWhite = {
fg = C.base,
},
NeogitGraphYellow = {
fg = C.yellow,
},
NeogitGraphGreen = {
fg = C.green,
},
NeogitGraphCyan = {
fg = C.blue,
},
NeogitGraphBlue = {
fg = C.blue,
},
NeogitGraphPurple = {
fg = C.lavender,
},
NeogitGraphGray = {
fg = C.subtext1,
},
NeogitGraphOrange = {
fg = C.peach,
},
NeogitGraphBoldRed = {
fg = C.red,
style = { "bold" },
},
NeogitGraphBoldWhite = {
fg = C.white,
style = { "bold" },
},
NeogitGraphBoldYellow = {
fg = C.yellow,
style = { "bold" },
},
NeogitGraphBoldGreen = {
fg = C.green,
style = { "bold" },
},
NeogitGraphBoldCyan = {
fg = C.blue,
style = { "bold" },
},
NeogitGraphBoldBlue = {
fg = C.blue,
style = { "bold" },
},
NeogitGraphBoldPurple = {
fg = C.lavender,
style = { "bold" },
},
NeogitGraphBoldGray = {
fg = C.subtext1,
style = { "bold" },
},
NeogitDiffContext = {
bg = C.base,
},
NeogitPopupBold = {
style = { "bold" },
},
NeogitPopupSwitchKey = {
fg = C.lavender,
},
NeogitPopupOptionKey = {
fg = C.lavender,
},
NeogitPopupConfigKey = {
fg = C.lavender,
},
NeogitPopupActionKey = {
fg = C.lavender,
},
NeogitFilePath = {
fg = C.blue,
style = { "italic" },
},
NeogitDiffHeader = {
bg = C.base,
fg = C.blue,
style = { "bold" },
},
NeogitDiffHeaderHighlight = {
bg = C.base,
fg = C.peach,
style = { "bold" },
},
NeogitUnpushedTo = {
fg = C.lavender,
style = { "bold" },
},
NeogitFold = {
fg = C.none,
bg = C.none,
},
NeogitSectionHeader = {
fg = C.mauve,
style = { "bold" },
},
NeogitTagName = {
fg = C.yellow,
},
NeogitTagDistance = {
fg = C.blue,
},
NeogitWinSeparator = {
link = "WinSeparator",
},
}
end
return M

View file

@ -0,0 +1,26 @@
local M = {}
M.url = "https://github.com/nvim-neotest/neotest"
function M.get()
return {
NeotestPassed = { fg = C.green },
NeotestFailed = { fg = C.red },
NeotestRunning = { fg = C.yellow },
NeotestSkipped = { fg = C.blue },
NeotestTest = { fg = C.text },
NeotestNamespace = { fg = C.mauve },
NeotestFocused = { style = { "bold", "underline" } },
NeotestFile = { fg = C.blue },
NeotestDir = { fg = C.blue },
NeotestIndent = { fg = C.overlay1 },
NeotestExpandMarker = { fg = C.overlay1 },
NeotestAdapterName = { fg = C.maroon },
NeotestWinSelect = { fg = C.blue, style = { "bold" } },
NeotestMarked = { fg = C.peach, style = { "bold" } },
NeotestTarget = { fg = C.red },
NeotestUnknown = { fg = C.text },
}
end
return M

View file

@ -0,0 +1,48 @@
local M = {}
M.url = "https://github.com/nvim-neo-tree/neo-tree.nvim"
function M.get()
local active_bg = O.transparent_background and C.none or C.mantle
local inactive_bg = O.transparent_background and C.none or C.base
return {
NeoTreeDirectoryName = { fg = C.blue },
NeoTreeDirectoryIcon = { fg = C.blue },
NeoTreeNormal = { fg = C.text, bg = active_bg },
NeoTreeNormalNC = { fg = C.text, bg = active_bg },
NeoTreeExpander = { fg = C.overlay0 },
NeoTreeIndentMarker = { fg = C.overlay0 },
NeoTreeRootName = { fg = C.blue, style = { "bold" } },
NeoTreeSymbolicLinkTarget = { fg = C.pink },
NeoTreeModified = { fg = C.peach },
NeoTreeGitAdded = { fg = C.green },
NeoTreeGitConflict = { fg = C.red },
NeoTreeGitDeleted = { fg = C.red },
NeoTreeGitIgnored = { fg = C.overlay0 },
NeoTreeGitModified = { fg = C.yellow },
NeoTreeGitUnstaged = { fg = C.red },
NeoTreeGitUntracked = { fg = C.mauve },
NeoTreeGitStaged = { fg = C.green },
NeoTreeFloatBorder = { link = "FloatBorder" },
NeoTreeFloatTitle = { link = "FloatTitle" },
NeoTreeTitleBar = { fg = C.mantle, bg = C.blue },
NeoTreeFileNameOpened = { fg = C.pink },
NeoTreeDimText = { fg = C.overlay1 },
NeoTreeFilterTerm = { fg = C.green, style = { "bold" } },
NeoTreeTabActive = { bg = active_bg, fg = C.lavender, style = { "bold" } },
NeoTreeTabInactive = { bg = inactive_bg, fg = C.overlay0 },
NeoTreeTabSeparatorActive = { fg = active_bg, bg = active_bg },
NeoTreeTabSeparatorInactive = { fg = inactive_bg, bg = inactive_bg },
NeoTreeVertSplit = { fg = C.base, bg = inactive_bg },
NeoTreeWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
NeoTreeStatusLineNC = { fg = C.mantle, bg = C.mantle },
}
end
return M

View file

@ -0,0 +1,28 @@
local M = {}
M.url = "https://github.com/folke/noice.nvim"
local virtual_text = O.lsp_styles.virtual_text
function M.get()
return { -- Personally the default integration is already pretty good
NoiceCmdline = { fg = C.text },
NoiceCmdlineIcon = { fg = C.sky, style = virtual_text.information },
NoiceCmdlineIconSearch = { fg = C.yellow },
NoiceCmdlinePopupBorder = { fg = C.lavender },
NoiceCmdlinePopupBorderSearch = { fg = C.yellow },
NoiceConfirmBorder = { fg = C.blue },
NoiceMini = { fg = C.subtext0, blend = 0 },
NoiceFormatProgressDone = {
bg = O.transparent_background and C.none or U.darken(C.sky, 0.30, C.base),
fg = C.subtext0,
},
NoiceFormatProgressTodo = {
bg = O.transparent_background and C.none
or U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
fg = C.subtext0,
},
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
M.url = "https://github.com/vigoux/notifier.nvim"
function M.get()
return {
NotifierIcon = { fg = C.mauve },
NotifierContent = { fg = C.overlay2, blend = 0, style = { "italic" } },
NotifierContentDim = { fg = C.overlay1, blend = 0, style = { "italic" } },
}
end
return M

View file

@ -0,0 +1,27 @@
local M = {}
M.url = "https://github.com/rcarriga/nvim-notify"
function M.get()
return {
NotifyBackground = { bg = (O.transparent_background and vim.o.winblend == 0) and "#000000" or C.mantle },
NotifyERRORBorder = { fg = C.red },
NotifyERRORIcon = { fg = C.red },
NotifyERRORTitle = { fg = C.red, style = { "italic" } },
NotifyWARNBorder = { fg = C.yellow },
NotifyWARNIcon = { fg = C.yellow },
NotifyWARNTitle = { fg = C.yellow, style = { "italic" } },
NotifyINFOBorder = { fg = C.blue },
NotifyINFOIcon = { fg = C.blue },
NotifyINFOTitle = { fg = C.blue, style = { "italic" } },
NotifyDEBUGBorder = { fg = C.peach },
NotifyDEBUGIcon = { fg = C.peach },
NotifyDEBUGTitle = { fg = C.peach, style = { "italic" } },
NotifyTRACEBorder = { fg = C.rosewater },
NotifyTRACEIcon = { fg = C.rosewater },
NotifyTRACETitle = { fg = C.rosewater, style = { "italic" } },
}
end
return M

View file

@ -0,0 +1,11 @@
local M = {}
M.url = "https://github.com/kylechui/nvim-surround"
function M.get()
return {
NvimSurroundHighlight = { sp = C.peach, style = { "underline" } },
}
end
return M

View file

@ -0,0 +1,29 @@
local M = {}
M.url = "https://github.com/nvim-tree/nvim-tree.lua"
function M.get()
return {
NvimTreeFolderName = { fg = C.blue },
NvimTreeFolderIcon = { fg = C.blue },
NvimTreeNormal = { fg = C.text, bg = O.transparent_background and C.none or C.mantle },
NvimTreeOpenedFolderName = { fg = C.blue },
NvimTreeEmptyFolderName = { fg = C.blue },
NvimTreeIndentMarker = { fg = C.overlay0 },
NvimTreeWinSeparator = {
fg = O.transparent_background and C.surface1 or C.base,
bg = O.transparent_background and C.none or C.base,
},
NvimTreeRootFolder = { fg = C.lavender, style = { "bold" } },
NvimTreeSymlink = { fg = C.pink },
NvimTreeStatuslineNc = { fg = C.mantle, bg = C.mantle },
NvimTreeGitDirty = { fg = C.yellow },
NvimTreeGitNew = { fg = C.blue },
NvimTreeGitDeleted = { fg = C.red },
NvimTreeSpecialFile = { fg = C.flamingo },
NvimTreeImageFile = { fg = C.text },
NvimTreeOpenedFile = { fg = C.pink },
}
end
return M

View file

@ -0,0 +1,83 @@
local M = {}
M.url = "https://github.com/pwntester/octo.nvim"
function M.get()
return {
-- colors
OctoGrey = { fg = C.base },
OctoBlue = { fg = C.blue },
OctoGreen = { fg = C.green },
OctoRed = { fg = C.red },
OctoPurple = { fg = C.mauve },
OctoYellow = { fg = C.yellow },
-- highlight groups
OctoDirty = { link = "ErrorMsg" },
OctoIssueTitle = { link = "PreProc" },
OctoIssueId = { link = "Question" },
OctoEmpty = { link = "Comment" },
OctoFloat = { link = "NormalNC" },
OctoDate = { link = "Comment" },
OctoSymbol = { link = "Comment" },
OctoTimelineItemHeading = { link = "Comment" },
OctoDetailsLabel = { link = "Title" },
OctoMissingDetails = { link = "Comment" },
OctoDetailsValue = { link = "Identifier" },
OctoDiffHunkPosition = { link = "NormalFloat" },
OctoCommentLine = { link = "TabLineSel" },
OctoViewer = { fg = C.base, bg = C.blue },
OctoBubble = { fg = C.text, bg = C.base },
OctoBubbleGrey = { fg = C.text, bg = C.base },
OctoBubbleDelimiterGrey = { fg = C.base },
OctoBubbleGreen = { fg = C.base, bg = C.green },
OctoBubbleDelimiterGreen = { fg = C.green },
OctoBubbleBlue = { fg = C.base, bg = C.sky },
OctoBubbleDelimiterBlue = { fg = C.sky },
OctoBubbleYellow = { fg = C.base, bg = C.yellow },
OctoBubbleDelimiterYellow = { fg = C.yellow },
OctoBubbleRed = { fg = C.base, bg = C.red },
OctoBubbleDelimiterRed = { fg = C.red },
OctoBubblePurple = { fg = C.base, bg = C.mauve },
OctoBubbleDelimiterPurple = { fg = C.mauve },
OctoUser = { link = "OctoBubble" },
OctoUserViewer = { link = "OctoViewer" },
OctoReaction = { link = "OctoBubble" },
OctoReactionViewer = { link = "OctoViewer" },
OctoPassingTest = { link = "OctoGreen" },
OctoFailingTest = { link = "OctoRed" },
OctoPullAdditions = { link = "OctoGreen" },
OctoPullDeletions = { link = "OctoRed" },
OctoPullModifications = { fg = C.peach },
OctoStateOpen = { fg = C.green, bg = C.base },
OctoStateOpenFloat = { fg = C.green, bg = C.base },
OctoStateClosed = { fg = C.red, bg = C.base },
OctoStateClosedFloat = { fg = C.red, bg = C.base },
OctoStateMerged = { fg = C.mauve, bg = C.base },
OctoStateMergedFloat = { fg = C.mauve, bg = C.base },
OctoStatePending = { fg = C.peach, bg = C.base },
OctoStatePendingFloat = { fg = C.peach, bg = C.base },
OctoStateApproved = { link = "OctoStateOpen" },
OctoStateApprovedFloat = { link = "OctoStateOpen" },
OctoStateChangesRequested = { fg = C.maroon, bg = C.base },
OctoStateChangesRequestedFloat = { fg = C.maroon, bg = C.base },
OctoStateCommented = { link = "Normal" },
OctoStateCommentedFloat = { link = "Normal" },
OctoStateDismissed = { link = "OctoStateClosed" },
OctoStateDismissedFloat = { link = "OctoStateClosed" },
OctoStateSubmittedBubble = { link = "OctoBubbleGreen" },
OctoFilePanelCounter = { fg = C.blue, style = { "bold" } },
OctoFilePanelTitle = { fg = C.blue, style = { "bold" } },
OctoFilePanelFileName = {},
OctoNormalFront = { fg = C.text },
OctoYellowFloat = { fg = C.yellow, bg = C.base },
OctoPurpleFloat = { fg = C.mauve, bg = C.base },
OctoRedFloat = { fg = C.red, bg = C.base },
OctoGreenFloat = { fg = C.green, bg = C.base },
OctoGreyFloat = { fg = C.text, bg = C.base },
OctoBlueFloat = { fg = C.blue, bg = C.base },
OctoReviewDiffAddText = { bg = U.darken(C.green, 0.30, C.base) },
OctoReviewDiffDeleteText = { bg = U.darken(C.red, 0.30, C.base) },
}
end
return M

View file

@ -0,0 +1,20 @@
local M = {}
M.url = "https://github.com/stevearc/overseer.nvim"
function M.get()
return {
OverseerPENDING = { fg = C.grey },
OverseerRUNNING = { fg = C.yellow },
OverseerSUCCESS = { fg = C.green },
OverseerCANCELED = { fg = C.overlay2 },
OverseerFAILURE = { fg = C.red },
OverseerTask = { fg = C.blue },
OverseerTaskBorder = { fg = C.sky },
OverseerOutput = { fg = C.text },
OverseerComponent = { fg = C.yellow },
OverseerField = { fg = C.green },
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
M.url = "https://github.com/rlane/pounce.nvim"
function M.get()
return {
PounceMatch = { bg = U.lighten(C.green, 0.7), fg = C.base, style = { "bold" } },
PounceGap = { bg = U.darken(C.green, 0.7), fg = C.base, style = { "bold" } },
PounceAccept = { bg = C.peach, fg = C.base, style = { "bold" } },
PounceAcceptBest = { bg = C.teal, fg = C.base, style = { "bold" } },
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
M.url = "https://github.com/HiPhish/rainbow-delimiters.nvim"
function M.get()
return {
RainbowDelimiterRed = { fg = C.red },
RainbowDelimiterYellow = { fg = C.yellow },
RainbowDelimiterBlue = { fg = C.blue },
RainbowDelimiterOrange = { fg = C.peach },
RainbowDelimiterGreen = { fg = C.green },
RainbowDelimiterViolet = { fg = C.mauve },
RainbowDelimiterCyan = { fg = C.teal },
}
end
return M

View file

@ -0,0 +1,34 @@
local M = {}
M.url = "https://github.com/MeanderingProgrammer/render-markdown.nvim"
-- render-markdown.nvim highlight groups:
-- https://github.com/MeanderingProgrammer/render-markdown.nvim?tab=readme-ov-file#colors
function M.get()
local groups = {
RenderMarkdownCode = { bg = C.mantle },
RenderMarkdownCodeInline = { bg = C.surface0 },
RenderMarkdownBullet = { fg = C.sky },
RenderMarkdownTableHead = { fg = C.blue },
RenderMarkdownTableRow = { fg = C.lavender },
RenderMarkdownSuccess = { fg = C.green },
RenderMarkdownInfo = { fg = C.sky },
RenderMarkdownHint = { fg = C.teal },
RenderMarkdownWarn = { fg = C.yellow },
RenderMarkdownError = { fg = C.red },
}
local syntax = require("catppuccin.groups.syntax").get()
local darkening_percentage = O.transparent_background and U.vary_color({ latte = 0.15 }, 0.28) or 0.095
for i = 1, 6 do
local color = syntax["rainbow" .. i].fg
groups["RenderMarkdownH" .. i] = { fg = color }
groups["RenderMarkdownH" .. i .. "Bg"] = { bg = U.darken(color, darkening_percentage, C.base) }
end
return groups
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
M.url = "https://github.com/machakann/vim-sandwich"
function M.get()
return {
OperatorSandwichAdd = { bg = C.blue, fg = C.base },
OperatorSandwichBuns = { bg = C.blue, fg = C.base },
OperatorSandwichChange = { bg = C.blue, fg = C.base },
OperatorSandwichDelete = { bg = C.blue, fg = C.base },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
M.url = "https://github.com/mhinz/vim-signify"
function M.get()
return {
SignifySignAdd = { fg = C.green },
SignifySignChange = { fg = C.yellow },
SignifySignDelete = { fg = C.red },
}
end
return M

View file

@ -0,0 +1,92 @@
local M = {}
M.url = "https://github.com/folke/snacks.nvim"
function M.get()
local indent_scope_color = U.select_color(O.integrations.snacks.indent_scope_color, "overlay2")
local hlgroups = {
SnacksNormal = { link = "Normal" },
SnacksWinBar = { link = "Title" },
SnacksBackdrop = { link = "FloatShadow" },
SnacksNormalNC = { link = "NormalFloat" },
SnacksWinBarNC = { link = "SnacksWinBar" },
SnacksNotifierInfo = { fg = C.blue },
SnacksNotifierIconInfo = { fg = C.blue },
SnacksNotifierTitleInfo = { fg = C.blue, style = { "italic" } },
SnacksNotifierFooterInfo = { link = "DiagnosticInfo" },
SnacksNotifierBorderInfo = { fg = C.blue },
SnacksNotifierWarn = { fg = C.yellow },
SnacksNotifierIconWarn = { fg = C.yellow },
SnacksNotifierTitleWarn = { fg = C.yellow, style = { "italic" } },
SnacksNotifierBorderWarn = { fg = C.yellow },
SnacksNotifierFooterWarn = { link = "DiagnosticWarn" },
SnacksNotifierDebug = { fg = C.peach },
SnacksNotifierIconDebug = { fg = C.peach },
SnacksNotifierTitleDebug = { fg = C.peach, style = { "italic" } },
SnacksNotifierBorderDebug = { fg = C.peach },
SnacksNotifierFooterDebug = { link = "DiagnosticHint" },
SnacksNotifierError = { fg = C.red },
SnacksNotifierIconError = { fg = C.red },
SnacksNotifierTitleError = { fg = C.red, style = { "italic" } },
SnacksNotifierBorderError = { fg = C.red },
SnacksNotifierFooterError = { link = "DiagnosticError" },
SnacksNotifierTrace = { fg = C.rosewater },
SnacksNotifierIconTrace = { fg = C.rosewater },
SnacksNotifierTitleTrace = { fg = C.rosewater, style = { "italic" } },
SnacksNotifierBorderTrace = { fg = C.rosewater },
SnacksNotifierFooterTrace = { link = "DiagnosticHint" },
SnacksDashboardNormal = { link = "Normal" },
SnacksDashboardDesc = { fg = C.blue },
SnacksDashboardFile = { fg = C.lavender },
SnacksDashboardDir = { link = "NonText" },
SnacksDashboardFooter = { fg = C.yellow, style = { "italic" } },
SnacksDashboardHeader = { fg = C.blue },
SnacksDashboardIcon = { fg = C.pink, bold = true },
SnacksDashboardKey = { fg = C.peach },
SnacksDashboardTerminal = { link = "SnacksDashboardNormal" },
SnacksDashboardSpecial = { link = "Special" },
SnacksDashboardTitle = { link = "Title" },
SnacksIndent = { fg = C.surface0 },
SnacksIndentScope = { fg = indent_scope_color },
SnacksPickerSelected = {
fg = O.float.transparent and C.flamingo or C.text,
bg = O.float.transparent and C.none or C.surface0,
style = { "bold" },
},
SnacksPickerMatch = { fg = C.blue },
SnacksPicker = { link = "NormalFloat" },
SnacksPickerBorder = { link = "FloatBorder" },
SnacksPickerInputBorder = { link = "SnacksPickerBorder" },
SnacksPickerInput = { link = "NormalFloat" },
SnacksPickerPrompt = { fg = C.flamingo },
}
if O.float.solid then
hlgroups["SnacksPickerTitle"] = {
fg = C.crust,
bg = C.mauve,
}
hlgroups["SnacksPickerPreviewTitle"] = {
fg = C.crust,
bg = C.green,
}
hlgroups["SnacksPickerInputTitle"] = {
fg = C.crust,
bg = C.red,
}
hlgroups["SnacksPickerListTitle"] = {
fg = C.crust,
bg = C.lavender,
}
end
return hlgroups
end
return M

View file

@ -0,0 +1,15 @@
local M = {}
M.url = "https://github.com/simrat39/symbols-outline.nvim"
function M.get()
return {
-- https://github.com/simrat39/symbols-outline.nvim
FocusedSymbol = { fg = C.yellow, bg = C.none },
-- https://github.com/hedyhli/outline.nvim
OutlineCurrent = { link = "FocusedSymbol" },
}
end
return M

View file

@ -0,0 +1,13 @@
local M = {}
M.url = "https://github.com/nvim-telekasten/telekasten.nvim"
function M.get()
return {
tkLink = { fg = C.blue },
tkBrackets = { fg = C.pink },
tkTag = { fg = C.sky },
}
end
return M

View file

@ -0,0 +1,41 @@
local M = {}
M.url = "https://github.com/nvim-telescope/telescope.nvim"
function M.get()
local hlgroups = {
TelescopeBorder = { link = "FloatBorder" },
TelescopeNormal = { link = "NormalFloat" },
TelescopePreviewNormal = { link = "TelescopeNormal" },
TelescopePromptNormal = { link = "TelescopeNormal" },
TelescopeResultsNormal = { link = "TelescopeNormal" },
TelescopeTitle = { link = "FloatTitle" },
TelescopeSelectionCaret = { fg = C.flamingo, bg = C.surface0 },
TelescopeSelection = {
fg = C.flamingo,
bg = C.surface0,
style = { "bold" },
},
TelescopeMatching = { fg = C.blue },
TelescopePromptPrefix = { fg = C.flamingo },
}
if O.float.solid then
hlgroups["TelescopePreviewTitle"] = {
fg = C.crust,
bg = C.green,
}
hlgroups["TelescopePromptTitle"] = {
fg = C.crust,
bg = C.red,
}
hlgroups["TelescopeResultsTitle"] = {
fg = C.crust,
bg = C.lavender,
}
end
return hlgroups
end
return M

View file

@ -0,0 +1,24 @@
local M = {}
M.url = "https://github.com/nvim-treesitter/nvim-treesitter-context"
function M.get()
return {
TreesitterContext = {
fg = C.text,
bg = O.transparent_background and C.none or C.mantle,
},
TreesitterContextBottom = {
sp = O.transparent_background and C.dim or C.surface0,
style = { "underline" },
},
TreesitterContextLineNumber = O.transparent_background and {
fg = C.rosewater,
} or {
fg = C.surface1,
bg = C.mantle,
},
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
M.url = "https://github.com/HiPhish/nvim-ts-rainbow"
function M.get()
return {
rainbowcol1 = { fg = C.red },
rainbowcol2 = { fg = C.teal },
rainbowcol3 = { fg = C.yellow },
rainbowcol4 = { fg = C.blue },
rainbowcol5 = { fg = C.pink },
rainbowcol6 = { fg = C.flamingo },
rainbowcol7 = { fg = C.green },
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
M.url = "https://github.com/HiPhish/nvim-ts-rainbow2"
function M.get()
return {
TSRainbowRed = { fg = C.red },
TSRainbowYellow = { fg = C.yellow },
TSRainbowBlue = { fg = C.blue },
TSRainbowOrange = { fg = C.peach },
TSRainbowGreen = { fg = C.green },
TSRainbowViolet = { fg = C.mauve },
TSRainbowCyan = { fg = C.teal },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
M.url = "https://github.com/kevinhwang91/nvim-ufo"
M.get = function()
return {
UfoFoldedFg = { fg = C.lavender },
UfoFoldedEllipsis = { fg = C.crust, bg = C.blue },
}
end
return M

View file

@ -0,0 +1,12 @@
local M = {}
M.url = "https://github.com/justinmk/vim-sneak"
function M.get()
return {
Sneak = { fg = C.overlay2, bg = C.pink },
SneakScope = { bg = C.text },
}
end
return M

View file

@ -0,0 +1,22 @@
local M = {}
M.url = "https://github.com/vimwiki/vimwiki"
function M.get()
return {
VimwikiLink = { fg = C.sky, bg = C.none },
VimwikiHeaderChar = { fg = C.grey, bg = C.none },
VimwikiHR = { fg = C.yellow, bg = C.none },
VimwikiList = { fg = C.peach, bg = C.none },
VimwikiTag = { fg = C.peach, bg = C.none },
VimwikiMarkers = { fg = C.subtext0, bg = C.none },
VimwikiHeader1 = { fg = C.peach, bg = C.none, style = { "bold" } },
VimwikiHeader2 = { fg = C.green, bg = C.none, style = { "bold" } },
VimwikiHeader3 = { fg = C.blue, bg = C.none, style = { "bold" } },
VimwikiHeader4 = { fg = C.sky, bg = C.none, style = { "bold" } },
VimwikiHeader5 = { fg = C.yellow, bg = C.none, style = { "bold" } },
VimwikiHeader6 = { fg = C.mauve, bg = C.none, style = { "bold" } },
}
end
return M

View file

@ -0,0 +1,17 @@
local M = {}
M.url = "https://github.com/folke/which-key.nvim"
function M.get()
return {
WhichKey = { link = "NormalFloat" },
WhichKeyBorder = { link = "FloatBorder" },
WhichKeyGroup = { fg = C.blue },
WhichKeySeparator = { fg = C.overlay0 },
WhichKeyDesc = { fg = C.pink },
WhichKeyValue = { fg = C.overlay0 },
}
end
return M

View file

@ -0,0 +1,14 @@
local M = {}
M.url = "https://github.com/s1n7ax/nvim-window-picker"
function M.get()
return {
WindowPickerStatusLine = { fg = C.red, style = { "bold" } },
WindowPickerStatusLineNC = { fg = C.red, style = { "bold" } },
WindowPickerWinBar = { fg = C.red, style = { "bold" } },
WindowPickerWinBarNC = { fg = C.red, style = { "bold" } },
}
end
return M

View file

@ -0,0 +1,109 @@
local M = {}
function M.get()
local virtual_text = O.lsp_styles.virtual_text
local underlines = O.lsp_styles.underlines
local inlay_hints = O.lsp_styles.inlay_hints
local error = C.red
local warning = C.yellow
local info = C.sky
local hint = C.teal
local ok = C.green
local darkening_percentage = 0.095
return {
-- These groups are for the native LSP client. Some other LSP clients may
-- use these groups, or use their own. Consult your LSP client's
-- documentation.
LspReferenceText = { bg = C.surface1 }, -- used for highlighting "text" references
LspReferenceRead = { bg = C.surface1 }, -- used for highlighting "read" references
LspReferenceWrite = { bg = C.surface1 }, -- used for highlighting "write" references
-- highlight diagnostics in numberline
DiagnosticVirtualTextError = {
bg = O.transparent_background and C.none or U.darken(error, darkening_percentage, C.base),
fg = error,
style = virtual_text.errors,
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticVirtualTextWarn = {
bg = O.transparent_background and C.none or U.darken(warning, darkening_percentage, C.base),
fg = warning,
style = virtual_text.warnings,
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticVirtualTextInfo = {
bg = O.transparent_background and C.none or U.darken(info, darkening_percentage, C.base),
fg = info,
style = virtual_text.information,
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticVirtualTextHint = {
bg = O.transparent_background and C.none or U.darken(hint, darkening_percentage, C.base),
fg = hint,
style = virtual_text.hints,
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticVirtualTextOk = {
bg = O.transparent_background and C.none or U.darken(hint, darkening_percentage, C.base),
fg = ok,
style = virtual_text.ok,
}, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticError = { bg = C.none, fg = error, style = virtual_text.errors }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticWarn = { bg = C.none, fg = warning, style = virtual_text.warnings }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticInfo = { bg = C.none, fg = info, style = virtual_text.information }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticHint = { bg = C.none, fg = hint, style = virtual_text.hints }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticOk = { bg = C.none, fg = ok, style = virtual_text.ok }, -- Used as the mantle highlight group. Other Diagnostic highlights link to this by default
DiagnosticUnderlineError = { style = underlines.errors, sp = error }, -- Used to underline "Error" diagnostics
DiagnosticUnderlineWarn = { style = underlines.warnings, sp = warning }, -- Used to underline "Warn" diagnostics
DiagnosticUnderlineInfo = { style = underlines.information, sp = info }, -- Used to underline "Info" diagnostics
DiagnosticUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" diagnostics
DiagnosticUnderlineOk = { style = underlines.ok, sp = ok }, -- Used to underline "Ok" diagnostics
DiagnosticFloatingError = { fg = error }, -- Used to color "Error" diagnostic messages in diagnostics float
DiagnosticFloatingWarn = { fg = warning }, -- Used to color "Warn" diagnostic messages in diagnostics float
DiagnosticFloatingInfo = { fg = info }, -- Used to color "Info" diagnostic messages in diagnostics float
DiagnosticFloatingHint = { fg = hint }, -- Used to color "Hint" diagnostic messages in diagnostics float
DiagnosticFloatingOk = { fg = ok }, -- Used to color "Ok" diagnostic messages in diagnostics float
DiagnosticSignError = { fg = error }, -- Used for "Error" signs in sign column
DiagnosticSignWarn = { fg = warning }, -- Used for "Warn" signs in sign column
DiagnosticSignInfo = { fg = info }, -- Used for "Info" signs in sign column
DiagnosticSignHint = { fg = hint }, -- Used for "Hint" signs in sign column
DiagnosticSignOk = { fg = ok }, -- Used for "Ok" signs in sign column
LspDiagnosticsDefaultError = { fg = error }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
LspDiagnosticsDefaultWarning = { fg = warning }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
LspDiagnosticsDefaultInformation = { fg = info }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
LspDiagnosticsDefaultHint = { fg = hint }, -- Used as the mantle highlight group. Other LspDiagnostic highlights link to this by default (except Underline)
LspSignatureActiveParameter = { bg = C.surface0, style = { "bold" } },
-- LspDiagnosticsFloatingError = { }, -- Used to color "Error" diagnostic messages in diagnostics float
-- LspDiagnosticsFloatingWarning = { }, -- Used to color "Warning" diagnostic messages in diagnostics float
-- LspDiagnosticsFloatingInformation = { }, -- Used to color "Information" diagnostic messages in diagnostics float
-- LspDiagnosticsFloatingHint = { }, -- Used to color "Hint" diagnostic messages in diagnostics float
LspDiagnosticsError = { fg = error },
LspDiagnosticsWarning = { fg = warning },
LspDiagnosticsInformation = { fg = info },
LspDiagnosticsHint = { fg = hint },
LspDiagnosticsVirtualTextError = { fg = error, style = virtual_text.errors }, -- Used for "Error" diagnostic virtual text
LspDiagnosticsVirtualTextWarning = { fg = warning, style = virtual_text.warnings }, -- Used for "Warning" diagnostic virtual text
LspDiagnosticsVirtualTextInformation = { fg = info, style = virtual_text.warnings }, -- Used for "Information" diagnostic virtual text
LspDiagnosticsVirtualTextHint = { fg = hint, style = virtual_text.hints }, -- Used for "Hint" diagnostic virtual text
LspDiagnosticsUnderlineError = { style = underlines.errors, sp = error }, -- Used to underline "Error" diagnostics
LspDiagnosticsUnderlineWarning = { style = underlines.warnings, sp = warning }, -- Used to underline "Warning" diagnostics
LspDiagnosticsUnderlineInformation = { style = underlines.information, sp = info }, -- Used to underline "Information" diagnostics
LspDiagnosticsUnderlineHint = { style = underlines.hints, sp = hint }, -- Used to underline "Hint" diagnostics
LspCodeLens = { fg = C.overlay0 }, -- virtual text of the codelens
LspCodeLensSeparator = { link = "LspCodeLens" }, -- virtual text of the codelens separators
LspInlayHint = {
-- fg of `Comment`
fg = C.overlay0,
-- bg of `CursorLine`
bg = (O.transparent_background or not inlay_hints.background) and C.none
or U.vary_color({ latte = U.lighten(C.mantle, 0.70, C.base) }, U.darken(C.surface0, 0.64, C.base)),
}, -- virtual text of the inlay hints
LspInfoBorder = { link = "FloatBorder" }, -- LspInfo border
}
end
return M

View file

@ -0,0 +1,33 @@
local M = {}
function M.get()
if vim.treesitter.highlighter.hl_map then
vim.notify_once(
[[Catppuccin (info):
semantic_tokens integration requires neovim 0.8
If you want to stay on nvim 0.7, pin catppuccin tag to v0.2.4 and nvim-treesitter commit to 4cccb6f494eb255b32a290d37c35ca12584c74d0.
]],
vim.log.levels.INFO
)
return {}
end
return {
-- https://neovim.io/doc/user/lsp.html#lsp-semantic-highlight
-- Most semantic tokens (@lsp.type.<...>) are no longer defined in this file, as Neovim links to already themed Tree-sitter captures by default.
-- lsp's are able to detect enum members where treesitter often cannot
["@lsp.type.enumMember"] = { fg = C.teal },
-- we assume treesitter can already handle this
-- - treesitter can detect variables in buffers
-- - lsp does not need responsibility for this, in fact it can be less
-- accurate in cases
["@lsp.type.variable"] = {},
-- in cases where the lsp can be more specific than treesitter, we should
-- allow lsp to override treesitter
["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" },
["@lsp.typemod.function.builtin"] = { link = "@function.builtin" },
}
end
return M

View file

@ -0,0 +1,128 @@
local M = {}
function M.get()
return {
Comment = { fg = C.overlay2, style = O.styles.comments }, -- just comments
SpecialComment = { link = "Special" }, -- special things inside a comment
Constant = { fg = C.peach }, -- (preferred) any constant
String = { fg = C.green, style = O.styles.strings or {} }, -- a string constant: "this is a string"
Character = { fg = C.teal }, -- a character constant: 'c', '\n'
Number = { fg = C.peach, style = O.styles.numbers or {} }, -- a number constant: 234, 0xff
Float = { link = "Number" }, -- a floating point constant: 2.3e10
Boolean = { fg = C.peach, style = O.styles.booleans or {} }, -- a boolean constant: TRUE, false
Identifier = { fg = C.flamingo, style = O.styles.variables or {} }, -- (preferred) any variable name
Function = { fg = C.blue, style = O.styles.functions or {} }, -- function name (also: methods for classes)
Statement = { fg = C.mauve }, -- (preferred) any statement
Conditional = { fg = C.mauve, style = O.styles.conditionals or {} }, -- if, then, else, endif, switch, etc.
Repeat = { fg = C.mauve, style = O.styles.loops or {} }, -- for, do, while, etc.
Label = { fg = C.sapphire }, -- case, default, etc.
Operator = { fg = C.sky, style = O.styles.operators or {} }, -- "sizeof", "+", "*", etc.
Keyword = { fg = C.mauve, style = O.styles.keywords or {} }, -- any other keyword
Exception = { fg = C.mauve, style = O.styles.keywords or {} }, -- try, catch, throw
PreProc = { fg = C.pink }, -- (preferred) generic Preprocessor
Include = { fg = C.mauve, style = O.styles.keywords or {} }, -- preprocessor #include
Define = { link = "PreProc" }, -- preprocessor #define
Macro = { fg = C.mauve }, -- same as Define
PreCondit = { link = "PreProc" }, -- preprocessor #if, #else, #endif, etc.
StorageClass = { fg = C.yellow }, -- static, register, volatile, etc.
Structure = { fg = C.yellow }, -- struct, union, enum, etc.
Special = { fg = C.pink }, -- (preferred) any special symbol
Type = { fg = C.yellow, style = O.styles.types or {} }, -- (preferred) int, long, char, etc.
Typedef = { link = "Type" }, -- A typedef
SpecialChar = { link = "Special" }, -- special character in a constant
Tag = { fg = C.lavender, style = { "bold" } }, -- you can use CTRL-] on this
Delimiter = { fg = C.overlay2 }, -- character that needs attention
Debug = { link = "Special" }, -- debugging statements
Underlined = { style = { "underline" } }, -- (preferred) text that stands out, HTML links
Bold = { style = { "bold" } },
Italic = { style = { "italic" } },
-- ("Ignore", below, may be invisible...)
-- Ignore = { }, -- (preferred) left blank, hidden |hl-Ignore|
Error = { fg = C.red }, -- (preferred) any erroneous construct
Todo = { bg = C.flamingo, fg = C.base, style = { "bold" } }, -- (preferred) anything that needs extra attention; mostly the keywords TODO FIXME and XXX
qfLineNr = { fg = C.yellow },
qfFileName = { fg = C.blue },
htmlH1 = { fg = C.pink, style = { "bold" } },
htmlH2 = { fg = C.blue, style = { "bold" } },
-- mkdHeading = { fg = C.peach, style = { "bold" } },
-- mkdCode = { bg = C.terminal_black, fg = C.text },
mkdCodeDelimiter = { bg = C.base, fg = C.text },
mkdCodeStart = { fg = C.flamingo, style = { "bold" } },
mkdCodeEnd = { fg = C.flamingo, style = { "bold" } },
-- mkdLink = { fg = C.blue, style = { "underline" } },
-- debugging
debugPC = { bg = O.transparent_background and C.none or C.crust }, -- used for highlighting the current line in terminal-debug
debugBreakpoint = { bg = C.base, fg = C.overlay0 }, -- used for breakpoint colors in terminal-debug
-- illuminate
illuminatedWord = { bg = C.surface1 },
illuminatedCurWord = { bg = C.surface1 },
-- diff
Added = { fg = C.green },
Changed = { fg = C.blue },
diffAdded = { fg = C.green },
diffRemoved = { fg = C.red },
diffChanged = { fg = C.blue },
diffOldFile = { fg = C.yellow },
diffNewFile = { fg = C.peach },
diffFile = { fg = C.blue },
diffLine = { fg = C.overlay0 },
diffIndexLine = { fg = C.teal },
DiffAdd = { bg = U.darken(C.green, 0.18, C.base) }, -- diff mode: Added line |diff.txt|
DiffChange = { bg = U.darken(C.blue, 0.07, C.base) }, -- diff mode: Changed line |diff.txt|
DiffDelete = { bg = U.darken(C.red, 0.18, C.base) }, -- diff mode: Deleted line |diff.txt|
DiffText = { bg = U.darken(C.blue, 0.30, C.base) }, -- diff mode: Changed text within a changed line |diff.txt|
-- NeoVim
healthError = { fg = C.red },
healthSuccess = { fg = C.teal },
healthWarning = { fg = C.yellow },
-- misc
-- glyphs
GlyphPalette1 = { fg = C.red },
GlyphPalette2 = { fg = C.teal },
GlyphPalette3 = { fg = C.yellow },
GlyphPalette4 = { fg = C.blue },
GlyphPalette6 = { fg = C.teal },
GlyphPalette7 = { fg = C.text },
GlyphPalette9 = { fg = C.red },
-- rainbow
rainbow1 = { fg = C.red },
rainbow2 = { fg = C.peach },
rainbow3 = { fg = C.yellow },
rainbow4 = { fg = C.green },
rainbow5 = { fg = C.sapphire },
rainbow6 = { fg = C.lavender },
-- csv
csvCol0 = { fg = C.red },
csvCol1 = { fg = C.peach },
csvCol2 = { fg = C.yellow },
csvCol3 = { fg = C.green },
csvCol4 = { fg = C.sky },
csvCol5 = { fg = C.blue },
csvCol6 = { fg = C.lavender },
csvCol7 = { fg = C.mauve },
csvCol8 = { fg = C.pink },
escCsvCol0 = { link = "csvCol0" },
-- markdown
markdownHeadingDelimiter = { fg = C.peach, style = { "bold" } },
markdownCode = { fg = C.flamingo },
markdownCodeBlock = { fg = C.flamingo },
markdownLinkText = { fg = C.blue, style = { "underline" } },
markdownH1 = { link = "rainbow1" },
markdownH2 = { link = "rainbow2" },
markdownH3 = { link = "rainbow3" },
markdownH4 = { link = "rainbow4" },
markdownH5 = { link = "rainbow5" },
markdownH6 = { link = "rainbow6" },
}
end
return M

View file

@ -0,0 +1,31 @@
local M = {}
function M.get()
return {
terminal_color_0 = C.overlay0,
terminal_color_8 = C.overlay1,
terminal_color_1 = C.red,
terminal_color_9 = C.red,
terminal_color_2 = C.green,
terminal_color_10 = C.green,
terminal_color_3 = C.yellow,
terminal_color_11 = C.yellow,
terminal_color_4 = C.blue,
terminal_color_12 = C.blue,
terminal_color_5 = C.pink,
terminal_color_13 = C.pink,
terminal_color_6 = C.sky,
terminal_color_14 = C.sky,
terminal_color_7 = C.text,
terminal_color_15 = C.text,
}
end
return M

View file

@ -0,0 +1,289 @@
local M = {}
function M.get()
if vim.treesitter.highlighter.hl_map then
vim.notify_once(
[[Catppuccin (info):
nvim-treesitter integration requires neovim 0.8
If you want to stay on nvim 0.7, pin catppuccin tag to v0.2.4 and nvim-treesitter commit to 4cccb6f494eb255b32a290d37c35ca12584c74d0.
]],
vim.log.levels.INFO
)
return {}
end
local colors = { -- Reference: https://github.com/nvim-treesitter/nvim-treesitter/blob/master/CONTRIBUTING.md
-- Identifiers
["@variable"] = { fg = C.text, style = O.styles.variables or {} }, -- Any variable name that does not have another highlight.
["@variable.builtin"] = { fg = C.red, style = O.styles.properties or {} }, -- Variable names that are defined by the languages, like this or self.
["@variable.parameter"] = { fg = C.maroon, style = O.styles.variables or {} }, -- For parameters of a function.
["@variable.member"] = { fg = C.lavender }, -- For fields.
["@constant"] = { link = "Constant" }, -- For constants
["@constant.builtin"] = { fg = C.peach, style = O.styles.keywords or {} }, -- For constant that are built in the language: nil in Lua.
["@constant.macro"] = { link = "Macro" }, -- For constants that are defined by macros: NULL in C.
["@module"] = { fg = C.yellow, style = O.styles.miscs or { "italic" } }, -- For identifiers referring to modules and namespaces.
["@label"] = { link = "Label" }, -- For labels: label: in C and :label: in Lua.
-- Literals
["@string"] = { link = "String" }, -- For strings.
["@string.documentation"] = { fg = C.teal, style = O.styles.strings or {} }, -- For strings documenting code (e.g. Python docstrings).
["@string.regexp"] = { fg = C.pink, style = O.styles.strings or {} }, -- For regexes.
["@string.escape"] = { fg = C.pink, style = O.styles.strings or {} }, -- For escape characters within a string.
["@string.special"] = { link = "Special" }, -- other special strings (e.g. dates)
["@string.special.path"] = { link = "Special" }, -- filenames
["@string.special.symbol"] = { fg = C.flamingo }, -- symbols or atoms
["@string.special.url"] = { fg = C.blue, style = { "italic", "underline" } }, -- urls, links and emails
["@punctuation.delimiter.regex"] = { link = "@string.regexp" },
["@character"] = { link = "Character" }, -- character literals
["@character.special"] = { link = "SpecialChar" }, -- special characters (e.g. wildcards)
["@boolean"] = { link = "Boolean" }, -- For booleans.
["@number"] = { link = "Number" }, -- For all numbers
["@number.float"] = { link = "Float" }, -- For floats.
-- Types
["@type"] = { link = "Type" }, -- For types.
["@type.builtin"] = { fg = C.mauve, style = O.styles.types or {} }, -- For builtin types.
["@type.definition"] = { link = "Type" }, -- type definitions (e.g. `typedef` in C)
["@attribute"] = { link = "Constant" }, -- attribute annotations (e.g. Python decorators)
["@property"] = { fg = C.lavender, style = O.styles.properties or {} }, -- For fields, like accessing `bar` property on `foo.bar`. Overriden later for data languages and CSS.
-- Functions
["@function"] = { link = "Function" }, -- For function (calls and definitions).
["@function.builtin"] = { fg = C.peach, style = O.styles.functions or {} }, -- For builtin functions: table.insert in Lua.
["@function.call"] = { link = "Function" }, -- function calls
["@function.macro"] = { fg = C.pink, style = O.styles.functions or {} }, -- For macro defined functions (calls and definitions): each macro_rules in Rust.
["@function.method"] = { link = "Function" }, -- For method definitions.
["@function.method.call"] = { link = "Function" }, -- For method calls.
["@constructor"] = { fg = C.yellow }, -- For constructor calls and definitions: = { } in Lua, and Java constructors.
["@operator"] = { link = "Operator" }, -- For any operator: +, but also -> and * in C.
-- Keywords
["@keyword"] = { link = "Keyword" }, -- For keywords that don't fall in previous categories.
["@keyword.modifier"] = { link = "Keyword" }, -- For keywords modifying other constructs (e.g. `const`, `static`, `public`)
["@keyword.type"] = { link = "Keyword" }, -- For keywords describing composite types (e.g. `struct`, `enum`)
["@keyword.coroutine"] = { link = "Keyword" }, -- For keywords related to coroutines (e.g. `go` in Go, `async/await` in Python)
["@keyword.function"] = { fg = C.mauve, style = O.styles.keywords or {} }, -- For keywords used to define a function.
["@keyword.operator"] = { fg = C.mauve, style = O.styles.keywords or {} }, -- For new keyword operator
["@keyword.import"] = { link = "Include" }, -- For includes: #include in C, use or extern crate in Rust, or require in Lua.
["@keyword.repeat"] = { link = "Repeat" }, -- For keywords related to loops.
["@keyword.return"] = { fg = C.mauve, style = O.styles.keywords or {} },
["@keyword.debug"] = { link = "Exception" }, -- For keywords related to debugging
["@keyword.exception"] = { link = "Exception" }, -- For exception related keywords.
["@keyword.conditional"] = { link = "Conditional" }, -- For keywords related to conditionnals.
["@keyword.conditional.ternary"] = { link = "Operator" }, -- For ternary operators (e.g. `?` / `:`)
["@keyword.directive"] = { link = "PreProc" }, -- various preprocessor directives & shebangs
["@keyword.directive.define"] = { link = "Define" }, -- preprocessor definition directives
-- JS & derivative
["@keyword.export"] = { fg = C.mauve, style = O.styles.keywords },
-- Punctuation
["@punctuation.delimiter"] = { link = "Delimiter" }, -- For delimiters (e.g. `;` / `.` / `,`).
["@punctuation.bracket"] = { fg = C.overlay2 }, -- For brackets and parenthesis.
["@punctuation.special"] = { link = "Special" }, -- For special punctuation that does not fall in the categories before (e.g. `{}` in string interpolation).
-- Comment
["@comment"] = { link = "Comment" },
["@comment.documentation"] = { link = "Comment" }, -- For comments documenting code
["@comment.error"] = { fg = C.base, bg = C.red },
["@comment.warning"] = { fg = C.base, bg = C.yellow },
["@comment.hint"] = { fg = C.base, bg = C.blue },
["@comment.todo"] = { fg = C.base, bg = C.flamingo },
["@comment.note"] = { fg = C.base, bg = C.rosewater },
-- Markup
["@markup"] = { fg = C.text }, -- For strings considerated text in a markup language.
["@markup.strong"] = { fg = C.red, style = { "bold" } }, -- bold
["@markup.italic"] = { fg = C.red, style = { "italic" } }, -- italic
["@markup.strikethrough"] = { fg = C.text, style = { "strikethrough" } }, -- strikethrough text
["@markup.underline"] = { link = "Underlined" }, -- underlined text
["@markup.heading"] = { fg = C.blue }, -- titles like: # Example
["@markup.heading.markdown"] = { style = { "bold" } }, -- bold headings in markdown, but not in HTML or other markup
["@markup.math"] = { fg = C.blue }, -- math environments (e.g. `$ ... $` in LaTeX)
["@markup.quote"] = { fg = C.pink }, -- block quotes
["@markup.environment"] = { fg = C.pink }, -- text environments of markup languages
["@markup.environment.name"] = { fg = C.blue }, -- text indicating the type of an environment
["@markup.link"] = { fg = C.lavender }, -- text references, footnotes, citations, etc.
["@markup.link.label"] = { fg = C.lavender }, -- link, reference descriptions
["@markup.link.url"] = { fg = C.blue, style = { "italic", "underline" } }, -- urls, links and emails
["@markup.raw"] = { fg = C.green }, -- used for inline code in markdown and for doc in python (""")
["@markup.list"] = { fg = C.teal },
["@markup.list.checked"] = { fg = C.green }, -- todo notes
["@markup.list.unchecked"] = { fg = C.overlay1 }, -- todo notes
-- Diff
["@diff.plus"] = { link = "diffAdded" }, -- added text (for diff files)
["@diff.minus"] = { link = "diffRemoved" }, -- deleted text (for diff files)
["@diff.delta"] = { link = "diffChanged" }, -- deleted text (for diff files)
-- Tags
["@tag"] = { fg = C.blue }, -- Tags like HTML tag names.
["@tag.builtin"] = { fg = C.blue }, -- JSX tag names.
["@tag.attribute"] = { fg = C.yellow, style = O.styles.miscs or { "italic" } }, -- XML/HTML attributes (foo in foo="bar").
["@tag.delimiter"] = { fg = C.teal }, -- Tag delimiter like < > /
-- Misc
["@error"] = { link = "Error" },
-- Language specific:
-- Bash
["@function.builtin.bash"] = { fg = C.red, style = O.styles.miscs or { "italic" } },
["@variable.parameter.bash"] = { fg = C.green },
-- markdown
["@markup.heading.1.markdown"] = { link = "rainbow1" },
["@markup.heading.2.markdown"] = { link = "rainbow2" },
["@markup.heading.3.markdown"] = { link = "rainbow3" },
["@markup.heading.4.markdown"] = { link = "rainbow4" },
["@markup.heading.5.markdown"] = { link = "rainbow5" },
["@markup.heading.6.markdown"] = { link = "rainbow6" },
-- html
["@markup.heading.html"] = { link = "@markup" },
["@markup.heading.1.html"] = { link = "@markup" },
["@markup.heading.2.html"] = { link = "@markup" },
["@markup.heading.3.html"] = { link = "@markup" },
["@markup.heading.4.html"] = { link = "@markup" },
["@markup.heading.5.html"] = { link = "@markup" },
["@markup.heading.6.html"] = { link = "@markup" },
-- Java
["@constant.java"] = { fg = C.teal },
-- CSS
["@property.css"] = { fg = C.blue },
["@property.scss"] = { fg = C.blue },
["@property.id.css"] = { fg = C.yellow },
["@property.class.css"] = { fg = C.yellow },
["@type.css"] = { fg = C.lavender },
["@type.tag.css"] = { fg = C.blue },
["@string.plain.css"] = { fg = C.text },
["@number.css"] = { fg = C.peach },
["@keyword.directive.css"] = { link = "Keyword" }, -- CSS at-rules: https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule.
-- HTML
["@string.special.url.html"] = { fg = C.green }, -- Links in href, src attributes.
["@markup.link.label.html"] = { fg = C.text }, -- Text between <a></a> tags.
["@character.special.html"] = { fg = C.red }, -- Symbols such as &nbsp;.
-- Lua
["@constructor.lua"] = { link = "@punctuation.bracket" }, -- For constructor calls and definitions: = { } in Lua.
-- Python
["@constructor.python"] = { fg = C.sky }, -- __init__(), __new__().
-- YAML
["@label.yaml"] = { fg = C.yellow }, -- Anchor and alias names.
-- Ruby
["@string.special.symbol.ruby"] = { fg = C.flamingo },
-- PHP
["@function.method.php"] = { link = "Function" },
["@function.method.call.php"] = { link = "Function" },
-- C/CPP
["@keyword.import.c"] = { fg = C.yellow },
["@keyword.import.cpp"] = { fg = C.yellow },
-- C#
["@attribute.c_sharp"] = { fg = C.yellow },
-- gitcommit
["@comment.warning.gitcommit"] = { fg = C.yellow },
-- gitignore
["@string.special.path.gitignore"] = { fg = C.text },
-- Misc
gitcommitSummary = { fg = C.rosewater, style = O.styles.miscs or { "italic" } },
zshKSHFunction = { link = "Function" },
}
-- Legacy highlights
colors["@parameter"] = colors["@variable.parameter"]
colors["@field"] = colors["@variable.member"]
colors["@namespace"] = colors["@module"]
colors["@float"] = colors["@number.float"]
colors["@symbol"] = colors["@string.special.symbol"]
colors["@string.regex"] = colors["@string.regexp"]
colors["@text"] = colors["@markup"]
colors["@text.strong"] = colors["@markup.strong"]
colors["@text.emphasis"] = colors["@markup.italic"]
colors["@text.underline"] = colors["@markup.underline"]
colors["@text.strike"] = colors["@markup.strikethrough"]
colors["@text.uri"] = colors["@markup.link.url"]
colors["@text.math"] = colors["@markup.math"]
colors["@text.environment"] = colors["@markup.environment"]
colors["@text.environment.name"] = colors["@markup.environment.name"]
colors["@text.title"] = colors["@markup.heading"]
colors["@text.literal"] = colors["@markup.raw"]
colors["@text.reference"] = colors["@markup.link"]
colors["@text.todo.checked"] = colors["@markup.list.checked"]
colors["@text.todo.unchecked"] = colors["@markup.list.unchecked"]
colors["@comment.note"] = colors["@comment.hint"]
-- @text.todo is now for todo comments, not todo notes like in markdown
colors["@text.todo"] = colors["@comment.todo"]
colors["@text.warning"] = colors["@comment.warning"]
colors["@text.note"] = colors["@comment.note"]
colors["@text.danger"] = colors["@comment.error"]
-- @text.uri is now
-- > @markup.link.url in markup links
-- > @string.special.url outside of markup
colors["@text.uri"] = colors["@markup.link.uri"]
colors["@method"] = colors["@function.method"]
colors["@method.call"] = colors["@function.method.call"]
colors["@text.diff.add"] = colors["@diff.plus"]
colors["@text.diff.delete"] = colors["@diff.minus"]
colors["@type.qualifier"] = colors["@keyword.modifier"]
colors["@keyword.storage"] = colors["@keyword.modifier"]
colors["@define"] = colors["@keyword.directive.define"]
colors["@preproc"] = colors["@keyword.directive"]
colors["@storageclass"] = colors["@keyword.storage"]
colors["@conditional"] = colors["@keyword.conditional"]
colors["@exception"] = colors["@keyword.exception"]
colors["@include"] = colors["@keyword.import"]
colors["@repeat"] = colors["@keyword.repeat"]
colors["@symbol.ruby"] = colors["@string.special.symbol.ruby"]
colors["@variable.member.yaml"] = colors["@field.yaml"]
colors["@text.title.1.markdown"] = colors["@markup.heading.1.markdown"]
colors["@text.title.2.markdown"] = colors["@markup.heading.2.markdown"]
colors["@text.title.3.markdown"] = colors["@markup.heading.3.markdown"]
colors["@text.title.4.markdown"] = colors["@markup.heading.4.markdown"]
colors["@text.title.5.markdown"] = colors["@markup.heading.5.markdown"]
colors["@text.title.6.markdown"] = colors["@markup.heading.6.markdown"]
colors["@method.php"] = colors["@function.method.php"]
colors["@method.call.php"] = colors["@function.method.call.php"]
return colors
end
return M

Some files were not shown because too many files have changed in this diff Show more