1

Regenerate nvim config

This commit is contained in:
2024-06-02 03:29:20 +02:00
parent 75eea0c030
commit ef2e28883d
5576 changed files with 604886 additions and 503 deletions

View File

@ -0,0 +1,18 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
insert_final_newline = true
[*.lua]
indent_style = tab
[*.{diff,md}]
trim_trailing_whitespace = false
indent_style = space
indent_size = 4

View File

@ -0,0 +1,93 @@
name: Bug report
description: Report a problem with Catppuccin
labels: [bug]
body:
- type: textarea
attributes:
label: "Description"
description: "A short description of the problem you are reporting."
validations:
required: true
- type: textarea
attributes:
label: "Neovim version"
description: "Output of `nvim --version` (Catppuccin requires neovim >= 0.8)"
render: markdown
placeholder: |
NVIM v0.9.0
Build type: Release
LuaJIT 2.1.0-beta3
validations:
required: true
- type: input
attributes:
label: "Terminal and multiplexer"
placeholder: "kitty 0.29.2 with tmux 3.3a"
validations:
required: true
- type: markdown
attributes:
value: |
# FOR TMUX USERS
FOLLOW THESE GIST BEFORE OPENING THE ISSUE
- [Enable true color support](https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6) to fix the [abnormal colors](https://github.com/catppuccin/nvim/issues/415)
- [Enable italic font support](https://gist.github.com/gyribeiro/4192af1aced7a1b555df06bd3781a722) to fix the [incorrect if, then, else, end highlights](https://github.com/catppuccin/nvim/issues/428)
- type: input
attributes:
label: "Catppuccin version / branch / rev"
placeholder: "catppuccin v1.4.0"
validations:
required: true
- type: textarea
attributes:
label: "Steps to reproduce"
description: "Steps to reproduce using the minimal config provided below."
placeholder: |
1. `nvim -u repro.lua`
2. ...
validations:
required: true
- type: textarea
attributes:
label: "Expected behavior"
description: "A description of the behavior you expected:"
validations:
required: true
- type: textarea
attributes:
label: "Actual behavior"
description: "Observed behavior (may optionally include logs, images, or videos)."
validations:
required: true
- type: textarea
attributes:
label: Repro
description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua`
value: |
-- DO NOT change the paths and don't remove the colorscheme
local root = vim.fn.fnamemodify("./.repro", ":p")
-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end
-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath })
end
vim.opt.runtimepath:prepend(lazypath)
-- install plugins
local plugins = {
"catppuccin/nvim",
-- add any other plugins here
}
require("lazy").setup(plugins, {
root = root .. "/plugins",
})
vim.cmd.colorscheme("catppuccin")
-- add anything else here
render: Lua

View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Question
url: https://discord.com/servers/catppuccin-907385605422448742
about: Join our discord server for real-time answers and more!

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: "Suggest an idea for the project"
title: ""
labels: enhancement
assignees: ""
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is.
Ex. I'm always frustrated when [...]. My workflow is like this [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,16 @@
🎉 First off, thanks for taking the time to contribute! 🎉
Here are some guidelines:
- Format code using [stylua](https://github.com/johnnymorganz/stylua).
- New plugin integration should be added in alphabetical order:
- to the [README](https://github.com/catppuccin/nvim#integrations) (vimdoc is auto-generated).
- to [types.lua](https://github.com/catppuccin/nvim/blob/main/lua/catppuccin/types.lua)
- Create a topic branch on your fork for your specific PR.
- Use [conventionalcommits.org's](https://www.conventionalcommits.org/en/v1.0.0/)
rules for explicit and meaningful commit messages.
- If it's your first time contributing to a project, then read
[About pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)
on Github's docs.
Here are some tips:
- Use `vim.g.catppuccin_debug = true` to get live config re-loading

View File

@ -0,0 +1,14 @@
import json
import urllib.request
url = "https://github.com/catppuccin/palette/raw/main/palette.json"
with urllib.request.urlopen(url) as response:
flavors = json.loads(response.read().decode())
for flavor in flavors:
with open(f"lua/catppuccin/palettes/{flavor}.lua", "w") as f:
f.write("return {\n")
for color in flavors[flavor]["colors"]:
f.write(f'\t{color} = "{flavors[flavor]["colors"][color]["hex"]}",\n')
f.write("}\n")

View File

@ -0,0 +1,20 @@
name: StyLua
on:
pull_request:
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
stylua:
name: StyLua
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: JohnnyMorganz/stylua-action@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
version: latest
args: --check --config-path=stylua.toml .

View File

@ -0,0 +1,55 @@
---
name: Neovim
on:
pull_request:
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
ubuntu:
name: Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Neovim
uses: MunifTanjim/setup-neovim-action@v1
with:
tag: nightly
- name: Run neovim
run: |
nvim --version
nvim --headless -u tests/init.lua +q
macos:
name: Macos
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Neovim
run: |
wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim-macos-x86_64.tar.gz
xattr -c ./nvim-macos-x86_64.tar.gz
tar xzvf nvim-macos-x86_64.tar.gz &> /dev/null
ln -s $(pwd)/nvim-macos-x86_64/bin/nvim /usr/local/bin/nvim
- name: Run neovim
run: |
nvim --version
nvim --headless -u tests/init.lua +q
windows:
name: Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Neovim
run: |
C:\msys64\usr\bin\wget.exe -q https://github.com/neovim/neovim/releases/download/nightly/nvim-win64.zip
7z x nvim-win64.zip
Add-Content $env:GITHUB_PATH ".\nvim-win64\bin\"
- name: Run neovim
run: |
nvim --version
nvim --headless -u tests/init.lua +q

View File

@ -0,0 +1,30 @@
name: Palette
on:
push:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Run every day at midnight UTC
jobs:
createPullRequest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Make changes to pull request
run: python3 ./.github/scripts/update-palette.py
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v5
with:
commit-message: 'feat: auto-sync upstream palettes'
committer: GitHub <noreply@github.com>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff: false
branch: new-palettes
delete-branch: true
title: 'feat: auto-sync upstream palettes'
body: |
Auto-update `lua/catppuccin/palettes/` based on https://github.com/catppuccin/palette/blob/main/palette.json

View File

@ -0,0 +1,26 @@
name: panvimdoc
on:
push:
paths:
- '**.md'
jobs:
docs:
runs-on: ubuntu-latest
name: pandoc to vimdoc
steps:
- uses: actions/checkout@v4
- name: panvimdoc
uses: kdheepak/panvimdoc@main
with:
vimdoc: catppuccin
description: "Soothing pastel theme for NeoVim"
pandoc: "README.md"
toc: true
version: "nvim >= 0.8.0"
treesitter: true
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: "docs: auto generate vimdoc"
branch: ${{ github.head_ref }}

View File

@ -0,0 +1,29 @@
name: release
on:
push:
pull_request:
workflow_dispatch:
jobs:
release:
name: release
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
steps:
- uses: google-github-actions/release-please-action@v3
id: release
with:
release-type: simple
package-name: catppuccin
- uses: actions/checkout@v4
- name: tag stable versions
if: ${{ steps.release.outputs.release_created }}
run: |
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git"
git tag -d stable || true
git push origin :stable || true
git tag -a stable -m "Last Stable Release"
git push origin stable

View File

@ -0,0 +1,42 @@
---
name: Tests
on:
pull_request:
push:
paths-ignore:
- "*.md"
branches:
- main
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Run every day at midnight UTC
jobs:
ubuntu:
name: Plenary
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: nvim
- uses: actions/checkout@v4
with:
ref: user-configs
path: user-configs
- run: |
mv user-configs/tests/* nvim/tests/
- name: Install Neovim
uses: MunifTanjim/setup-neovim-action@v1
with:
tag: nightly
- name: Fetch dependencies
run: |
git clone --depth 1 https://github.com/nvim-lua/plenary.nvim ~/.local/share/nvim/site/pack/vendor/start/plenary.nvim
ln -s $(pwd) ~/.local/share/nvim/site/pack/vendor/start
- name: Run tests
working-directory: ./nvim
run: |
nvim --version
[ ! -d tests ] && exit 0
nvim --headless -u tests/minimal_init.vim -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/minimal_init.vim', sequential = true}"

View File

@ -0,0 +1,58 @@
---
name: Vim
on:
pull_request:
push:
paths-ignore:
- "*.md"
branches:
- main
jobs:
ubuntu:
name: Ubuntu
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Vim
shell: bash
run: |
sudo apt-get update
sudo apt-get install vim-gtk lua5.4
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- name: Run vim
run: |
vim --version
vim -u tests/init.vim
macos:
name: Macos
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Vim
run: |
brew install vim
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- name: Run vim
run: |
vim --version
vim -u tests/init.vim
windows:
name: Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Install Vim
run: |
choco install vim
C:\msys64\usr\bin\wget.exe -q https://downloads.sourceforge.net/project/luabinaries/5.4.2/Tools%20Executables/lua-5.4.2_Win64_bin.zip
7z x lua-5.4.2_Win64_bin.zip
move lua54.dll C:\Windows\System32\
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
ni $HOME/vimfiles/autoload/plug.vim -Force
- name: Run vim
run: |
vim --version
gvim -u tests/init.vim

View File

@ -0,0 +1,4 @@
doc/tags
.vscode/
.DS_Store
.repro

View File

@ -0,0 +1,166 @@
# Changelog
## [1.7.0](https://github.com/catppuccin/nvim/compare/v1.6.0...v1.7.0) (2024-04-13)
### Features
* add ability to toggle default integrations ([#687](https://github.com/catppuccin/nvim/issues/687)) ([e60e400](https://github.com/catppuccin/nvim/commit/e60e400c411519f29e203185ddda121d4ec8ef57))
* add support for `outline.nvim` plugin ([#647](https://github.com/catppuccin/nvim/issues/647)) ([048c18f](https://github.com/catppuccin/nvim/commit/048c18fc531703815f5e10765ea46ce9b2c75ae4))
* **defaults:** enable neotree ([c536623](https://github.com/catppuccin/nvim/commit/c536623eac60f8443c93ae4ca0e03b51574b5f50))
* **defaults:** enable treesitter context ([dc392c0](https://github.com/catppuccin/nvim/commit/dc392c067739326c3cff380a8c52b0f31319e6dd)), closes [#683](https://github.com/catppuccin/nvim/issues/683)
* **feline:** fix feline integration ([#685](https://github.com/catppuccin/nvim/issues/685)) ([07679af](https://github.com/catppuccin/nvim/commit/07679af1af4f446655682ee2557b5840ac551504))
* **feline:** improve feline lsp display ([#688](https://github.com/catppuccin/nvim/issues/688)) ([f66654d](https://github.com/catppuccin/nvim/commit/f66654d5d5190865333e8e46474c1593302c558e))
* **integration:** add reactive.nvim integration ([#654](https://github.com/catppuccin/nvim/issues/654)) ([151e478](https://github.com/catppuccin/nvim/commit/151e478edf8108cfd451a3cbd44d0a20503e7b42))
* **lsp:** add highlight for `LspCodeLensSeparator` ([#693](https://github.com/catppuccin/nvim/issues/693)) ([02bdd74](https://github.com/catppuccin/nvim/commit/02bdd749931a5d739063562e57531c118e081882))
* set `[@comment](https://github.com/comment).warning` that does not affect readability in gitcommit ([#675](https://github.com/catppuccin/nvim/issues/675)) ([045e349](https://github.com/catppuccin/nvim/commit/045e3499d9ec8d84635fb08877ae44fd33f6a38d))
* **treesitter:** add styles.miscs to disable hardcoded italics ([#659](https://github.com/catppuccin/nvim/issues/659)) ([c0de3b4](https://github.com/catppuccin/nvim/commit/c0de3b46811fe1ce3912e2245a9dfbea6b41c300))
* **treesitter:** follow upstream captures ([#630](https://github.com/catppuccin/nvim/issues/630)) ([f288876](https://github.com/catppuccin/nvim/commit/f288876c6d05d3bb91b0e72b8031fe9e26ef05b8))
* **treesitter:** follow upstream captures ([#694](https://github.com/catppuccin/nvim/issues/694)) ([08c6417](https://github.com/catppuccin/nvim/commit/08c6417bdc3b29e5f8c53e2cfe4067f288d49a54))
* use a more distinguishable color for todos ([#645](https://github.com/catppuccin/nvim/issues/645)) ([657cc4f](https://github.com/catppuccin/nvim/commit/657cc4f35cf193cadac7e5471eb802c97e7a1b59))
### Bug Fixes
* **compile:** string.dump isn't deterministic ([836de8b](https://github.com/catppuccin/nvim/commit/836de8bc1898250b69332e66cbe993058870f849)), closes [#664](https://github.com/catppuccin/nvim/issues/664)
* **dropbar:** correct keyword highlight link ([#652](https://github.com/catppuccin/nvim/issues/652)) ([afab7ec](https://github.com/catppuccin/nvim/commit/afab7ec2a79c7127627dede79c0018b6e45663d0))
* ensure consistency between JSX and HTML markup ([#660](https://github.com/catppuccin/nvim/issues/660)) ([9703f22](https://github.com/catppuccin/nvim/commit/9703f227bfab20d04bcee62d2f08f1795723b4ae))
* **flavour:** g:catppuccin_flavour backwards compatibility ([fc98570](https://github.com/catppuccin/nvim/commit/fc98570d85ae772e56dc42cf8d7d6a497a909bdb))
* **flavour:** respect terminal's background ([#696](https://github.com/catppuccin/nvim/issues/696)) ([d5760c5](https://github.com/catppuccin/nvim/commit/d5760c53ae3b48f0f539298ec4165adc5c0afb19))
* **illuminate:** update type ([#690](https://github.com/catppuccin/nvim/issues/690)) ([30930f9](https://github.com/catppuccin/nvim/commit/30930f9656cffd068bcf52ced70cdfffd1e83a44))
* **integrations:** respect default options ([c2e6f8e](https://github.com/catppuccin/nvim/commit/c2e6f8e7eb8d0ebf55700c89bdf842809aeecf09))
* **neotree:** add `NeoTreeModified` ([#642](https://github.com/catppuccin/nvim/issues/642)) ([6853cc8](https://github.com/catppuccin/nvim/commit/6853cc8e6efc76e85e10ec153d05fc2520653508))
* **neotree:** blend sidebar with win separator ([56fb982](https://github.com/catppuccin/nvim/commit/56fb98218d22d5c326387bf9e4076227e7372e6b)), closes [#670](https://github.com/catppuccin/nvim/issues/670)
* repair treesitter underlined text (`Underline` -&gt; `Underlined`) ([#663](https://github.com/catppuccin/nvim/issues/663)) ([42b687c](https://github.com/catppuccin/nvim/commit/42b687c42a35633366ed45e562bf921fb914048b))
* respect background variable on startup ([6b7a4df](https://github.com/catppuccin/nvim/commit/6b7a4dfdf241c8be0af6ec691b302e85cce03cab))
* **semantic_tokens:** namespace -&gt; module ([196f301](https://github.com/catppuccin/nvim/commit/196f301de06090c40d7f98297675ac38ae7d6675))
* **treesitter:** some captures missing leading `@` ([#650](https://github.com/catppuccin/nvim/issues/650)) ([bc1f215](https://github.com/catppuccin/nvim/commit/bc1f2151f23227ba02ac203c2c59ad693352a741))
* use external index for lsp counting ([c3572a9](https://github.com/catppuccin/nvim/commit/c3572a968a79b64bd0ef16f2c3e93014f112e66d))
* wrong color shown when using color_overrides ([#658](https://github.com/catppuccin/nvim/issues/658)) ([b76ada8](https://github.com/catppuccin/nvim/commit/b76ada82bf2019d5e343018b4104cc9266900c16)), closes [#657](https://github.com/catppuccin/nvim/issues/657)
## [1.6.0](https://github.com/catppuccin/nvim/compare/v1.5.0...v1.6.0) (2023-12-28)
### Features
* add `WinSeparator` highlight group ([#623](https://github.com/catppuccin/nvim/issues/623)) ([988c0b2](https://github.com/catppuccin/nvim/commit/988c0b2dde4140572ed37c6b8b5d5deac0219f9f))
* **bufferline:** support `no_underline` option ([#601](https://github.com/catppuccin/nvim/issues/601)) ([f7638a1](https://github.com/catppuccin/nvim/commit/f7638a1a65cbffdd01a9ddac0018a20ec4be29e2))
* **dashboard:** add highlight groups for `doom` theme ([#593](https://github.com/catppuccin/nvim/issues/593)) ([3bdd5e8](https://github.com/catppuccin/nvim/commit/3bdd5e8296971f8c7ba5e499dac8247c3d621508))
* **integrations:** enable dap & dap_ui by default ([64dc309](https://github.com/catppuccin/nvim/commit/64dc309bc157779691be38bbfc5123584e0a4a85))
* **lualine:** darken lualine `b` section for better readability ([#606](https://github.com/catppuccin/nvim/issues/606)) ([32ee05d](https://github.com/catppuccin/nvim/commit/32ee05d014a4611555c7f56a73283efb4718d9c5))
* **mini.indentscope:** add scope color ([#592](https://github.com/catppuccin/nvim/issues/592)) ([795f639](https://github.com/catppuccin/nvim/commit/795f639ac50d6b8400c1d5868fca54844d579f37))
* **neogit:** support new highlight groups ([#610](https://github.com/catppuccin/nvim/issues/610)) ([f90c7c0](https://github.com/catppuccin/nvim/commit/f90c7c0c467722dc7acacbae3c3904720e09efb6))
* **notify:** add `NotifyBackground` hl group ([#637](https://github.com/catppuccin/nvim/issues/637)) ([c7cf3af](https://github.com/catppuccin/nvim/commit/c7cf3afe2eb6d9058eec4abb3ace2c1da006478a))
### Bug Fixes
* **airline:** missing refresh function ([dcef0a0](https://github.com/catppuccin/nvim/commit/dcef0a062de380885193fb0f919217d58b979753)), closes [#594](https://github.com/catppuccin/nvim/issues/594)
* **dashboard:** `orange` -&gt; `peach` ([54002a1](https://github.com/catppuccin/nvim/commit/54002a1adfd543f54352b3ec79d4e62c4163e9ee))
* **flash:** link `FlashPrompt` to `NormalFloat` ([#605](https://github.com/catppuccin/nvim/issues/605)) ([40dc9f0](https://github.com/catppuccin/nvim/commit/40dc9f0621c55bd40da4ad0731fac44d15bb393a))
* **lualine:** match lualine mode colors for insert and terminal ([#597](https://github.com/catppuccin/nvim/issues/597)) ([ea52fe8](https://github.com/catppuccin/nvim/commit/ea52fe8a0b1e4a820df0d0cf9a6a5a0e18c3eaa0))
* **neogit:** remove `NeogitCursorLine` from integration ([#613](https://github.com/catppuccin/nvim/issues/613)) ([5e4be43](https://github.com/catppuccin/nvim/commit/5e4be43e1a6acb044d5c55cd10f22461c40656ed))
* **neogit:** remove diff context highlight fg ([1b40f07](https://github.com/catppuccin/nvim/commit/1b40f072305be71b73c730ff5c7d881e638fd040)), closes [#627](https://github.com/catppuccin/nvim/issues/627)
* **neogit:** tweak diff context highlighting ([#614](https://github.com/catppuccin/nvim/issues/614)) ([cc717ac](https://github.com/catppuccin/nvim/commit/cc717acba29259d578548973c41448b092453c52))
* **neotree:** change color of untracked files ([#608](https://github.com/catppuccin/nvim/issues/608)) ([d7521f6](https://github.com/catppuccin/nvim/commit/d7521f6050b94cb0e23067f63829d86886f870fe))
* **neotree:** make popup titlebar text visible ([#618](https://github.com/catppuccin/nvim/issues/618)) ([919d1f7](https://github.com/catppuccin/nvim/commit/919d1f786338ebeced798afbf28cd085cd54542a))
* **noice:** respect transparency ([#632](https://github.com/catppuccin/nvim/issues/632)) ([4fbab1f](https://github.com/catppuccin/nvim/commit/4fbab1f01488718c3d54034a473d0346346b90e3))
* **selene:** allow mixed tables ([#611](https://github.com/catppuccin/nvim/issues/611)) ([9f3c13b](https://github.com/catppuccin/nvim/commit/9f3c13bbcf16fcaec3a429c03743a13e5923f3e3))
* sync focused and unfocused winbars ([#628](https://github.com/catppuccin/nvim/issues/628)) ([079500a](https://github.com/catppuccin/nvim/commit/079500a625f3ae5aa6efb758f1a17fe4c7a57e52))
* **vim:** resolve deprecation of nested [[ ([7a4bcda](https://github.com/catppuccin/nvim/commit/7a4bcdadafc59a5bedbd866c643fa486d8cca4a1))
## [1.5.0](https://github.com/catppuccin/nvim/compare/v1.4.0...v1.5.0) (2023-09-29)
### Features
* add kitty detection ([d3da439](https://github.com/catppuccin/nvim/commit/d3da43907d1896ba3e68a62f18820d1d12574317))
* add ufo integration ([1f53686](https://github.com/catppuccin/nvim/commit/1f536869b1a2ca1710fc892db84d7e8bbc6ad8d9))
* add workaround for kitty transparent issue ([#579](https://github.com/catppuccin/nvim/issues/579)) ([f36fa5c](https://github.com/catppuccin/nvim/commit/f36fa5cdce162450df88298a16631eeed16b68a3))
* **compile:** use indexed cmd ([85e9360](https://github.com/catppuccin/nvim/commit/85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280))
* **illuminate:** enabled by default and optional lsp option ([5b44baa](https://github.com/catppuccin/nvim/commit/5b44baa4aff0ff45c042620ee960d283a79807a1)), closes [#571](https://github.com/catppuccin/nvim/issues/571)
* **indent-blankline:** update to v3, add scope color ([#585](https://github.com/catppuccin/nvim/issues/585)) ([f04336b](https://github.com/catppuccin/nvim/commit/f04336ba4a2400ee2c5250068b39541652c0962f))
* **integrations:** add NormalNvim ([0e3c128](https://github.com/catppuccin/nvim/commit/0e3c128eea8a7de692778d52b8429817df5c9040)), closes [#580](https://github.com/catppuccin/nvim/issues/580)
* **integrations:** add notifier.nvim ([d029098](https://github.com/catppuccin/nvim/commit/d029098e124f6201a07298c0c1c499ed8d5aef76)), closes [#574](https://github.com/catppuccin/nvim/issues/574)
* **lib:** soft deprecate highlighter ([8202348](https://github.com/catppuccin/nvim/commit/82023485fec1703d6f700a4b2a92fd431d4882f4))
* **syntax:** respect style guide part 3 ([#576](https://github.com/catppuccin/nvim/issues/576)) ([81096ca](https://github.com/catppuccin/nvim/commit/81096cabe67f360acb06d64c0f7db8dd840afeba))
### Bug Fixes
* **coc:** improve inlay hints ([#582](https://github.com/catppuccin/nvim/issues/582)) ([3d9a5ed](https://github.com/catppuccin/nvim/commit/3d9a5ed556e289bce6c1fb0af89ec838360641b2))
* **editor:** invisible fold with transparent ([1c15c5e](https://github.com/catppuccin/nvim/commit/1c15c5e51a998c9198d63c6d2b75e9d1e4a84541)), closes [#577](https://github.com/catppuccin/nvim/issues/577)
* **template:** broken tmux italic gist link ([128e0d2](https://github.com/catppuccin/nvim/commit/128e0d27946491da979e2e04f5a4acf330ccdefd))
* **treesitter:** invalid string in type builtin ([135f9b0](https://github.com/catppuccin/nvim/commit/135f9b01386fa18da6d75c16ceb83e1aa3669430))
* **ufo:** use folded ellipsis ([846388d](https://github.com/catppuccin/nvim/commit/846388d137590e653390ce2f84fea5351a7516ac))
* **vim:** add vim.env index ([1786287](https://github.com/catppuccin/nvim/commit/17862877792db104d48c3260aec0ace92d55f863))
### Performance Improvements
* **compile:** reduce else statement ([a937d54](https://github.com/catppuccin/nvim/commit/a937d546f4783a1ff67f84043d2d7871ad4ecd83))
## [1.4.0](https://github.com/catppuccin/nvim/compare/v1.3.0...v1.4.0) (2023-08-21)
### Features
* add ability to enable/disable all integrations by default ([#552](https://github.com/catppuccin/nvim/issues/552)) ([737f60a](https://github.com/catppuccin/nvim/commit/737f60a3a25c79d9bb9574092f6c6c958a3d747a))
* add flash.nvim integration ([#550](https://github.com/catppuccin/nvim/issues/550)) ([381eddd](https://github.com/catppuccin/nvim/commit/381edddc4ad12126cfa7276818bca07c3d5606ed))
* enable neogit by default ([91f9f6f](https://github.com/catppuccin/nvim/commit/91f9f6fb413caff2bd06e326ec174deee1c1b7a9)), closes [#568](https://github.com/catppuccin/nvim/issues/568)
* **flash:** enable by default ([#551](https://github.com/catppuccin/nvim/issues/551)) ([a84ee18](https://github.com/catppuccin/nvim/commit/a84ee1848bfac4601771805396552bdbaa0a0e91))
* **gitsigns:** Support GitSignsCurrentLineBlame highlights ([#567](https://github.com/catppuccin/nvim/issues/567)) ([3fdd394](https://github.com/catppuccin/nvim/commit/3fdd3942567503d23b65ccc21e7d7757334defd5))
* **lspsaga:** support v0.3 ([#543](https://github.com/catppuccin/nvim/issues/543)) ([3ffd2f5](https://github.com/catppuccin/nvim/commit/3ffd2f511f3dc6c01258923d7170ccaf1445634b))
* **lspsaga:** upstream new hl groups ([#544](https://github.com/catppuccin/nvim/issues/544)) ([e0dd3f9](https://github.com/catppuccin/nvim/commit/e0dd3f9bb1513c98ab4ef9404ea26e18babf858a))
* **neogit:** update highlights ([#545](https://github.com/catppuccin/nvim/issues/545)) ([#549](https://github.com/catppuccin/nvim/issues/549)) ([371430f](https://github.com/catppuccin/nvim/commit/371430f32f2637d2dd5796399b3982d4cada61d8))
* **telescope:** make nvchad style great again ([#538](https://github.com/catppuccin/nvim/issues/538)) ([51961da](https://github.com/catppuccin/nvim/commit/51961da41e8189ca6f9ed73f37dfa83087b4e65c))
* **treesitter-context:** add color for normal background ([#564](https://github.com/catppuccin/nvim/issues/564)) ([b1caff9](https://github.com/catppuccin/nvim/commit/b1caff988fb395c0aae585cecff58b1ffa0a21c6))
### Bug Fixes
* don't highlight fg of `PmenuSel` ([#554](https://github.com/catppuccin/nvim/issues/554)) ([6425df1](https://github.com/catppuccin/nvim/commit/6425df128d46f2db2cccf9aa7a66ca2823c1d153))
* highlight NonText characters ([#547](https://github.com/catppuccin/nvim/issues/547)) ([bfe91df](https://github.com/catppuccin/nvim/commit/bfe91dfb3a19ffd4445e43611fcde68acbb3fed4))
* **integration_default:** hotfix for [#559](https://github.com/catppuccin/nvim/issues/559) ([4913a8b](https://github.com/catppuccin/nvim/commit/4913a8b47554a89a71ed44da39fc1f6e5c2841c3))
* **integration_default:** override `enabled` key only if integration has one ([#559](https://github.com/catppuccin/nvim/issues/559)) ([9709f82](https://github.com/catppuccin/nvim/commit/9709f8251a40e874238d6f9436cf4fba654b60e1))
* **noice:** set background blend to 0 for mini popups ([#556](https://github.com/catppuccin/nvim/issues/556)) ([2d50a4e](https://github.com/catppuccin/nvim/commit/2d50a4e3aecffea4144801bb3c0a3cf7b88fdd6b))
* **nvim-window-picker:** missing table keys ([#569](https://github.com/catppuccin/nvim/issues/569)) ([b9e4dae](https://github.com/catppuccin/nvim/commit/b9e4dae160bf9bc28d4ceb6d29a7e0134b107724))
* **options:** disable deprecated ts_rainbow and ts_rainbow2 by default ([096385d](https://github.com/catppuccin/nvim/commit/096385dd024ecd1332659916fd7f09d7d18d7374))
* **telescope:** keep consistency between the two styles ([#540](https://github.com/catppuccin/nvim/issues/540)) ([dfbc8e2](https://github.com/catppuccin/nvim/commit/dfbc8e2b478a65104d34556698067f2d40f1c227))
* **telescope:** respect transparency ([#542](https://github.com/catppuccin/nvim/issues/542)) ([f36af06](https://github.com/catppuccin/nvim/commit/f36af062e3242f333b12fe9b730053fdda36e000))
* **treesitter:** avoid possible nil ([17ae783](https://github.com/catppuccin/nvim/commit/17ae783b88bb7ae73dc004370473138d9d43ee46))
* **types:** make all options besides nested `enabled` optional ([#565](https://github.com/catppuccin/nvim/issues/565)) ([490078b](https://github.com/catppuccin/nvim/commit/490078b1593c6609e6a50ad5001e7902ea601824))
## [1.3.0](https://github.com/catppuccin/nvim/compare/v1.2.0...v1.3.0) (2023-07-10)
### Features
* auto-sync upstream palettes ([#507](https://github.com/catppuccin/nvim/issues/507)) ([8426d3b](https://github.com/catppuccin/nvim/commit/8426d3bfd55f4dc68ae451a82927d2ff88e47e95))
* **debug:** add auto compile on save ([c9cc5a9](https://github.com/catppuccin/nvim/commit/c9cc5a997f1dae3f35b4bdd62f35958fee363ab4))
* **dropbar:** add new highlight groups ([4f22a1e](https://github.com/catppuccin/nvim/commit/4f22a1e78460ae06e78a1085a8e0e6cc8027aef2)), closes [#503](https://github.com/catppuccin/nvim/issues/503)
* **integration:** add dropbar.nvim ([#499](https://github.com/catppuccin/nvim/issues/499)) ([e86aeb8](https://github.com/catppuccin/nvim/commit/e86aeb8ca0f03e97192074fba9dc6c836f953a83))
* **integrations:** accept both boolean and table config ([#534](https://github.com/catppuccin/nvim/issues/534)) ([f0b947a](https://github.com/catppuccin/nvim/commit/f0b947ab8cfdb9ca7ba6230b30bbc1ed48dd30a1))
* **integrations:** add rainbow_delimiters.nvim support ([#530](https://github.com/catppuccin/nvim/issues/530)) ([cc8d3ab](https://github.com/catppuccin/nvim/commit/cc8d3abc944d78cb6bf2a4cc88871ab383c4da62))
* **markdown:** add rainbow headlines ([#493](https://github.com/catppuccin/nvim/issues/493)) ([cc517bd](https://github.com/catppuccin/nvim/commit/cc517bdcb66a0f8dee90bab10ccdd651fa967bbe))
* **native_lsp:** add ability to disable background for inlay hints ([#518](https://github.com/catppuccin/nvim/issues/518)) ([b032ced](https://github.com/catppuccin/nvim/commit/b032cedb90c42a7bfbfbe2f91479505330f4a396))
* **native_lsp:** support inlay hints ([#516](https://github.com/catppuccin/nvim/issues/516)) ([d32b0bb](https://github.com/catppuccin/nvim/commit/d32b0bb5b1033920de5026e326869838aba856ee))
* **navic:** change text color ([278bfeb](https://github.com/catppuccin/nvim/commit/278bfeb61bd627dc2a8885180a0441a1ebe65a41))
* **semantic_tokens:** add some lsp semantic tokens ([#512](https://github.com/catppuccin/nvim/issues/512)) ([506a4aa](https://github.com/catppuccin/nvim/commit/506a4aa13443e0104ea49b99947cc09488d0791d))
* **telescope:** telescope flat style support ([#521](https://github.com/catppuccin/nvim/issues/521)) ([fc73faa](https://github.com/catppuccin/nvim/commit/fc73faa37bda393e3c4f846fb3e810a6ac8aae16))
* **types:** add type annotations ([#495](https://github.com/catppuccin/nvim/issues/495)) ([1d3eda1](https://github.com/catppuccin/nvim/commit/1d3eda15703ba70f57e94e6451db55914ff7017f))
* **workflows:** auto-sync upstream palettes ([e9fbeec](https://github.com/catppuccin/nvim/commit/e9fbeec106562475e82bae79304b6a421eee73f3))
### Bug Fixes
* calling palette before setup ([841d8ab](https://github.com/catppuccin/nvim/commit/841d8abf3be39de833d95a592a1fbbb1b9851296))
* **feline:** disable lsp status on nightly ([#510](https://github.com/catppuccin/nvim/issues/510)) ([9aaf5b4](https://github.com/catppuccin/nvim/commit/9aaf5b4ce5cd256695d8bbddb65869d19919abde))
* **feline:** use new `vim.lsp.status()` method ([#509](https://github.com/catppuccin/nvim/issues/509)) ([57ee09d](https://github.com/catppuccin/nvim/commit/57ee09dd532bd442b53d65c2b2f35550960981ed))
* **lsp:** do not link `LspInlayHint` to `Comment` directly ([#517](https://github.com/catppuccin/nvim/issues/517)) ([5dc566c](https://github.com/catppuccin/nvim/commit/5dc566c4206f383657d67500253559d3be82c421))
* **mapper:** remove unnecessary globals ([#529](https://github.com/catppuccin/nvim/issues/529)) ([c75562c](https://github.com/catppuccin/nvim/commit/c75562cbc954136f279ced91661251543b6f2a20))
* **native_lsp:** boolean logic ([#526](https://github.com/catppuccin/nvim/issues/526)) ([8d02781](https://github.com/catppuccin/nvim/commit/8d02781a638123394f9bc160aad47a9560a113f9))
* **tests:** shadowing variable ([15043d3](https://github.com/catppuccin/nvim/commit/15043d363729f1ef20e615c41bbd8b7e92c1453e))
* **treesitter_context:** underline content if `transparent_background` is true ([#519](https://github.com/catppuccin/nvim/issues/519)) ([6ecc158](https://github.com/catppuccin/nvim/commit/6ecc158dbf365d2cd290b58993296c42b3111965))
* **which-key:** wrong separator highlight group ([d438c01](https://github.com/catppuccin/nvim/commit/d438c0141609338140b18363a9a1e8eb8bb17130))
* **workflows:** stylua format ([2df7036](https://github.com/catppuccin/nvim/commit/2df7036c5c303c9184869936e40ca18935e4afcb))

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.

File diff suppressed because it is too large Load Diff

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,72 @@
let g:airline#themes#catppuccin#palette = {}
function! airline#themes#catppuccin#refresh()
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
" Normal mode
" (Dark)
let s:N1 = [ s:c.mantle, s:c.blue, 59, 149 ] " guifg guibg ctermfg ctermbg
let s:N2 = [ s:c.blue, s:c.surface0, 149, 59 ] " guifg guibg ctermfg ctermbg
let s:N3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
" Insert mode
let s:I1 = [ s:c.mantle, s:c.teal, 59, 74 ] " guifg guibg ctermfg ctermbg
let s:I2 = [ s:c.teal, s:c.surface0, 74, 59 ] " guifg guibg ctermfg ctermbg
let s:I3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
" Visual mode
let s:V1 = [ s:c.mantle, s:c.mauve, 59, 209 ] " guifg guibg ctermfg ctermbg
let s:V2 = [ s:c.mauve, s:c.surface0, 209, 59 ] " guifg guibg ctermfg ctermbg
let s:V3 = [ s:c.text, s:c.mantle, 145, 16 ] " guifg guibg ctermfg ctermbg
" Replace mode
let s:R1 = [ s:c.mantle, s:c.red, 59, 203 ] " guifg guibg ctermfg ctermbg
let s:R2 = [ s:c.red, s:c.surface0, 203, 59 ] " guifg guibg ctermfg ctermbg
" Command mode
let s:C1 = [ s:c.base, s:c.peach, 59, 166 ] " guifg guibg ctermfg ctermbg
let s:C2 = [ s:c.peach, s:c.surface0, 166, 59 ] " guifg guibg ctermfg ctermbg
" Warning section
let s:WR = [s:c.mantle, s:c.peach, 232, 166 ]
" Error section
let s:ER = [s:c.mantle, s:c.red, 232, 166 ]
let g:airline#themes#catppuccin#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
let g:airline#themes#catppuccin#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
let g:airline#themes#catppuccin#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
let s:IA = [ s:N1[1], s:N3[1], s:N1[3], s:N3[3], '' ]
let g:airline#themes#catppuccin#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
let g:airline#themes#catppuccin#palette.normal.airline_warning = s:WR
let g:airline#themes#catppuccin#palette.insert.airline_warning = s:WR
let g:airline#themes#catppuccin#palette.visual.airline_warning = s:WR
let g:airline#themes#catppuccin#palette.normal.airline_warning_to_airline_error = s:WR
let g:airline#themes#catppuccin#palette.insert.airline_warning_to_airline_error = s:WR
let g:airline#themes#catppuccin#palette.visual.airline_warning_to_airline_error = s:WR
let g:airline#themes#catppuccin#palette.normal.airline_error = s:ER
let g:airline#themes#catppuccin#palette.insert.airline_error = s:ER
let g:airline#themes#catppuccin#palette.visual.airline_error = s:ER
" Fork replace mode from insert mode
let g:airline#themes#catppuccin#palette.replace = copy(g:airline#themes#catppuccin#palette.insert)
let g:airline#themes#catppuccin#palette.replace.airline_a = [ s:R1[0], s:R1[1], s:R1[2], s:R1[3], '' ]
let g:airline#themes#catppuccin#palette.replace.airline_b = [ s:R2[0], s:R2[1], s:R2[2], s:R2[3], '' ]
" Terminal mode is same as insert mode
let g:airline#themes#catppuccin#palette.terminal = copy(g:airline#themes#catppuccin#palette.insert)
" Fork command mode from normal mode
let g:airline#themes#catppuccin#palette.commandline = copy(g:airline#themes#catppuccin#palette.normal)
let g:airline#themes#catppuccin#palette.commandline.airline_a = [ s:C1[0], s:C1[1], s:C1[2], s:C1[3], '' ]
let g:airline#themes#catppuccin#palette.commandline.airline_b = [ s:C2[0], s:C2[1], s:C2[2], s:C2[3], '' ]
endfunction
call airline#themes#catppuccin#refresh()

View File

@ -0,0 +1,20 @@
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
let s:p = {}
let s:p.display = { 'guibg': s:c.mantle }
let s:p.input = s:p.display
let s:p.indicator = { 'guifg': s:c.subtext1, 'guibg': s:c.mantle }
let s:p.spinner = { 'guifg': s:c.yellow, 'guibg': s:c.mantle, 'gui': "bold" }
let s:p.search_text = { 'guifg': s:c.text, 'guibg': s:c.mantle, 'gui': "bold" }
let s:p.preview = { 'guibg': s:c.base }
let s:p.selected = { 'guifg': s:c.sapphire, 'gui': "bold,underline" }
let s:p.current_selection = { 'guibg': s:c.surface0, 'gui': "bold" }
let s:p.selected_sign = { 'guifg': s:c.red }
let s:p.current_selection_sign = copy(s:p.selected_sign)
let g:clap#themes#catppuccin#palette = s:p

View File

@ -0,0 +1,22 @@
let s:c = has("nvim") == 1 ? luaeval('require("catppuccin.palettes").get_palette()') : luaeval('vim.dict(require("catppuccin.palettes").get_palette())')
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:c.mantle, s:c.blue ], [ s:c.blue, s:c.base ] ]
let s:p.normal.middle = [ [ s:c.blue, s:c.mantle ] ]
let s:p.normal.right = [ [ s:c.overlay0, s:c.base ], [ s:c.blue, s:c.surface0 ] ]
let s:p.insert.left = [ [ s:c.mantle, s:c.teal ], [ s:c.blue, s:c.base ] ]
let s:p.visual.left = [ [ s:c.mantle, s:c.mauve ], [ s:c.blue, s:c.base ] ]
let s:p.replace.left = [ [ s:c.mantle, s:c.red ], [ s:c.blue, s:c.base ] ]
let s:p.inactive.left = [ [ s:c.blue, s:c.base ], [ s:c.overlay0, s:c.base ] ]
let s:p.inactive.middle = [ [ s:c.surface1, s:c.base ] ]
let s:p.inactive.right = [ [ s:c.surface1, s:c.base ], [ s:c.overlay0, s:c.base ] ]
let s:p.tabline.left = [ [ s:c.overlay0, s:c.base ], [ s:c.overlay0, s:c.base ] ]
let s:p.tabline.tabsel = [ [ s:c.blue, s:c.surface1 ], [ s:c.overlay0, s:c.base] ]
let s:p.tabline.middle = [ [ s:c.surface1, s:c.base ] ]
let s:p.tabline.right = copy(s:p.inactive.right)
let s:p.normal.error = [ [ s:c.mantle, s:c.red ] ]
let s:p.normal.warning = [ [ s:c.mantle, s:c.yellow ] ]
let g:lightline#colorscheme#catppuccin#palette = lightline#colorscheme#fill(s:p)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,918 @@
*catppuccin.txt* Soothing pastel theme for NeoVim
==============================================================================
Table of Contents *catppuccin-table-of-contents*
1. Features |catppuccin-features|
2. Installation |catppuccin-installation|
3. Usage |catppuccin-usage|
4. Configuration |catppuccin-configuration|
5. Customize highlights |catppuccin-customize-highlights|
- Get catppuccin colors|catppuccin-customize-highlights-get-catppuccin-colors|
- Overwriting colors |catppuccin-customize-highlights-overwriting-colors|
- Overwriting highlight groups|catppuccin-customize-highlights-overwriting-highlight-groups|
6. Integrations |catppuccin-integrations|
7. Compile |catppuccin-compile|
8. FAQ |catppuccin-faq|
- Wrong treesitter highlights |catppuccin-faq-wrong-treesitter-highlights|
- Colors doesnt match preview screenshots|catppuccin-faq-colors-doesnt-match-preview-screenshots|
9. Thanks to |catppuccin-thanks-to|
10. Links |catppuccin-links|
==============================================================================
1. Features *catppuccin-features*
- Supports both vim and neovim (Requires neovim <https://github.com/neovim/neovim/> >= 0.8 or vim <https://github.com/vim/vim> >= 9 compiled with lua <https://github.com/lua/lua> >= 5.1)
- Highly configurable with 4 different flavours and ability to create your own! <https://github.com/catppuccin/nvim/discussions/323>
- Compile <https://github.com/catppuccin/nvim#Compile> user config for fastest startuptime <https://www.reddit.com/r/neovim/comments/xxfpt3/catppuccinnvim_now_startup_in_1ms/>
- Integrations with lsp, treesitter and a bunch of plugins <https://github.com/catppuccin/nvim#integrations>
- Supports for many other applications <https://github.com/catppuccin/catppuccin>
==============================================================================
2. Installation *catppuccin-installation*
lazy.nvim <https://github.com/folke/lazy.nvim>
>lua
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 }
<
packer.nvim <https://github.com/wbthomason/packer.nvim>
>lua
use { "catppuccin/nvim", as = "catppuccin" }
<
vim-plug <https://github.com/junegunn/vim-plug>
>vim
Plug 'catppuccin/nvim', { 'as': 'catppuccin' }
<
==============================================================================
3. Usage *catppuccin-usage*
>vim
colorscheme catppuccin " catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
<
>lua
vim.cmd.colorscheme "catppuccin"
<
==============================================================================
4. Configuration *catppuccin-configuration*
There is no need to call `setup` if you dont want to change the default
options and settings.
>lua
require("catppuccin").setup({
flavour = "auto", -- latte, frappe, macchiato, mocha
background = { -- :h background
light = "latte",
dark = "mocha",
},
transparent_background = false, -- disables setting the background color.
show_end_of_buffer = false, -- shows the '~' characters after the end of buffers
term_colors = false, -- sets terminal colors (e.g. `g:terminal_color_0`)
dim_inactive = {
enabled = false, -- dims the background color of inactive window
shade = "dark",
percentage = 0.15, -- percentage of the shade to apply to the inactive window
},
no_italic = false, -- Force no italic
no_bold = false, -- Force no bold
no_underline = false, -- Force no underline
styles = { -- Handles the styles of general hi groups (see `:h highlight-args`):
comments = { "italic" }, -- Change the style of comments
conditionals = { "italic" },
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
-- miscs = {}, -- Uncomment to turn off hard-coded styles
},
color_overrides = {},
custom_highlights = {},
default_integrations = true,
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
treesitter = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
-- For more plugins integrations please scroll down (https://github.com/catppuccin/nvim#integrations)
},
})
-- setup must be called before loading
vim.cmd.colorscheme "catppuccin"
<
==============================================================================
5. Customize highlights *catppuccin-customize-highlights*
GET CATPPUCCIN COLORS *catppuccin-customize-highlights-get-catppuccin-colors*
>lua
local latte = require("catppuccin.palettes").get_palette "latte"
local frappe = require("catppuccin.palettes").get_palette "frappe"
local macchiato = require("catppuccin.palettes").get_palette "macchiato"
local mocha = require("catppuccin.palettes").get_palette "mocha"
<
Returns a table where the key is the name of the color and the value is its hex
value corresponding to each flavour.
OVERWRITING COLORS *catppuccin-customize-highlights-overwriting-colors*
Colors can be overwritten using `color_overrides` in the setting, checkout
https://github.com/catppuccin/nvim/discussions/323 for inspirations:
>lua
require("catppuccin").setup {
color_overrides = {
all = {
text = "#ffffff",
},
latte = {
base = "#ff0000",
mantle = "#242424",
crust = "#474747",
},
frappe = {},
macchiato = {},
mocha = {},
}
}
<
[!Note] For more information check out our style-guide
<https://github.com/catppuccin/catppuccin/blob/main/docs/style-guide.md>
OVERWRITING HIGHLIGHT GROUPS*catppuccin-customize-highlights-overwriting-highlight-groups*
Global highlight groups can be overwritten in the setting, for example:
>lua
require("catppuccin").setup {
custom_highlights = function(colors)
return {
Comment = { fg = colors.flamingo },
TabLineSel = { bg = colors.pink },
CmpBorder = { fg = colors.surface2 },
Pmenu = { bg = colors.none },
}
end
}
<
Per flavour highlight groups can also be overwritten in the setting, for
example:
>lua
require("catppuccin").setup {
highlight_overrides = {
all = function(colors)
return {
NvimTreeNormal = { fg = colors.none },
CmpBorder = { fg = "#3e4145" },
}
end,
latte = function(latte)
return {
Normal = { fg = latte.base },
}
end,
frappe = function(frappe)
return {
["@comment"] = { fg = frappe.surface2, style = { "italic" } },
}
end,
macchiato = function(macchiato)
return {
LineNr = { fg = macchiato.overlay1 },
}
end,
mocha = function(mocha)
return {
Comment = { fg = mocha.flamingo },
}
end,
},
}
<
==============================================================================
6. Integrations *catppuccin-integrations*
Catppuccin provides theme support for other plugins in the Neovim ecosystem and
extended Neovim functionality through _integrations_.
To enable/disable an integration you just need to set it to true/false, for
example:
>lua
require("catppuccin").setup({
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
treesitter = true,
notify = false,
mini = {
enabled = true,
indentscope_color = "",
},
}
})
<
Some integrations are enabled by default, you can control this behaviour with
`default_integrations` option.
>lua
require("catppuccin").setup({
default_integrations = false,
})
<
Below is a list of supported plugins and their corresponding integration
module.
[!Important] If youd like to know which highlight groups are being affected
by catppuccin, check out this directory: `lua/catppuccin/groups/integrations/`
<https://github.com/catppuccin/nvim/tree/main/lua/catppuccin/groups/integrations>.
PluginDefaultaerial.nvim>lua
aerial = false
<
alpha-nvim>lua
alpha = true
<
barbar.nvim>lua
barbar = false
<
barbecue.nvim>lua
barbecue = {
dim_dirname = true, -- directory name is dimmed by default
bold_basename = true,
dim_context = false,
alt_background = false,
},
<
Special ~
Use this to set it up:
>lua
require("barbecue").setup {
theme = "catppuccin", -- catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
}
<
beacon.nvim>lua
beacon = false
<
bufferline.nvimSpecial ~
Update your bufferline config to use the Catppuccin components:
[!NOTE] bufferline needs to be loaded after setting up catppuccin or it will
highlight incorrectly
>lua
use "akinsho/bufferline.nvim" {
after = "catppuccin",
config = function()
require("bufferline").setup {
highlights = require("catppuccin.groups.integrations.bufferline").get()
}
end
}
<
Configurations are self-explanatory, see |bufferline-highlights| for detailed
explanations:
>lua
local mocha = require("catppuccin.palettes").get_palette "mocha"
bufferline.setup {
highlights = require("catppuccin.groups.integrations.bufferline").get {
styles = { "italic", "bold" },
custom = {
all = {
fill = { bg = "#000000" },
},
mocha = {
background = { fg = mocha.text },
},
latte = {
background = { fg = "#000000" },
},
},
},
}
<
coc.nvim>lua
coc_nvim = false
<
Special ~
Setting `enabled` to `true` enables this integration.
>lua
coc_nvim = true,
<
[!Note] coc.nvim by default link to native lsp highlight groups so config from
`native_lsp` will also apply to coc
In the inners tables you can set the style for the diagnostics, both
`virtual_text` (what you see on the side) and `underlines` (what points
directly at the thing (e.g. an error)).
>lua
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
inlay_hints = {
background = true,
},
},
<
colorful-winsep.nvim>lua
colorful_winsep = {
enabled = false,
color = "red",
}
<
dashboard-nvim>lua
dashboard = true
<
diffview.nvim>lua
diffview = false
<
dropbar.nvim>lua
dropbar = {
enabled = false,
color_mode = false, -- enable color for kind's texts, not just kind's icons
},
<
feline.nvimSpecial ~
Update your Feline config to use the Catppuccin components:
>lua
local ctp_feline = require('catppuccin.groups.integrations.feline')
ctp_feline.setup()
require("feline").setup({
components = ctp_feline.get(),
})
<
Notice that calling `setup()` is optional. You may pass a lua table in order to
change assets, settings and the colors per vim mode.
Here are the defaults:
>lua
local clrs = require("catppuccin.palettes").get_palette()
local ctp_feline = require('catppuccin.groups.integrations.feline')
local U = require "catppuccin.utils.colors"
ctp_feline.setup({
assets = {
left_separator = "",
right_separator = "",
mode_icon = "",
dir = "󰉖",
file = "󰈙",
lsp = {
server = "󰅡",
error = "",
warning = "",
info = "",
hint = "",
},
git = {
branch = "",
added = "",
changed = "",
removed = "",
},
},
sett = {
text = U.vary_color({ latte = latte.base }, clrs.surface0),
bkg = U.vary_color({ latte = latte.crust }, clrs.surface0),
diffs = clrs.mauve,
extras = clrs.overlay1,
curr_file = clrs.maroon,
curr_dir = clrs.flamingo,
show_modified = true -- show if the file has been modified
},
mode_colors = {
["n"] = { "NORMAL", clrs.lavender },
["no"] = { "N-PENDING", clrs.lavender },
["i"] = { "INSERT", clrs.green },
["ic"] = { "INSERT", clrs.green },
["t"] = { "TERMINAL", clrs.green },
["v"] = { "VISUAL", clrs.flamingo },
["V"] = { "V-LINE", clrs.flamingo },
[""] = { "V-BLOCK", clrs.flamingo },
["R"] = { "REPLACE", clrs.maroon },
["Rv"] = { "V-REPLACE", clrs.maroon },
["s"] = { "SELECT", clrs.maroon },
["S"] = { "S-LINE", clrs.maroon },
[""] = { "S-BLOCK", clrs.maroon },
["c"] = { "COMMAND", clrs.peach },
["cv"] = { "COMMAND", clrs.peach },
["ce"] = { "COMMAND", clrs.peach },
["r"] = { "PROMPT", clrs.teal },
["rm"] = { "MORE", clrs.teal },
["r?"] = { "CONFIRM", clrs.mauve },
["!"] = { "SHELL", clrs.green },
},
view = {
lsp = {
progress = true, -- if true the status bar will display an lsp progress indicator
name = false, -- if true the status bar will display the lsp servers name, otherwise it will display the text "Lsp"
exclude_lsp_names = {}, -- lsp server names that should not be displayed when name is set to true
separator = "|", -- the separator used when there are multiple lsp servers
},
}
})
<
[!Warning] Currently feline doesnt officially support custom themes
<https://github.com/feline-nvim/feline.nvim/issues/302>. In order for
`:colorscheme catppuccin-<flavour>` to work you could add this autocmd as a
workaround:
>lua
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = function()
package.loaded["feline"] = nil
package.loaded["catppuccin.groups.integrations.feline"] = nil
require("feline").setup {
components = require("catppuccin.groups.integrations.feline").get(),
}
end,
})
<
fern.vim>lua
fern = false
<
fidget.nvim>lua
fidget = false
<
Special ~
Set `notification.window.winblend` to `0`:
>lua
require("fidget").setup {
notification = {
window = {
winblend = 0,
},
}
-- ... the rest of your fidget config
}
<
flash.nvim>lua
flash = true
<
gitsigns.nvim>lua
gitsigns = true
<
harpoon>lua
harpoon = false
<
headlines.nvim>lua
headlines = false
<
hop.nvim>lua
hop = false
<
indent-blankline.nvim>lua
indent_blankline = {
enabled = true,
scope_color = "", -- catppuccin color (eg. `lavender`) Default: text
colored_indent_levels = false,
},
<
Special ~
`colored_indent_levels` enables char highlights per indent level. Follow the
instructions here
<https://github.com/lukas-reineke/indent-blankline.nvim#multiple-indent-colors>
to set the latter up.
leap.nvim>lua
leap = false
<
lightline.vimSpecial ~
>vim
let g:lightline = {'colorscheme': 'catppuccin'}
<
lightspeed.nvim>lua
lightspeed = false
<
lspsaga.nvim>lua
lsp_saga = false
<
Special ~
For custom Lsp Kind Icon and Color
>lua
require("lspsaga").setup {
ui = {
kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(),
},
}
<
lualine.nvimSpecial ~
>lua
require('lualine').setup {
options = {
theme = "catppuccin"
-- ... the rest of your lualine config
}
}
<
markdown>lua
markdown = true
<
mason.nvim>lua
mason = false
<
mini.nvim>lua
mini = {
enabled = true,
indentscope_color = "", -- catppuccin color (eg. `lavender`) Default: text
},
<
neo-tree.nvim>lua
neotree = false
<
neogit>lua
neogit = true
<
neotest>lua
neotest = false
<
noice.nvim>lua
noice = false
<
NormalNvim>lua
NormalNvim = false
<
notifier.nvim>lua
notifier = false
<
nvim-cmp>lua
cmp = true
<
nvim-dap>lua
dap = true
<
Special ~
>lua
local sign = vim.fn.sign_define
sign("DapBreakpoint", { text = "●", texthl = "DapBreakpoint", linehl = "", numhl = ""})
sign("DapBreakpointCondition", { text = "●", texthl = "DapBreakpointCondition", linehl = "", numhl = ""})
sign("DapLogPoint", { text = "◆", texthl = "DapLogPoint", linehl = "", numhl = ""})
<
nvim-dap-ui>lua
dap_ui = true
<
nvim-lspconfig>lua
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
inlay_hints = {
background = true,
},
},
<
Special ~
In the inners tables you can set the style for the diagnostics, both
`virtual_text` (what you see on the side) and `underlines` (what points
directly at the thing (e.g. an error)).
navic>lua
navic = {
enabled = false,
custom_bg = "NONE", -- "lualine" will set background to mantle
},
<
Special ~
>lua
-- You NEED to enable highlight in nvim-navic setting or it won't work
require("nvim-navic").setup {
highlight = true
}
<
nvim-notify>lua
notify = false
<
nvim-semantic-tokens>lua
semantic_tokens = true
<
nvim-tree.lua>lua
nvimtree = true
<
nvim-treesitter-context>lua
treesitter_context = true
<
nvim-treesitter>lua
treesitter = true
<
nvim-ts-rainbow2>lua
ts_rainbow2 = false
<
nvim-ts-rainbow>lua
ts_rainbow = false
<
nvim-ufo>lua
ufo = true
<
nvim-window-picker>lua
window_picker = false
<
octo.nvim>lua
octo = false
<
overseer.nvim>lua
overseer = false
<
pounce.nvim>lua
pounce = false
<
rainbow-delimiters.nvim>lua
rainbow_delimiters = true
<
reactive.nvimSpecial ~
Therere 2 available presets (`cursor` and `cursorline`) for every flavour.
Here is how you can use them.
>lua
require('reactive').setup {
load = { 'catppuccin-mocha-cursor', 'catppuccin-mocha-cursorline' }
}
<
To use another flavour just replace `mocha` with the one you want to use.
symbols-outline.nvim
[!NOTE] This plugin has been archived by the author, consider using
outline.nvim <https://github.com/hedyhli/outline.nvim>
>lua
symbols_outline = false
<
telekasten.nvim>lua
telekasten = false
<
telescope.nvim>lua
telescope = {
enabled = true,
-- style = "nvchad"
}
<
trouble.nvim>lua
lsp_trouble = false
<
vim-airlineSpecial ~
>vim
let g:airline_theme = 'catppuccin'
<
vim-clapSpecial ~
Use this to set it up:
>vim
let g:clap_theme = 'catppuccin'
<
vim-gitgutter>lua
gitgutter = false
<
vim-illuminate>lua
illuminate = {
enabled = true,
lsp = false
}
<
vim-sandwich>lua
sandwich = false
<
vim-sneak>lua
vim_sneak = false
<
vimwiki>lua
vimwiki = false
<
which-key.nvim>lua
which_key = false
<
==============================================================================
7. Compile *catppuccin-compile*
**Important** As of 7/10/2022, catppuccin should be able to automatically
recompile when the setup table changed.
Catppuccin is a highly customizable and configurable colorscheme. This does
however come at the cost of complexity and execution time. Catppuccin can pre
compute the results of your configuration and store the results in a compiled
lua file. We use these precached values to set its highlights.
By default catppuccin writes the compiled results into the systems cache
directory. You can change the cache dir using:
>lua
require("catppuccin").setup({ -- Note: On windows we replace `/` with `\` by default
compile_path = vim.fn.stdpath "cache" .. "/catppuccin"
})
<
==============================================================================
8. FAQ *catppuccin-faq*
WRONG TREESITTER HIGHLIGHTS *catppuccin-faq-wrong-treesitter-highlights*
Please disable `additional_vim_regex_highlighting`
>lua
require("nvim-treesitter.configs").setup {
highlight = {
enable = true,
additional_vim_regex_highlighting = false
},
}
<
COLORS DOESNT MATCH PREVIEW SCREENSHOTS*catppuccin-faq-colors-doesnt-match-preview-screenshots*
Catppuccin requires true color support AKA terminals support the full range of
16 million colors
- Supported: iterm2 (macOS), kitty, wezterm, alacritty, tmux, …
Full list of support terminals can be found here:
<https://github.com/termstandard/colors#truecolor-support-in-output-devices>
- Unsupported terminal: Terminal.app (macOS), Terminus, Terminology, …
Full list of Unsupported terminals can be found here:
<https://github.com/termstandard/colors#not-supporting-truecolor>
FOR TMUX USERS ~
- Enable true color support <https://gist.github.com/andersevenrud/015e61af2fd264371032763d4ed965b6> to fix the following abnormal colors <https://github.com/catppuccin/nvim/issues/415>:
- Enable italic font support <https://gist.github.com/gyribeiro/4192af1aced7a1b555df06bd3781a722> to fix the following incorrect if, then, else, end highlights <https://github.com/catppuccin/nvim/issues/428>:
==============================================================================
9. Thanks to *catppuccin-thanks-to*
- Pocco81 <https://github.com/Pocco81>
- nullchilly <https://github.com/nullchilly>
==============================================================================
10. Links *catppuccin-links*
1. *image*: https://user-images.githubusercontent.com/1941785/220280749-c3ab52fb-9b8a-4f04-ab98-f8c1bb41f84b.png
2. *image*: https://user-images.githubusercontent.com/13246770/224011118-dcf0f567-650a-4eb2-8be6-0af5cf435501.png
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
vim:tw=78:ts=8:noet:ft=help:norl:

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,77 @@
local M = {}
function M.get()
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.text }, -- character under the cursor
lCursor = { fg = C.base, bg = C.text }, -- the character under the cursor when |language-mapping| is used (see 'guicursor')
CursorIM = { fg = C.base, bg = C.text }, -- 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.
Directory = { fg = C.blue }, -- directory names (and other special names in listings)
EndOfBuffer = { fg = O.show_end_of_buffer and C.surface1 or C.base }, -- 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 = C.surface1, 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 = {}, -- 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.transparent_background and vim.o.winblend == 0) and C.none or C.mantle }, -- Normal text in floating windows.
FloatBorder = { fg = C.blue },
FloatTitle = { fg = C.subtext0 }, -- Title of floating windows
Pmenu = {
bg = (O.transparent_background and vim.o.pumblend == 0) and C.none or U.darken(C.surface0, 0.8, C.crust),
fg = C.overlay2,
}, -- Popup menu: normal item.
PmenuSel = { bg = C.surface1, style = { "bold" } }, -- Popup menu: selected item.
PmenuSbar = { bg = C.surface1 }, -- Popup menu: scrollbar.
PmenuThumb = { bg = C.overlay0 }, -- Popup menu: Thumb of the scrollbar.
Question = { fg = C.blue }, -- |hit-enter| prompt and yes/no questions
QuickFixLine = { bg = C.surface1, 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.mantle, fg = C.surface1 }, -- tab pages line, not active tab page label
TabLineFill = {}, -- tab pages line, where there are no labels
TabLineSel = { fg = C.green, bg = C.surface1 }, -- tab pages line, active tab page label
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,15 @@
local M = {}
function M.get()
return {
MarkdownTask = { fg = C.teal, style = { "bold" } },
MarkdownTodo = { fg = C.flamingo, style = { "bold" } },
MarkdownNote = { fg = C.red, style = { "bold" } },
MarkdownSee = { fg = C.blue, style = { "bold" } },
MarkdownCheck = { fg = C.green, style = { "bold" } },
MarkdownURL = { fg = C.lavender, style = { "bold" } },
MarkdownExample = { fg = C.mauve, style = { "bold" } },
}
end
return M

View File

@ -0,0 +1,36 @@
local M = {}
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,13 @@
local M = {}
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,25 @@
local M = {}
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,9 @@
local M = {}
function M.get()
return {
Beacon = { bg = C.blue },
}
end
return M

View File

@ -0,0 +1,117 @@
local M = {}
local ctp = require "catppuccin"
local O = ctp.options
function M.get(user_config)
user_config = user_config or {}
-- Backward compatibility
if O.integrations.bufferline then return {} end
return function()
local C = require("catppuccin.palettes").get_palette()
local transparent_background = O.transparent_background
local bg_highlight = (transparent_background and O.dim_inactive.enabled and C.dim)
or (transparent_background and "NONE")
or (O.dim_inactive.enabled and C.dim)
or C.crust
local active_bg = transparent_background and "NONE" or C.base
local inactive_bg = transparent_background and "NONE" or C.mantle
local separator_fg = O.transparent_background and C.surface1 or C.crust
local styles = user_config.styles or { "bold", "italic" }
local highlights = {
-- buffers
background = { bg = inactive_bg },
buffer_visible = { fg = C.surface1, bg = inactive_bg },
buffer_selected = { fg = C.text, bg = active_bg, style = styles }, -- current
-- Duplicate
duplicate_selected = { fg = C.text, bg = active_bg, style = styles },
duplicate_visible = { fg = C.surface1, bg = inactive_bg, style = styles },
duplicate = { fg = C.surface1, bg = inactive_bg, style = styles },
-- tabs
tab = { fg = C.surface1, bg = inactive_bg },
tab_selected = { fg = C.sky, bg = active_bg, bold = true },
tab_separator = { fg = separator_fg, bg = inactive_bg },
tab_separator_selected = { fg = separator_fg, bg = active_bg },
tab_close = { fg = C.red, bg = inactive_bg },
indicator_selected = { fg = C.peach, bg = active_bg, style = styles },
-- separators
separator = { fg = separator_fg, bg = inactive_bg },
separator_visible = { fg = separator_fg, bg = inactive_bg },
separator_selected = { fg = separator_fg, bg = active_bg },
offset_separator = { fg = separator_fg, bg = active_bg },
-- close buttons
close_button = { fg = C.surface1, bg = inactive_bg },
close_button_visible = { fg = C.surface1, bg = inactive_bg },
close_button_selected = { fg = C.red, bg = active_bg },
-- Empty fill
fill = { bg = bg_highlight },
-- Numbers
numbers = { fg = C.subtext0, bg = inactive_bg },
numbers_visible = { fg = C.subtext0, bg = inactive_bg },
numbers_selected = { fg = C.subtext0, bg = active_bg, style = styles },
-- Errors
error = { fg = C.red, bg = inactive_bg },
error_visible = { fg = C.red, bg = inactive_bg },
error_selected = { fg = C.red, bg = active_bg, style = styles },
error_diagnostic = { fg = C.red, bg = inactive_bg },
error_diagnostic_visible = { fg = C.red, bg = inactive_bg },
error_diagnostic_selected = { fg = C.red, bg = active_bg },
-- Warnings
warning = { fg = C.yellow, bg = inactive_bg },
warning_visible = { fg = C.yellow, bg = inactive_bg },
warning_selected = { fg = C.yellow, bg = active_bg, style = styles },
warning_diagnostic = { fg = C.yellow, bg = inactive_bg },
warning_diagnostic_visible = { fg = C.yellow, bg = inactive_bg },
warning_diagnostic_selected = { fg = C.yellow, bg = active_bg },
-- Infos
info = { fg = C.sky, bg = inactive_bg },
info_visible = { fg = C.sky, bg = inactive_bg },
info_selected = { fg = C.sky, bg = active_bg, style = styles },
info_diagnostic = { fg = C.sky, bg = inactive_bg },
info_diagnostic_visible = { fg = C.sky, bg = inactive_bg },
info_diagnostic_selected = { fg = C.sky, bg = active_bg },
-- Hint
hint = { fg = C.teal, bg = inactive_bg },
hint_visible = { fg = C.teal, bg = inactive_bg },
hint_selected = { fg = C.teal, bg = active_bg, style = styles },
hint_diagnostic = { fg = C.teal, bg = inactive_bg },
hint_diagnostic_visible = { fg = C.teal, bg = inactive_bg },
hint_diagnostic_selected = { fg = C.teal, bg = active_bg },
-- Diagnostics
diagnostic = { fg = C.subtext0, bg = inactive_bg },
diagnostic_visible = { fg = C.subtext0, bg = inactive_bg },
diagnostic_selected = { fg = C.subtext0, bg = active_bg, style = styles },
-- Modified
modified = { fg = C.peach, bg = inactive_bg },
modified_selected = { fg = C.peach, bg = active_bg },
}
local user_highlights = user_config.custom or {}
highlights =
vim.tbl_deep_extend("keep", user_highlights[ctp.flavour] or {}, user_highlights.all or {}, highlights)
for _, color in pairs(highlights) do
-- Because default is gui=bold,italic
color.italic = false
color.bold = false
if color.style then
for _, style in pairs(color.style) do
color[style] = true
if O.no_italic and style == "italic" then color[style] = false end
if O.no_bold and style == "bold" then color[style] = false end
if O.no_underline and style == "underline" then color[style] = false end
end
end
color.style = nil
end
return highlights
end
end
return M

View File

@ -0,0 +1,42 @@
local M = {}
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,19 @@
local M = {}
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,9 @@
local M = {}
function M.get()
return {
NvimSeparator = { bg = C.base, fg = C[O.integrations.colorful_winsep.color] },
}
end
return M

View File

@ -0,0 +1,13 @@
local M = {}
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,39 @@
local M = {}
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 = { fg = C.sky },
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 },
DapUIStepInto = { fg = C.blue },
DapUIStepBack = { fg = C.blue },
DapUIStepOut = { fg = C.blue },
DapUIStop = { fg = C.red },
DapUIPlayPause = { fg = C.green },
DapUIRestart = { fg = C.green },
DapUIUnavailable = { fg = C.surface1 },
DapUIWinSelect = { fg = C.peach },
}
end
return M

View File

@ -0,0 +1,18 @@
local M = {}
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,41 @@
local M = {}
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,69 @@
local M = {}
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,501 @@
local M = {}
local C = require("catppuccin.palettes").get_palette()
local lsp = require "feline.providers.lsp"
local assets = {
left_separator = "",
right_separator = "",
mode_icon = "",
dir = "󰉖",
file = "󰈙",
lsp = {
server = "󰅡",
error = "",
warning = "",
info = "",
hint = "",
},
git = {
branch = "",
added = "",
changed = "",
removed = "",
},
}
local sett = {
text = C.mantle,
bkg = C.crust,
diffs = C.mauve,
extras = C.overlay1,
curr_file = C.maroon,
curr_dir = C.flamingo,
show_modified = false,
}
if require("catppuccin").flavour == "latte" then
local latte = require("catppuccin.palettes").get_palette "latte"
sett.text = latte.base
sett.bkg = latte.crust
end
if require("catppuccin").options.transparent_background then sett.bkg = "NONE" end
local mode_colors = {
["n"] = { "NORMAL", C.lavender },
["no"] = { "N-PENDING", C.lavender },
["i"] = { "INSERT", C.green },
["ic"] = { "INSERT", C.green },
["t"] = { "TERMINAL", C.green },
["v"] = { "VISUAL", C.flamingo },
["V"] = { "V-LINE", C.flamingo },
[""] = { "V-BLOCK", C.flamingo },
["R"] = { "REPLACE", C.maroon },
["Rv"] = { "V-REPLACE", C.maroon },
["s"] = { "SELECT", C.maroon },
["S"] = { "S-LINE", C.maroon },
[""] = { "S-BLOCK", C.maroon },
["c"] = { "COMMAND", C.peach },
["cv"] = { "COMMAND", C.peach },
["ce"] = { "COMMAND", C.peach },
["r"] = { "PROMPT", C.teal },
["rm"] = { "MORE", C.teal },
["r?"] = { "CONFIRM", C.mauve },
["!"] = { "SHELL", C.green },
}
local view = {
lsp = {
progress = true,
name = false,
exclude_lsp_names = {},
separator = "|",
},
}
local is_lsp_in_excluded_list = function(lsp_name)
for _, excluded_lsp in ipairs(view.lsp.exclude_lsp_names) do
if lsp_name == excluded_lsp then return true end
end
return false
end
function M.setup(opts)
if opts then
opts.assets = opts.assets or {}
opts.sett = opts.sett or {}
opts.mode_colors = opts.mode_colors or {}
opts.view = opts.view or {}
else
opts = {
assets = {},
sett = {},
mode_colors = {},
view = {},
}
end
assets = vim.tbl_deep_extend("force", assets, opts.assets)
sett = vim.tbl_deep_extend("force", sett, opts.sett)
mode_colors = vim.tbl_deep_extend("force", mode_colors, opts.mode_colors)
view = vim.tbl_deep_extend("force", view, opts.view)
end
function M.get()
local shortline = false
local components = {
active = { {}, {}, {} }, -- left, center, right
inactive = { {} },
}
local function is_enabled(min_width)
if shortline then return true end
return vim.api.nvim_win_get_width(0) > min_width
end
-- global components
local invi_sep = {
str = " ",
hl = {
fg = sett.bkg,
bg = sett.bkg,
},
}
-- helpers
local function any_git_changes()
local gst = vim.b.gitsigns_status_dict -- git stats
if gst then
if
gst["added"] and gst["added"] > 0
or gst["removed"] and gst["removed"] > 0
or gst["changed"] and gst["changed"] > 0
then
return true
end
end
return false
end
-- #################### STATUSLINE ->
-- ######## Left
-- Current vi mode ------>
local vi_mode_hl = function()
return {
fg = sett.text,
bg = mode_colors[vim.fn.mode()][2],
style = "bold",
}
end
components.active[1][1] = {
provider = " " .. assets.mode_icon .. " ",
hl = function()
return {
fg = sett.text,
bg = mode_colors[vim.fn.mode()][2],
}
end,
}
components.active[1][2] = {
provider = function() return mode_colors[vim.fn.mode()][1] .. " " end,
hl = vi_mode_hl,
}
-- there is a dilemma: we need to hide Diffs if there is no git info. We can do that, but this will
-- leave the right_separator colored with purple, and since we can't change the color conditonally
-- then the solution is to create two right_separators: one with a mauve sett.bkg and the other one normal
-- sett.bkg; both have the same fg (vi mode). The mauve one appears if there is git info, else the one with
-- the normal sett.bkg appears. Fixed :)
-- enable if git diffs are not available
components.active[1][3] = {
provider = assets.right_separator,
hl = function()
return {
fg = mode_colors[vim.fn.mode()][2],
bg = sett.bkg,
}
end,
enabled = function() return not any_git_changes() end,
}
-- enable if git diffs are available
components.active[1][4] = {
provider = assets.right_separator,
hl = function()
return {
fg = mode_colors[vim.fn.mode()][2],
bg = sett.diffs,
}
end,
enabled = function() return any_git_changes() end,
}
-- Current vi mode ------>
-- Diffs ------>
components.active[1][5] = {
provider = "git_diff_added",
hl = {
fg = sett.text,
bg = sett.diffs,
},
icon = " " .. assets.git.added .. " ",
}
components.active[1][6] = {
provider = "git_diff_changed",
hl = {
fg = sett.text,
bg = sett.diffs,
},
icon = " " .. assets.git.changed .. " ",
}
components.active[1][7] = {
provider = "git_diff_removed",
hl = {
fg = sett.text,
bg = sett.diffs,
},
icon = " " .. assets.git.removed .. " ",
}
components.active[1][8] = {
provider = " ",
hl = {
fg = sett.bkg,
bg = sett.diffs,
},
enabled = function() return any_git_changes() end,
}
components.active[1][9] = {
provider = assets.right_separator,
hl = {
fg = sett.diffs,
bg = sett.bkg,
},
enabled = function() return any_git_changes() end,
}
-- Diffs ------>
-- Extras ------>
-- file progress
components.active[1][10] = {
provider = function()
local current_line = vim.fn.line "."
local total_line = vim.fn.line "$"
if current_line == 1 then
return "Top"
elseif current_line == vim.fn.line "$" then
return "Bot"
end
local result, _ = math.modf((current_line / total_line) * 100)
return result .. "%%"
end,
-- enabled = shortline or function(winid)
-- return vim.api.nvim_win_get_width(winid) > 90
-- end,
hl = {
fg = sett.extras,
bg = sett.bkg,
},
left_sep = invi_sep,
}
-- position
components.active[1][11] = {
provider = "position",
-- enabled = shortline or function(winid)
-- return vim.api.nvim_win_get_width(winid) > 90
-- end,
hl = {
fg = sett.extras,
bg = sett.bkg,
},
left_sep = invi_sep,
}
-- macro
components.active[1][12] = {
provider = "macro",
enabled = function() return vim.api.nvim_get_option "cmdheight" == 0 end,
hl = {
fg = sett.extras,
bg = sett.bkg,
},
left_sep = invi_sep,
}
-- search count
components.active[1][13] = {
provider = "search_count",
enabled = function() return vim.api.nvim_get_option "cmdheight" == 0 end,
hl = {
fg = sett.extras,
bg = sett.bkg,
},
left_sep = invi_sep,
}
-- Extras ------>
-- ######## Left
-- ######## Center
-- Diagnostics ------>
-- workspace loader
components.active[2][1] = {
provider = function()
if vim.lsp.status then return "" end
local Lsp = vim.lsp.util.get_progress_messages()[1]
if Lsp then
local msg = Lsp.message or ""
local percentage = Lsp.percentage
if not percentage then return "" end
local title = Lsp.title or ""
local spinners = {
"",
"󰀚",
"",
}
local success_icon = {
"",
"",
"",
}
local ms = vim.loop.hrtime() / 1000000
local frame = math.floor(ms / 120) % #spinners
if percentage >= 70 then
return string.format(" %%<%s %s %s (%s%%%%) ", success_icon[frame + 1], title, msg, percentage)
end
return string.format(" %%<%s %s %s (%s%%%%) ", spinners[frame + 1], title, msg, percentage)
end
return ""
end,
enabled = is_enabled(80) and view.lsp.progress == true,
hl = {
fg = C.rosewater,
bg = sett.bkg,
},
}
-- general diagnostics (errors, warnings. info and hints)
components.active[2][2] = {
provider = "diagnostic_errors",
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.ERROR) end,
hl = {
fg = C.red,
bg = sett.bkg,
},
icon = " " .. assets.lsp.error .. " ",
}
components.active[2][3] = {
provider = "diagnostic_warnings",
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.WARN) end,
hl = {
fg = C.yellow,
bg = sett.bkg,
},
icon = " " .. assets.lsp.warning .. " ",
}
components.active[2][4] = {
provider = "diagnostic_info",
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.INFO) end,
hl = {
fg = C.sky,
bg = sett.bkg,
},
icon = " " .. assets.lsp.info .. " ",
}
components.active[2][5] = {
provider = "diagnostic_hints",
enabled = function() return lsp.diagnostics_exist(vim.diagnostic.severity.HINT) end,
hl = {
fg = C.rosewater,
bg = sett.bkg,
},
icon = " " .. assets.lsp.hint .. " ",
}
-- Diagnostics ------>
-- ######## Center
-- ######## Right
components.active[3][1] = {
provider = "git_branch",
enabled = is_enabled(70),
hl = {
fg = sett.extras,
bg = sett.bkg,
},
icon = assets.git.branch .. " ",
right_sep = invi_sep,
}
components.active[3][2] = {
provider = function()
local active_clients = vim.lsp.get_active_clients { bufnr = 0 }
-- show an indicator that we have running lsps
if view.lsp.name == false and next(active_clients) ~= nil then return assets.lsp.server .. " " .. "Lsp" end
-- show the actual name of the runing lsps
local index = 0
local lsp_names = ""
for _, lsp_config in ipairs(active_clients) do
if is_lsp_in_excluded_list(lsp_config.name) then goto continue end
index = index + 1
if index == 1 then
lsp_names = assets.lsp.server .. " " .. lsp_config.name
else
lsp_names = lsp_names .. view.lsp.separator .. lsp_config.name
end
::continue::
end
return lsp_names
end,
hl = {
fg = sett.extras,
bg = sett.bkg,
},
right_sep = invi_sep,
}
components.active[3][3] = {
provider = function()
local filename = vim.fn.expand "%:t"
local extension = vim.fn.expand "%:e"
local present, icons = pcall(require, "nvim-web-devicons")
local icon = present and icons.get_icon(filename, extension) or assets.file
return (sett.show_modified and "%m" or "") .. " " .. icon .. " " .. filename .. " "
end,
enabled = is_enabled(70),
hl = {
fg = sett.text,
bg = sett.curr_file,
},
left_sep = {
str = assets.left_separator,
hl = {
fg = sett.curr_file,
bg = sett.bkg,
},
},
}
components.active[3][4] = {
provider = function()
local dir_name = vim.fn.fnamemodify(vim.fn.getcwd(), ":t")
return " " .. assets.dir .. " " .. dir_name .. " "
end,
enabled = is_enabled(80),
hl = {
fg = sett.text,
bg = sett.curr_dir,
},
left_sep = {
str = assets.left_separator,
hl = {
fg = sett.curr_dir,
bg = sett.curr_file,
},
},
}
-- ######## Right
-- Inanctive components
components.inactive[1][1] = {
provider = function() return " " .. string.upper(vim.bo.ft) .. " " end,
hl = {
fg = C.overlay2,
bg = C.mantle,
},
}
return components
end
return M

View File

@ -0,0 +1,9 @@
local M = {}
function M.get()
return {
FernBranchText = { fg = C.blue },
}
end
return M

View File

@ -0,0 +1,13 @@
local M = {}
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,14 @@
local M = {}
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,11 @@
local M = {}
function M.get()
return {
GitGutterAdd = { fg = C.green },
GitGutterChange = { fg = C.yellow },
GitGutterDelete = { fg = C.red },
}
end
return M

View File

@ -0,0 +1,53 @@
local M = {}
function M.get()
if type(O.integrations.gitsigns) == "boolean" then
O.integrations.gitsigns = { enabled = true, transparent = false }
end
if O.transparent_background 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 = O.transparent_background and { fg = U.darken(C.green, 0.72, C.base), bg = C.none }
or { link = "DiffAdd" },
GitSignsDeletePreview = O.transparent_background and { fg = U.darken(C.red, 0.72, C.base), bg = C.none }
or { link = "DiffDelete" },
-- for word diff in previews
GitSignsAddInline = O.transparent_background and {
fg = C.green,
bg = C.none,
style = { "bold" },
} or { link = "DiffAdd" },
GitSignsDeleteInline = O.transparent_background and {
fg = C.red,
bg = C.none,
style = { "bold" },
} or { link = "DiffDelete" },
GitSignsChangeInline = O.transparent_background and {
fg = C.yellow,
bg = C.none,
style = { "bold" },
} or { link = "DiffChange" },
GitSignsDeleteVirtLn = O.transparent_background and { bg = C.none, fg = C.red } or { link = "DiffDelete" },
}
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 = O.transparent_background and { fg = C.green, bg = C.none } or { link = "DiffAdd" },
GitSignsDeletePreview = O.transparent_background and { fg = C.red, bg = C.none } or { link = "DiffDelete" },
}
end
end
return M

View File

@ -0,0 +1,10 @@
local M = {}
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,18 @@
local M = {}
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,13 @@
local M = {}
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,14 @@
local M = {}
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,24 @@
local M = {}
function M.get()
local scope_color = O.integrations.indent_blankline.scope_color
local hi = {
IblIndent = { fg = C.surface0 },
IblScope = { fg = C[scope_color] or C.text },
}
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,24 @@
local M = {}
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 },
},
LeapLabelPrimary = {
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 },
},
LeapLabelSecondary = {
fg = O.transparent_background and C.blue or U.vary_color({ latte = "#222222" }, C.base),
bg = O.transparent_background and C.none or U.vary_color({ latte = U.brighten(C.sky, 0.3) }, C.sky),
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,27 @@
local M = {}
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,132 @@
local M = {}
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,11 @@
local M = {}
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 },
}
end
return M

View File

@ -0,0 +1,18 @@
local M = {}
function M.get()
return {
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,38 @@
local M = {}
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,63 @@
local M = {}
function M.get()
local transparent_background = require("catppuccin").options.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 = O.integrations.mini.indentscope_color
return {
MiniCompletionActiveParameter = { style = { "underline" } },
MiniCursorword = { style = { "underline" } },
MiniCursorwordCurrent = { style = { "underline" } },
MiniIndentscopeSymbol = { fg = C[indentscope_color] or C.text },
MiniIndentscopePrefix = { style = { "nocombine" } }, -- Make it invisible
MiniJump = { fg = C.overlay2, bg = C.pink },
MiniJump2dSpot = { bg = C.base, fg = C.peach, style = { "bold", "underline" } },
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,100 @@
local M = {}
function M.get()
local virtual_text = O.integrations.native_lsp.virtual_text
local underlines = O.integrations.native_lsp.underlines
local inlay_hints = O.integrations.native_lsp.inlay_hints
local error = C.red
local warning = C.yellow
local info = C.sky
local hint = C.teal
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
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
-- for nvim nightly
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
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
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
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 = { fg = C.peach },
-- 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,39 @@
local M = {}
function M.get()
local background = O.integrations.navic.custom_bg and O.integrations.navic.custom_bg or C.none
if O.integrations.navic.custom_bg == "lualine" then background = C.mantle 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,244 @@
local M = {}
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),
},
NeogitDiffAdd = {
bg = U.darken(C.green, 0.095, C.base),
fg = U.darken(C.green, 0.800, C.base),
},
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,
},
}
end
return M

View File

@ -0,0 +1,24 @@
local M = {}
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,46 @@
local M = {}
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,26 @@
local M = {}
local virtual_text = O.integrations.native_lsp.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,11 @@
local M = {}
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,25 @@
local M = {}
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,27 @@
local M = {}
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,78 @@
local M = {}
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.mantle },
OctoBubbleGrey = { fg = C.text, bg = C.mantle },
OctoBubbleDelimiterGrey = { fg = C.mantle },
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.mantle },
OctoStateOpenFloat = { fg = C.green, bg = C.mantle },
OctoStateClosed = { fg = C.red, bg = C.mantle },
OctoStateClosedFloat = { fg = C.red, bg = C.mantle },
OctoStateMerged = { fg = C.mauve, bg = C.mantle },
OctoStateMergedFloat = { fg = C.mauve, bg = C.mantle },
OctoStatePending = { fg = C.peach, bg = C.mantle },
OctoStatePendingFloat = { fg = C.peach, bg = C.mantle },
OctoStateApproved = { link = "OctoStateOpen" },
OctoStateApprovedFloat = { link = "OctoStateOpen" },
OctoStateChangesRequested = { fg = C.maroon, bg = C.mantle },
OctoStateChangesRequestedFloat = { fg = C.maroon, bg = C.mantle },
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" } },
OctoNormalFront = { fg = C.text },
OctoYellowFloat = { fg = C.yellow, bg = C.mantle },
OctoPurpleFloat = { fg = C.mauve, bg = C.mantle },
OctoRedFloat = { fg = C.red, bg = C.mantle },
OctoGreenFloat = { fg = C.green, bg = C.mantle },
OctoGreyFloat = { fg = C.text, bg = C.mantle },
OctoBlueFloat = { fg = C.blue, bg = C.mantle },
}
end
return M

View File

@ -0,0 +1,18 @@
local M = {}
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,12 @@
local M = {}
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,15 @@
local M = {}
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,12 @@
local M = {}
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,48 @@
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, disable the integration.
]],
vim.log.levels.INFO
)
return {}
end
return {
["@lsp.type.boolean"] = { link = "@boolean" },
["@lsp.type.builtinType"] = { link = "@type.builtin" },
["@lsp.type.comment"] = { link = "@comment" },
["@lsp.type.enum"] = { link = "@type" },
["@lsp.type.enumMember"] = { link = "@constant" },
["@lsp.type.escapeSequence"] = { link = "@string.escape" },
["@lsp.type.formatSpecifier"] = { link = "@punctuation.special" },
["@lsp.type.interface"] = { fg = C.flamingo },
["@lsp.type.keyword"] = { link = "@keyword" },
["@lsp.type.namespace"] = { link = "@module" },
["@lsp.type.number"] = { link = "@number" },
["@lsp.type.operator"] = { link = "@operator" },
["@lsp.type.parameter"] = { link = "@parameter" },
["@lsp.type.property"] = { link = "@property" },
["@lsp.type.selfKeyword"] = { link = "@variable.builtin" },
["@lsp.type.typeAlias"] = { link = "@type.definition" },
["@lsp.type.unresolvedReference"] = { link = "@error" },
["@lsp.type.variable"] = {}, -- use treesitter styles for regular variables
["@lsp.typemod.class.defaultLibrary"] = { link = "@type.builtin" },
["@lsp.typemod.enum.defaultLibrary"] = { link = "@type.builtin" },
["@lsp.typemod.enumMember.defaultLibrary"] = { link = "@constant.builtin" },
["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" },
["@lsp.typemod.keyword.async"] = { link = "@keyword.coroutine" },
["@lsp.typemod.macro.defaultLibrary"] = { link = "@function.builtin" },
["@lsp.typemod.method.defaultLibrary"] = { link = "@function.builtin" },
["@lsp.typemod.operator.injected"] = { link = "@operator" },
["@lsp.typemod.string.injected"] = { link = "@string" },
["@lsp.typemod.type.defaultLibrary"] = { link = "@type.builtin" },
["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" },
["@lsp.typemod.variable.injected"] = { link = "@variable" },
}
end
return M

View File

@ -0,0 +1,13 @@
local M = {}
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,11 @@
local M = {}
function M.get()
return {
tkLink = { fg = C.blue },
tkBrackets = { fg = C.pink },
tkTag = { fg = C.sky },
}
end
return M

View File

@ -0,0 +1,60 @@
local M = {}
function M.get()
if O.integrations.telescope.style == "nvchad" then
return {
TelescopeBorder = {
fg = O.transparent_background and C.blue or C.mantle,
bg = O.transparent_background and C.none or C.mantle,
},
TelescopeMatching = { fg = C.blue },
TelescopeNormal = {
bg = O.transparent_background and C.none or C.mantle,
},
TelescopePromptBorder = {
fg = O.transparent_background and C.blue or C.surface0,
bg = O.transparent_background and C.none or C.surface0,
},
TelescopePromptNormal = {
fg = C.text,
bg = O.transparent_background and C.none or C.surface0,
},
TelescopePromptPrefix = {
fg = C.flamingo,
bg = O.transparent_background and C.none or C.surface0,
},
TelescopePreviewTitle = {
fg = O.transparent_background and C.green or C.base,
bg = O.transparent_background and C.none or C.green,
},
TelescopePromptTitle = {
fg = O.transparent_background and C.red or C.base,
bg = O.transparent_background and C.none or C.red,
},
TelescopeResultsTitle = {
fg = O.transparent_background and C.lavender or C.mantle,
bg = O.transparent_background and C.none or C.lavender,
},
TelescopeSelection = {
fg = O.transparent_background and C.flamingo or C.text,
bg = O.transparent_background and C.none or C.surface0,
style = { "bold" },
},
TelescopeSelectionCaret = { fg = C.flamingo },
}
end
return {
-- TelescopeNormal = { link = "NormalFloat" }, -- Respect telescope's default float bg
TelescopeBorder = { link = "FloatBorder" },
TelescopeSelectionCaret = { fg = C.flamingo },
TelescopeSelection = {
fg = O.transparent_background and C.flamingo or C.text,
bg = O.transparent_background and C.none or C.surface0,
style = { "bold" },
},
TelescopeMatching = { fg = C.blue },
}
end
return M

View File

@ -0,0 +1,274 @@
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, either disable the integration or 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.lavender, 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.peach, 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.rosewater, style = { "italic", "underline" } }, -- urls, links and emails
["@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.yellow, style = O.styles.properties or { "italic" } }, -- 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 {} }, -- Same as TSField.
-- 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.teal, 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.sapphire }, -- 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"] = { link = "Operator" }, -- 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.sky, 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.maroon, style = { "bold" } }, -- bold
["@markup.italic"] = { fg = C.maroon, style = { "italic" } }, -- italic
["@markup.strikethrough"] = { fg = C.text, style = { "strikethrough" } }, -- strikethrough text
["@markup.underline"] = { link = "Underlined" }, -- underlined text
["@markup.heading"] = { fg = C.blue, style = { "bold" } }, -- titles like: # Example
["@markup.math"] = { fg = C.blue }, -- math environments (e.g. `$ ... $` in LaTeX)
["@markup.quote"] = { fg = C.maroon, style = { "bold" } }, -- 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"] = { link = "Tag" }, -- text references, footnotes, citations, etc.
["@markup.link.label"] = { link = "Label" }, -- link, reference descriptions
["@markup.link.url"] = { fg = C.rosewater, style = { "italic", "underline" } }, -- urls, links and emails
["@markup.raw"] = { fg = C.teal }, -- used for inline code in markdown and for doc in python (""")
["@markup.list"] = { link = "Special" },
["@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.mauve }, -- Tags like html tag names.
["@tag.attribute"] = { fg = C.teal, style = O.styles.miscs or { "italic" } }, -- Tags like html tag names.
["@tag.delimiter"] = { fg = C.sky }, -- Tag delimiter like < > /
-- Misc
["@error"] = { link = "Error" },
-- Language specific:
-- bash
["@function.builtin.bash"] = { fg = C.red, style = O.styles.miscs or { "italic" } },
-- 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" },
-- java
["@constant.java"] = { fg = C.teal },
-- css
["@property.css"] = { fg = C.lavender },
["@property.id.css"] = { fg = C.blue },
["@property.class.css"] = { fg = C.yellow },
["@type.css"] = { fg = C.lavender },
["@type.tag.css"] = { fg = C.mauve },
["@string.plain.css"] = { fg = C.peach },
["@number.css"] = { fg = C.peach },
-- toml
["@property.toml"] = { fg = C.blue }, -- Differentiates between string and properties
-- json
["@label.json"] = { fg = C.blue }, -- For labels: label: in C and :label: in Lua.
-- lua
["@constructor.lua"] = { fg = C.flamingo }, -- For constructor calls and definitions: = { } in Lua.
-- typescript
["@property.typescript"] = { fg = C.lavender, style = O.styles.properties or {} },
["@constructor.typescript"] = { fg = C.lavender },
-- TSX (Typescript React)
["@constructor.tsx"] = { fg = C.lavender },
["@tag.attribute.tsx"] = { fg = C.teal, style = O.styles.miscs or { "italic" } },
-- yaml
["@variable.member.yaml"] = { fg = C.blue }, -- For fields.
-- Ruby
["@string.special.symbol.ruby"] = { fg = C.flamingo },
-- PHP
["@function.method.php"] = { link = "Function" },
["@function.method.call.php"] = { link = "Function" },
-- C/CPP
["@type.builtin.c"] = { fg = C.yellow, style = {} },
["@property.cpp"] = { fg = C.text },
["@type.builtin.cpp"] = { fg = C.yellow, style = {} },
-- gitcommit
["@comment.warning.gitcommit"] = { fg = C.yellow },
-- 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

View File

@ -0,0 +1,18 @@
local M = {}
function M.get()
return O.transparent_background and {
TreesitterContextBottom = { sp = C.dim, style = { "underline" } },
} or {
TreesitterContextBottom = {
sp = C.surface0,
style = { "underline" },
},
TreesitterContextLineNumber = {
fg = C.surface1,
bg = C.mantle,
},
}
end
return M

View File

@ -0,0 +1,15 @@
local M = {}
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,15 @@
local M = {}
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,10 @@
local M = {}
M.get = function()
return {
UfoFoldedFg = { fg = C.lavender },
UfoFoldedEllipsis = { fg = C.crust, bg = C.blue },
}
end
return M

View File

@ -0,0 +1,10 @@
local M = {}
function M.get()
return {
Sneak = { fg = C.overlay2, bg = C.pink },
SneakScope = { bg = C.text },
}
end
return M

View File

@ -0,0 +1,20 @@
local M = {}
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,15 @@
local M = {}
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,12 @@
local M = {}
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,102 @@
local M = {}
function M.get()
return {
Comment = { fg = C.overlay0, 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
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 },
}
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,231 @@
local is_vim = vim.fn.has "nvim" ~= 1
if is_vim then require "catppuccin.lib.vim" end
---@type Catppuccin
local M = {
default_options = {
flavour = "auto",
background = {
light = "latte",
dark = "mocha",
},
compile_path = vim.fn.stdpath "cache" .. "/catppuccin",
transparent_background = false,
show_end_of_buffer = false,
term_colors = false,
kitty = vim.env.KITTY_WINDOW_ID and true or false,
dim_inactive = {
enabled = false,
shade = "dark",
percentage = 0.15,
},
no_italic = false,
no_bold = false,
no_underline = false,
styles = {
comments = { "italic" },
conditionals = { "italic" },
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
},
default_integrations = true,
integrations = {
alpha = true,
cmp = true,
dap = true,
dap_ui = true,
dashboard = true,
diffview = false,
flash = true,
gitsigns = true,
markdown = true,
neogit = true,
neotree = true,
nvimtree = true,
ufo = true,
rainbow_delimiters = true,
semantic_tokens = not is_vim,
telescope = { enabled = true },
treesitter = not is_vim,
treesitter_context = true,
barbecue = {
dim_dirname = true,
bold_basename = true,
dim_context = false,
alt_background = false,
},
illuminate = {
enabled = true,
lsp = false,
},
indent_blankline = {
enabled = true,
scope_color = "",
colored_indent_levels = false,
},
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
inlay_hints = {
background = true,
},
},
navic = {
enabled = false,
custom_bg = "NONE",
},
dropbar = {
enabled = true,
color_mode = false,
},
colorful_winsep = {
enabled = false,
color = "red",
},
},
color_overrides = {},
highlight_overrides = {},
},
flavours = { latte = 1, frappe = 2, macchiato = 3, mocha = 4 },
path_sep = jit and (jit.os == "Windows" and "\\" or "/") or package.config:sub(1, 1),
}
M.options = M.default_options
function M.compile()
local user_flavour = M.flavour
for flavour, _ in pairs(M.flavours) do
M.flavour = flavour
require("catppuccin.lib." .. (is_vim and "vim." or "") .. "compiler").compile(flavour)
end
M.flavour = user_flavour -- Restore user flavour after compile
end
local function get_flavour(default)
local flavour
if default and default == M.flavour and vim.o.background ~= (M.flavour == "latte" and "light" or "dark") then
flavour = M.options.background[vim.o.background]
else
flavour = default
end
if flavour and not M.flavours[flavour] then
vim.notify(
string.format(
"Catppuccin (error): Invalid flavour '%s', flavour must be 'latte', 'frappe', 'macchiato', 'mocha' or 'auto'",
flavour
),
vim.log.levels.ERROR
)
flavour = nil
end
return flavour or M.options.flavour or vim.g.catppuccin_flavour or M.options.background[vim.o.background]
end
local did_setup = false
function M.load(flavour)
if M.options.flavour == "auto" then -- set colorscheme based on o:background
M.options.flavour = nil -- ensure that this will only run once on startup
end
if not did_setup then M.setup() end
M.flavour = get_flavour(flavour)
local compiled_path = M.options.compile_path .. M.path_sep .. M.flavour
local f = loadfile(compiled_path)
if not f then
M.compile()
f = assert(loadfile(compiled_path), "could not load cache")
end
f(flavour or M.options.flavour or vim.g.catppuccin_flavour)
end
---@type fun(user_conf: CatppuccinOptions?)
function M.setup(user_conf)
did_setup = true
-- Parsing user config
user_conf = user_conf or {}
if user_conf.default_integrations == false then M.default_options.integrations = {} end
M.options = vim.tbl_deep_extend("keep", user_conf, M.default_options)
M.options.highlight_overrides.all = user_conf.custom_highlights or M.options.highlight_overrides.all
-- Get cached hash
local cached_path = M.options.compile_path .. M.path_sep .. "cached"
local file = io.open(cached_path)
local cached = nil
if file then
cached = file:read()
file:close()
end
-- Get current hash
local git_path = debug.getinfo(1).source:sub(2, -24) .. ".git"
local git = vim.fn.getftime(git_path) -- 2x faster vim.loop.fs_stat
local hash = require("catppuccin.lib.hashing").hash(user_conf)
.. (git == -1 and git_path or git) -- no .git in /nix/store -> cache path
.. (vim.o.winblend == 0 and 1 or 0) -- :h winblend
.. (vim.o.pumblend == 0 and 1 or 0) -- :h pumblend
-- Recompile if hash changed
if cached ~= hash then
M.compile()
file = io.open(cached_path, "wb")
if file then
file:write(hash)
file:close()
end
end
end
if is_vim then return M end
vim.api.nvim_create_user_command(
"Catppuccin",
function(inp) vim.api.nvim_command("colorscheme catppuccin-" .. get_flavour(inp.args)) end,
{
nargs = 1,
complete = function(line)
return vim.tbl_filter(function(val) return vim.startswith(val, line) end, vim.tbl_keys(M.flavours))
end,
}
)
vim.api.nvim_create_user_command("CatppuccinCompile", function()
for name, _ in pairs(package.loaded) do
if name:match "^catppuccin." then package.loaded[name] = nil end
end
M.compile()
vim.notify("Catppuccin (info): compiled cache!", vim.log.levels.INFO)
vim.cmd.colorscheme "catppuccin"
end, {})
if vim.g.catppuccin_debug then
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*/catppuccin/*",
callback = function()
vim.schedule(function() vim.cmd "CatppuccinCompile" end)
end,
})
end
return M

View File

@ -0,0 +1,104 @@
local path_sep = require("catppuccin").path_sep
local O = require("catppuccin").options
local M = {}
-- Credit: https://github.com/EdenEast/nightfox.nvim
local fmt = string.format
local function inspect(t)
local list = {}
for k, v in pairs(t) do
local tv = type(v)
if tv == "string" then
table.insert(list, fmt([[%s = "%s"]], k, v))
elseif tv == "table" then
table.insert(list, fmt([[%s = %s]], k, inspect(v)))
else
table.insert(list, fmt([[%s = %s]], k, tostring(v)))
end
end
return fmt([[{ %s }]], table.concat(list, ", "))
end
function M.compile(flavour)
local theme = require("catppuccin.lib.mapper").apply(flavour)
local lines = {
string.format(
[[
return string.dump(function(flavour)
vim.o.termguicolors = true
if vim.g.colors_name then vim.cmd("hi clear") end
if flavour then vim.o.background = "%s" end
vim.g.colors_name = "catppuccin-%s"
local h = vim.api.nvim_set_hl]],
flavour == "latte" and "light" or "dark",
flavour
),
}
if path_sep == "\\" then O.compile_path = O.compile_path:gsub("/", "\\") end
local tbl = vim.tbl_deep_extend("keep", theme.custom_highlights, theme.integrations, theme.syntax, theme.editor)
if O.term_colors == true then
for k, v in pairs(theme.terminal) do
table.insert(lines, fmt('vim.g.%s = "%s"', k, v))
end
end
for group, color in pairs(tbl) do
if color.style then
for _, style in pairs(color.style) do
color[style] = true
if O.no_italic and style == "italic" then color[style] = false end
if O.no_bold and style == "bold" then color[style] = false end
if O.no_underline and style == "underline" then color[style] = false end
end
end
color.style = nil
if color.link and (theme.custom_highlights[group] and not theme.custom_highlights[group].link) then
color.link = nil
end
table.insert(lines, fmt([[h(0, "%s", %s)]], group, inspect(color)))
end
table.insert(lines, "end, true)")
if vim.fn.isdirectory(O.compile_path) == 0 then vim.fn.mkdir(O.compile_path, "p") end
if vim.g.catppuccin_debug then -- Debugging purpose
local deb = io.open(O.compile_path .. path_sep .. flavour .. ".lua", "wb")
if deb then
deb:write(table.concat(lines, "\n"))
deb:close()
end
end
local f = loadstring(table.concat(lines, "\n"))
if not f then
local err_path = (path_sep == "/" and "/tmp" or os.getenv "TMP") .. "/catppuccin_error.lua"
print(string.format(
[[Catppuccin (error): Most likely some mistake made in your catppuccin config
You can open %s for debugging
If you think this is a bug, kindly open an issue and attach %s file
Below is the error message that we captured:
]],
err_path,
err_path
))
local err = io.open(err_path, "wb")
if err then
err:write(table.concat(lines, "\n"))
err:close()
end
dofile(err_path)
return
end
local file = assert(
io.open(O.compile_path .. path_sep .. flavour, "wb"),
"Permission denied while writing compiled file to " .. O.compile_path .. path_sep .. flavour
)
file:write(f())
file:close()
end
return M

View File

@ -0,0 +1,26 @@
local M = {}
local B = bit or bit32 or require "catppuccin.lib.vim.bit"
local hash_str = function(str) -- djb2, https://theartincode.stanis.me/008-djb2/
local hash = 5381
for i = 1, #str do
hash = B.lshift(hash, 5) + hash + string.byte(str, i)
end
return hash
end
function M.hash(v) -- Xor hashing: https://codeforces.com/blog/entry/85900
local t = type(v)
if t == "table" then
local hash = 0
for p, u in next, v do
hash = B.bxor(hash, hash_str(p .. M.hash(u)))
end
return hash
elseif t == "function" then
return M.hash(v(require("catppuccin.palettes").get_palette()))
end
return tostring(v)
end
return M

View File

@ -0,0 +1,20 @@
-- DEPRECATED MODULE
local M = {}
function M.highlight(group, color)
if color.style then
for _, style in ipairs(color.style) do
color[style] = true
end
end
color.style = nil
vim.api.nvim_set_hl(0, group, color)
end
function M.syntax(tbl)
for group, colors in pairs(tbl) do
M.highlight(group, colors)
end
end
return M

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