mirror of https://github.com/sgoudham/nvim.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
583 lines
17 KiB
Markdown
583 lines
17 KiB
Markdown
# Read this:
|
|
Hello there and thanks for following the development of Catppuccin.nvim: remastered version. This branch is meant to hopefully end up being merged to main. As of now, all of the development discussions are carried out on #44, so feel free to leave your suggestions and ideas there :)
|
|
|
|
# About
|
|
|
|
<div style="text-align: justify">
|
|
Catppuccin.nvim is a NeoVim plugin that provides multiple colorschemes based on the catppuccin color palette but varying their properties. Apart from the eye-candy colorschemes, Catppuccin.nvim also provides integrations with multiple plugins and tools you are probably already using (e.g. Treesitter, Native LSP, ...).
|
|
</div>
|
|
|
|
# π² Table of Contents
|
|
|
|
- [Flavors](#-flavors)
|
|
- [Features](#-features)
|
|
- [Notices](#-notices)
|
|
- [Installation](#-installation)
|
|
- [Prerequisites](#prerequisites)
|
|
- [Adding the plugin](#adding-the-plugin)
|
|
- [Setup](#setup)
|
|
- [For init.lua](#for-initlua)
|
|
- [For init.vim](#for-initvim)
|
|
- [Updating](#updating)
|
|
- [Usage](#usage)
|
|
- [Commands](#commands)
|
|
- [API](#api)
|
|
- [Modules](#modules)
|
|
- [Configuration](#-configuration)
|
|
- [General](#general)
|
|
- [Styles](#styles)
|
|
- [Integrations](#integrations)
|
|
- [Special Integrations](#special-integrations)
|
|
- [List of Colorschemes](#list-of-colorschemes)
|
|
- [Overwriting colors & hi groups](overwriting-colors--hi-groups)
|
|
- [Hooks](#hooks)
|
|
- [Contribute](#-contribute)
|
|
- [Need Help](#need-help)
|
|
- [Inspirations](#-inspirations)
|
|
- [License](#-license)
|
|
- [FAQ](#-faq)
|
|
- [To-Do](#-to-do)
|
|
|
|
# π¨ Flavors
|
|
|
|
## Dark catppuccin
|
|
|
|
<img src ="https://i.imgur.com/qdTDwaC.png">
|
|
|
|
## Neon Latte
|
|
|
|
<img src ="https://i.imgur.com/WlzSh2v.png">
|
|
|
|
## Soft Manilo
|
|
|
|
<img src ="https://i.imgur.com/J51jWId.png">
|
|
|
|
## Light Melya
|
|
|
|
<img src ="https://i.imgur.com/r2XNdh5.png">
|
|
|
|
# π· Extra
|
|
|
|
## Tmux Ports
|
|
|
|
<p align="center">
|
|
<img alt="Neon Latte" src="https://i.imgur.com/JblSone.png" width="47%">
|
|
|
|
<img alt="Dark catppuccin" src="https://i.imgur.com/rBXjPbL.png" width="47%">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img alt="Soft Manilo" src="https://i.imgur.com/6PZgZPs.png" width="47%">
|
|
|
|
<img alt="Light Melya" src="https://i.imgur.com/WdUUS4V.png" width="47%">
|
|
</p>
|
|
|
|
# π Features
|
|
|
|
- Multiple colorschemes (AKA [flavors](#-flavors)) available!
|
|
- Handy CLI.
|
|
- Allows user remaps.
|
|
- Extensible for many use cases.
|
|
- Integrations with a lot of stuff:
|
|
- [Treesitter](https://github.com/tree-sitter/tree-sitter)
|
|
- [Native LSP](https://github.com/neovim/nvim-lspconfig)
|
|
- [Telescope](https://github.com/nvim-telescope/telescope.nvim)
|
|
- [LSP Saga](https://github.com/glepnir/lspsaga.nvim)
|
|
- [Trouble](https://github.com/folke/trouble.nvim)
|
|
- [WhichKey](https://github.com/folke/which-key.nvim)
|
|
- [Git signs](https://github.com/lewis6991/gitsigns.nvim)
|
|
- [BarBar](https://github.com/romgrk/barbar.nvim)
|
|
- [NvimTree](https://github.com/kyazdani42/nvim-tree.lua)
|
|
- [Lualine](https://github.com/hoob3rt/lualine.nvim)
|
|
- [Git Gutter](https://github.com/airblade/vim-gitgutter)
|
|
- [Fern](https://github.com/lambdalisue/fern.vim)
|
|
- [Lightline](https://github.com/itchyny/lightline.vim)
|
|
- [Dashboard](https://github.com/glepnir/dashboard-nvim)
|
|
- [Markdown](https://www.markdownguide.org/)
|
|
- [Lightspeed](https://github.com/ggandor/lightspeed.nvim)
|
|
- [Nvim-ts-Rainbow](https://github.com/p00f/nvim-ts-rainbow)
|
|
- [Sneak](https://github.com/justinmk/vim-sneak)
|
|
- [Hop](https://github.com/phaazon/hop.nvim)
|
|
- [Neogit](https://github.com/TimUntersberger/neogit)
|
|
- [Indent Blankline](https://github.com/lukas-reineke/indent-blankline.nvim)
|
|
- [Tmux](https://github.com/tmux/tmux)
|
|
- [Kitty](https://github.com/kovidgoyal/kitty)
|
|
- [Alacritty](https://github.com/alacritty/alacritty)
|
|
|
|
# πΊ Notices
|
|
|
|
Checkout the [CHANGELOG.md](https://github.com/Pocco81/Catppuccin.nvim/blob/main/CHANGELOG.md) file for more information on the notices below:
|
|
|
|
<ul>
|
|
<li><b>03-09-21</b>: Ported catppuccin themes to Tmux!</li>
|
|
<li><b>01-09-21</b>: Added API and functionality for remapping colors and highlight groups + added lightspeed.nvim integration.</li>
|
|
<li><b>29-08-21</b>: Refactored diffs and git related stuff, added the `CPClear` command and added option to set terminal colors</li>
|
|
<li><b>22-08-21</b>: Just released!</li>
|
|
</ul>
|
|
|
|
<details>
|
|
<summary>Old notices...</summary>
|
|
<p>
|
|
<ul>
|
|
</ul>
|
|
</p>
|
|
</details>
|
|
|
|
# π¦ Installation
|
|
|
|
## Prerequisites
|
|
|
|
- [NeoVim 0.5+](https://github.com/neovim/neovim/releases/tag/v0.5.0)
|
|
|
|
## Adding the plugin
|
|
|
|
You can use your favorite plugin manager for this. Here are some examples with the most popular ones:
|
|
|
|
### Vim-plug
|
|
|
|
```lua
|
|
Plug 'Pocco81/Catppuccin.nvim'
|
|
```
|
|
|
|
### Packer.nvim
|
|
|
|
```lua
|
|
use "Pocco81/Catppuccin.nvim"
|
|
```
|
|
|
|
### Vundle
|
|
|
|
```lua
|
|
Plugin 'Pocco81/Catppuccin.nvim'
|
|
```
|
|
|
|
### NeoBundle
|
|
|
|
```lua
|
|
NeoBundleFetch 'Pocco81/Catppuccin.nvim'
|
|
```
|
|
|
|
## Setup
|
|
|
|
There are already some sane defaults that you may like, however you can change them to match your taste. These are the defaults:
|
|
|
|
```lua
|
|
colorscheme = "dark_catppuccin",
|
|
transparency = false,
|
|
term_colors = false,
|
|
styles = {
|
|
comments = "italic",
|
|
functions = "italic",
|
|
keywords = "italic",
|
|
strings = "NONE",
|
|
variables = "NONE",
|
|
},
|
|
integrations = {
|
|
treesitter = true,
|
|
native_lsp = {
|
|
enabled = true,
|
|
virtual_text = {
|
|
errors = "italic",
|
|
hints = "italic",
|
|
warnings = "italic",
|
|
information = "italic",
|
|
},
|
|
underlines = {
|
|
errors = "underline",
|
|
hints = "underline",
|
|
warnings = "underline",
|
|
information = "underline",
|
|
}
|
|
},
|
|
lsp_trouble = false,
|
|
lsp_saga = false,
|
|
gitgutter = false,
|
|
gitsigns = false,
|
|
telescope = false,
|
|
nvimtree = {
|
|
enabled = false,
|
|
show_root = false,
|
|
},
|
|
which_key = false,
|
|
indent_blankline = {
|
|
enabled = false,
|
|
colored_indent_levels = false,
|
|
},
|
|
dashboard = false,
|
|
neogit = false,
|
|
vim_sneak = false,
|
|
fern = false,
|
|
barbar = false,
|
|
bufferline = false,
|
|
markdown = false,
|
|
lightspeed = false,
|
|
ts_rainbow = false,
|
|
hop = false,
|
|
}
|
|
```
|
|
|
|
The way you setup the settings on your configuration varies on whether you are using vimL for this or Lua.
|
|
|
|
<details>
|
|
<summary>For init.lua</summary>
|
|
<p>
|
|
|
|
```lua
|
|
local catppuccin = require("catppuccin")
|
|
|
|
-- configure it
|
|
catppuccin.setup(
|
|
{
|
|
colorscheme = "dark_catppuccin",
|
|
transparency = false,
|
|
term_colors = false,
|
|
styles = {
|
|
comments = "italic",
|
|
functions = "italic",
|
|
keywords = "italic",
|
|
strings = "NONE",
|
|
variables = "NONE",
|
|
},
|
|
integrations = {
|
|
treesitter = true,
|
|
native_lsp = {
|
|
enabled = true,
|
|
virtual_text = {
|
|
errors = "italic",
|
|
hints = "italic",
|
|
warnings = "italic",
|
|
information = "italic",
|
|
},
|
|
underlines = {
|
|
errors = "underline",
|
|
hints = "underline",
|
|
warnings = "underline",
|
|
information = "underline",
|
|
}
|
|
},
|
|
lsp_trouble = false,
|
|
lsp_saga = false,
|
|
gitgutter = false,
|
|
gitsigns = false,
|
|
telescope = false,
|
|
nvimtree = {
|
|
enabled = false,
|
|
show_root = false,
|
|
},
|
|
which_key = false,
|
|
indent_blankline = {
|
|
enabled = false,
|
|
colored_indent_levels = false,
|
|
},
|
|
dashboard = false,
|
|
neogit = false,
|
|
vim_sneak = false,
|
|
fern = false,
|
|
barbar = false,
|
|
bufferline = false,
|
|
markdown = false,
|
|
lightspeed = false,
|
|
ts_rainbow = false,
|
|
hop = false,
|
|
}
|
|
}
|
|
)
|
|
```
|
|
|
|
<br />
|
|
</details>
|
|
|
|
<details>
|
|
<summary>For init.vim</summary>
|
|
<p>
|
|
|
|
```lua
|
|
lua << EOF
|
|
local catppuccin = require("catppuccin")
|
|
|
|
-- configure it
|
|
catppuccin.setup(
|
|
{
|
|
colorscheme = "dark_catppuccin",
|
|
transparency = false,
|
|
term_colors = false,
|
|
styles = {
|
|
comments = "italic",
|
|
functions = "italic",
|
|
keywords = "italic",
|
|
strings = "NONE",
|
|
variables = "NONE",
|
|
},
|
|
integrations = {
|
|
treesitter = true,
|
|
native_lsp = {
|
|
enabled = true,
|
|
virtual_text = {
|
|
errors = "italic",
|
|
hints = "italic",
|
|
warnings = "italic",
|
|
information = "italic",
|
|
},
|
|
underlines = {
|
|
errors = "underline",
|
|
hints = "underline",
|
|
warnings = "underline",
|
|
information = "underline",
|
|
}
|
|
},
|
|
lsp_trouble = false,
|
|
lsp_saga = false,
|
|
gitgutter = false,
|
|
gitsigns = false,
|
|
telescope = false,
|
|
nvimtree = {
|
|
enabled = false,
|
|
show_root = false,
|
|
},
|
|
which_key = false,
|
|
indent_blankline = {
|
|
enabled = false,
|
|
colored_indent_levels = false,
|
|
},
|
|
dashboard = false,
|
|
neogit = false,
|
|
vim_sneak = false,
|
|
fern = false,
|
|
barbar = false,
|
|
bufferline = false,
|
|
markdown = false,
|
|
lightspeed = false,
|
|
ts_rainbow = false,
|
|
hop = false,
|
|
}
|
|
}
|
|
)
|
|
EOF
|
|
```
|
|
|
|
<br />
|
|
</details>
|
|
|
|
After setting things up, you can load catppuccin like so:
|
|
|
|
```vim
|
|
" Vim Script
|
|
colorscheme catppuccin
|
|
```
|
|
|
|
```lua
|
|
-- Lua
|
|
vim.cmd[[colorscheme catppuccin]]
|
|
```
|
|
Passing `catppuccin` to the `colorscheme` command will pick the colorscheme in the config. Optionally, you could pass one by its code name (e.g. `colorscheme neon_latte`).
|
|
|
|
For instructions on how to configure the plugin, check out the [configuration](#configuration) section.
|
|
|
|
## Updating
|
|
|
|
This depends on your plugin manager. If, for example, you are using Packer.nvim, you can update it with this command:
|
|
|
|
```lua
|
|
:PackerUpdate
|
|
```
|
|
|
|
# π€ Usage
|
|
|
|
## Commands
|
|
|
|
The provides commands that follows the _camel casing_ naming convention and have the `CP` prefix so that it's easy to remember that they are part of Catppuccin.nvim:
|
|
|
|
- `:CPClear` clear all highlight groups.
|
|
- `:colorscheme <colorscheme_name>` load a colorscheme, not necessarily a catppuccin one. (Note: this is a built-in NVim command).
|
|
|
|
## API
|
|
|
|
The API allows you fetch data from catppuccin. It can be required as a Lua module:
|
|
|
|
```lua
|
|
local cp_api = require("catppuccin.api.<module>")
|
|
```
|
|
|
|
### Modules
|
|
|
|
- `colors`
|
|
|
|
```lua
|
|
cp_api.get_colors(<colorscheme>)
|
|
```
|
|
|
|
> Gets the colors from `<colorscheme>`. Returns two values: the first one is a table with a `status` field (for the exit status) and a `msg` field with an error message in case `status` is `false` (error), and the second value is a table with the colors. If it fails, it will return the colors from `dark_catppuccin`.
|
|
|
|
# π¬ Configuration
|
|
|
|
Although settings already have self-explanatory names, here is where you can find info about each one of them and their classifications!
|
|
|
|
## General
|
|
|
|
This settings are unrelated to any group and are independent.
|
|
|
|
- `colorscheme`: (String) code name of the color-scheme to be used. All of them can be found in the section below.
|
|
- `transparency`: (Boolean) if true, disables setting the background color.
|
|
- `term_colors`: (Boolean) if true, sets terminal colors (e.g. `g:terminal_color_0`).
|
|
|
|
## Styles
|
|
|
|
Handles the style of general hi groups (see `:h highlight-args`):
|
|
|
|
- `comments`: (String) changed the style of the comments.
|
|
- `functions`: (String) changed the style of the functions.
|
|
- `keywords`: (String) changed the style of the keywords.
|
|
- `strings`: (String) changed the style of the strings.
|
|
- `variables`: (String) changed the style of the variables.
|
|
|
|
## Integrations
|
|
|
|
These integrations allow catppuccin to set the theme of various plugins/stuff. To enable an integration you just need to set it to `true`, however, there are some special integrations...
|
|
|
|
If you'd like to know which highlight groups are being affected by catppuccin, checkout this directory: [`lua/catppuccin/core/integrations/`](https://github.com/Pocco81/Catppuccin.nvim/tree/main/lua/catppuccin/core/integrations).
|
|
|
|
### Special Integrations
|
|
|
|
- **Native Nvim LSP:** setting `enabled` to `true` enables this integration. 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)).
|
|
- **Lualine:** use this to set it up (Note: `catppuccin` is the only valid theme name. It will pick the one set in your config):
|
|
|
|
```lua
|
|
require('lualine').setup {
|
|
options = {
|
|
theme = "catppuccin"
|
|
-- ... the rest of your lualine config
|
|
}
|
|
}
|
|
```
|
|
|
|
- **Lightline:** use this to set it up (Note: `catppuccin` is the only valid colorscheme name. It will pick the one set in your config):
|
|
|
|
```lua
|
|
let g:lightline = {'colorscheme': 'catppuccin'}
|
|
```
|
|
|
|
- **Kitty:** Copy and paste the file corresponding to theme you want to use from [this directory](https://github.com/Pocco81/Catppuccin.nvim/tree/main/extra/kitty) on your Kitty config.
|
|
- **Alacritty:** Copy and paste the file corresponding to theme you want to use from [this directory](https://github.com/Pocco81/Catppuccin.nvim/tree/main/extra/alacritty) on your Alacritty config.
|
|
- **Tmux**: Follow the instructions [here](https://github.com/Pocco81/Catppuccin.nvim/tree/main/extra/tmux)
|
|
- **Indent-blankline.nvim**: setting `enabled` to `true` enables this integration. `colored_indent_levels` enables char highlights per indent level. Follow the instructions [here](https://github.com/lukas-reineke/indent-blankline.nvim#with-custom-gindent_blankline_char_highlight_list) to set the latter up.
|
|
- **NvimTree:** setting `enabled` to `true` enables this integration:
|
|
|
|
```lua
|
|
integration = {
|
|
nvimtree = {
|
|
enabled = true,
|
|
show_root = true, -- makes the root folder not transparent
|
|
}
|
|
}
|
|
```
|
|
|
|
## List of colorschemes
|
|
|
|
| Colorschemes | Code Names |
|
|
| ---------------- | ------------------ |
|
|
| Dark catppuccin | `dark_catppuccin` |
|
|
| Neon Latte | `neon_latte` |
|
|
| Soft Manilo | `soft_manilo` |
|
|
| Light Melya | `light_melya` |
|
|
|
|
## Overwriting colors & hi groups
|
|
|
|
Both colors and highlight groups can be overwritten like so:
|
|
|
|
```lua
|
|
catppuccin.remap({<colors>},{<hi_groups>})
|
|
```
|
|
|
|
Since you want to overwrite hi groups, then it's likely that you'll want to use the API to get the colors from x colorscheme as well:
|
|
|
|
```lua
|
|
local err, colors = cp_api.get_colors("neon_latte")
|
|
```
|
|
|
|
Here is an example using the API to overwrite the color green and change the style of the comments:
|
|
|
|
```lua
|
|
local cp_api = require("catppuccin.api.colors")
|
|
local err, colors = cp_api.get_colors("neon_latte")
|
|
|
|
if err.status then -- good
|
|
catppuccin.remap({
|
|
green = "#ffffff"
|
|
},
|
|
{
|
|
Comment = { fg = colors.comment, style = "bold" }, -- any comment
|
|
})
|
|
end
|
|
```
|
|
|
|
- For colorschemes: all editable fields are the same as the ones mentioned in any of the colorschemes found at: [`lua/catppuccin/color_schemes`](https://github.com/Pocco81/Catppuccin.nvim/tree/main/lua/catppuccin/color_schemes). You could also use one as a template, if you will.
|
|
- For highlight groups: all the highlight groups have three editable fields: `fg` for the foreground, `bg` for the background and `style` for the style.
|
|
|
|
<br />
|
|
</details>
|
|
|
|
## Hooks
|
|
|
|
Use them to execute code at certain events [described by their names]. These are the ones available:
|
|
|
|
| Function | Description |
|
|
| ------------------ | ---------------------------- |
|
|
| `before_loading()` | Before loading a colorscheme |
|
|
| `after_loading()` | After loading a colorscheme |
|
|
|
|
They can be used like so:
|
|
|
|
```lua
|
|
local catppuccin = require("catppuccin")
|
|
|
|
catppuccin.before_loading = function ()
|
|
print("I ran before setting a colorscheme!")
|
|
end
|
|
```
|
|
|
|
# π FAQ
|
|
|
|
- Q: **_"How can I view the doc from NeoVim?"_**
|
|
A: Use `:help Catppuccin.nvim`
|
|
|
|
- Q: **_"Why are the colorschemes named like that? Do they follow any convention(s)?"_**
|
|
A: A colorscheme's name is constructed by two words: the first one is a word that represents the tonalities in the colors used and the second one is the name of a coffee drink from [this list](https://en.wikipedia.org/wiki/List_of_coffee_drinks).
|
|
|
|
# π Contribute
|
|
|
|
See [CONTRIBUTING.md](https://github.com/Pocco81/Catppuccin.nvim/blob/dev/CONTRIBUTING.md).
|
|
|
|
# π Inspirations
|
|
|
|
The following projects inspired the creation of Catppuccin.nvim. If possible, go check them out to see why they are so amazing :]
|
|
|
|
- [folke/tokyonight.nvim](https://github.com/folke/tokyonight.nvim): A clean, dark Neovim theme written in Lua, with support for lsp, treesitter and lots of plugins. Includes additional themes for Kitty, Alacritty, iTerm and Fish.
|
|
- [norcalli/nvim-base16.lua](https://github.com/norcalli/nvim-base16.lua): Programmatic lua library for setting base16 themes in Neovim.
|
|
|
|
# π License
|
|
|
|
Catppuccin.nvim is released under the GPL v3.0 license. It grants open-source permissions for users including:
|
|
|
|
- The right to download and run the software freely
|
|
- The right to make changes to the software as desired
|
|
- The right to redistribute copies of the software
|
|
- The right to modify and distribute copies of new versions of the software
|
|
|
|
For more convoluted language, see the [LICENSE file](https://github.com/Pocco81/Catppuccin.nvim/blob/main/LICENSE.md).
|
|
|
|
# π TO-DO
|
|
|
|
**High Priority**
|
|
|
|
- Add Aquamarine FrappΓ©
|
|
|
|
**Low Priority**
|
|
|
|
- Finish DOC
|
|
- Add more integrations
|
|
|
|
<hr>
|
|
<p align="center">
|
|
Enjoy!
|
|
</p>
|