feat: init 0aaddfd4
Steve · 2025-08-13 19:54 9 file(s) · +818 −0
.gitignore (added) +2 −0
1 +
doc/tags
2 +
.DS_Store
LICENSE (added) +21 −0
1 +
MIT License
2 +
3 +
Copyright (c) 2025 Steve Simkins
4 +
5 +
Permission is hereby granted, free of charge, to any person obtaining a copy
6 +
of this software and associated documentation files (the "Software"), to deal
7 +
in the Software without restriction, including without limitation the rights
8 +
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 +
copies of the Software, and to permit persons to whom the Software is
10 +
furnished to do so, subject to the following conditions:
11 +
12 +
The above copyright notice and this permission notice shall be included in all
13 +
copies or substantial portions of the Software.
14 +
15 +
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 +
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 +
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 +
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 +
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 +
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 +
SOFTWARE.
README.md (added) +84 −0
1 +
# ansi-nvim
2 +
3 +
![cover](https://files.stevedylan.dev/ansi-nvim.png)
4 +
5 +
A colorscheme adapted from base16-black-metal-bathory
6 +
7 +
## Features
8 +
9 +
- Support for Neovim's built-in LSP
10 +
- Treesitter highlighting
11 +
- Plugin integrations:
12 +
  - Telescope
13 +
  - Indent Blankline
14 +
  - Nvim-notify
15 +
  - Rainbow parentheses
16 +
  - Nvim-cmp
17 +
  - vim-illuminate
18 +
  - LSP semantic tokens
19 +
  - mini.completion
20 +
  - nvim-dap-ui
21 +
22 +
## Installation
23 +
24 +
### Using [packer.nvim](https://github.com/wbthomason/packer.nvim)
25 +
26 +
```lua
27 +
use {
28 +
  'stevedylandev/ansi-nvim',
29 +
  config = function()
30 +
    vim.cmd('colorscheme ansi')
31 +
  end
32 +
}
33 +
```
34 +
35 +
### Using [lazy.nvim](https://github.com/folke/lazy.nvim)
36 +
37 +
```lua
38 +
{
39 +
  'stevedylandev/ansi-nvim',
40 +
  lazy = false,
41 +
  priority = 1000,
42 +
  config = function()
43 +
    vim.cmd('colorscheme ansi')
44 +
  end,
45 +
}
46 +
```
47 +
48 +
## Usage
49 +
50 +
Simply set the colorscheme in your Neovim configuration:
51 +
52 +
```lua
53 +
vim.cmd('colorscheme ansi')
54 +
```
55 +
56 +
If you don't see colors, make sure you have true color support enabled:
57 +
58 +
```lua
59 +
vim.opt.termguicolors = true
60 +
```
61 +
62 +
## Configuration
63 +
64 +
You can configure the colorscheme by passing options to the setup function:
65 +
66 +
```lua
67 +
require('ansi').setup({
68 +
  -- All options default to true
69 +
  telescope = true,          -- Telescope plugin
70 +
  telescope_borders = false, -- Telescope borders
71 +
  indentblankline = true,    -- Indent-blankline plugin
72 +
  notify = true,             -- Nvim-notify plugin
73 +
  ts_rainbow = true,         -- Rainbow parentheses
74 +
  cmp = true,                -- Nvim-cmp plugin
75 +
  illuminate = true,         -- vim-illuminate plugin
76 +
  lsp_semantic = true,       -- LSP semantic tokens
77 +
  mini_completion = true,    -- mini.completion plugin
78 +
  dapui = true,              -- nvim-dap-ui plugin
79 +
})
80 +
```
81 +
82 +
## Credits
83 +
84 +
This colorscheme is based on the base16-black-metal-bathory palette and was inspired by various dark themes in the Neovim ecosystem, and the base for this plugin is pulled from [base16-nvim](https://github.com/RRethy/base16-nvim)
colors/ansi.vim (added) +13 −0
1 +
hi clear
2 +
set notermguicolors
3 +
let g:colors_name = 'ansi'
4 +
lua require('ansi-colorscheme').setup({
5 +
    \ base00 = 0, base01 = 8, base02 = 8, base03 = 8,
6 +
    \ base04 = 7, base05 = 15, base06 = 7, base07 = 15,
7 +
    \ base08 = 1, base09 = 3, base0A = 3, base0B = 2,
8 +
    \ base0C = 6, base0D = 4, base0E = 5, base0F = 8,
9 +
    \ cterm00 = 0, cterm01 = 8, cterm02 = 8, cterm03 = 8,
10 +
    \ cterm04 = 7, cterm05 = 15, cterm06 = 7, cterm07 = 15,
11 +
    \ cterm08 = 1, cterm09 = 3, cterm0A = 3, cterm0B = 2,
12 +
    \ cterm0C = 6, cterm0D = 4, cterm0E = 5, cterm0F = 8
13 +
    \})
doc/colorscheme.txt (added) +13 −0
1 +
*ansi-nvim.txt* Neovim colorscheme based on base16-black-metal-bathory
2 +
3 +
Author:  Steve Simkins (stevedylandev) <hello@stevedylan.dev>
4 +
5 +
INTRODUCTION                                                    *ansi-nvim*
6 +
===========================================================================
7 +
8 +
Colorschemes can be accessed with |:colorscheme|.
9 +
>
10 +
    :colorscheme ansi
11 +
<
12 +
13 +
vim:tw=78:ts=8:ft=help:norl:
lua/ansi-colorscheme.lua (added) +675 −0
1 +
-- Some useful links for making your own colorscheme:
2 +
--
3 +
-- https://github.com/chriskempson/base16
4 +
-- https://colourco.de/
5 +
-- https://color.adobe.com/create/color-wheel
6 +
-- http://vrl.cs.brown.edu/color
7 +
8 +
local M = {}
9 +
10 +
-- This is a bit of syntactic sugar for creating highlight groups.
11 +
--
12 +
-- local colorscheme = require('colorscheme')
13 +
-- local hi = colorscheme.highlight
14 +
-- hi.Comment = { guifg='#ffffff', guibg='#000000', gui='italic', guisp=nil }
15 +
-- hi.LspDiagnosticsDefaultError = 'DiagnosticError' -- Link to another group
16 +
--
17 +
-- This is equivalent to the following vimscript
18 +
--
19 +
-- hi Comment guifg=#ffffff guibg=#000000 gui=italic
20 +
-- hi! link LspDiagnosticsDefaultError DiagnosticError
21 +
M.highlight = setmetatable({}, {
22 +
    __newindex = function(_, hlgroup, args)
23 +
        if ('string' == type(args)) then
24 +
            vim.api.nvim_set_hl(0, hlgroup, { link = args })
25 +
            return
26 +
        end
27 +
28 +
        local ctermfg, ctermbg, cterm = args.ctermfg or nil, args.ctermbg or nil, args.cterm or nil
29 +
        local val = {}
30 +
        if ctermfg then val.ctermfg = ctermfg end
31 +
        if ctermbg then val.ctermbg = ctermbg end
32 +
        if cterm then
33 +
            for x in string.gmatch(cterm, '([^,]+)') do
34 +
                if x ~= "none" then
35 +
                    val[x] = true
36 +
                end
37 +
            end
38 +
        end
39 +
        vim.api.nvim_set_hl(0, hlgroup, val)
40 +
    end
41 +
})
42 +
43 +
function M.with_config(config)
44 +
    M.config = vim.tbl_extend("force", {
45 +
        telescope = true,
46 +
        telescope_borders = false,
47 +
        indentblankline = true,
48 +
        notify = true,
49 +
        ts_rainbow = true,
50 +
        cmp = true,
51 +
        illuminate = true,
52 +
        lsp_semantic = true,
53 +
        mini_completion = true,
54 +
        dapui = true,
55 +
    }, config or M.config or {})
56 +
end
57 +
58 +
--- Creates a base16 colorscheme using the colors specified.
59 +
--
60 +
-- Builtin colorschemes can be found in the M.colorschemes table.
61 +
--
62 +
-- The default Vim highlight groups (including User[1-9]), highlight groups
63 +
-- pertaining to Neovim's builtin LSP, and highlight groups pertaining to
64 +
-- Treesitter will be defined.
65 +
--
66 +
-- It's worth noting that many colorschemes will specify language specific
67 +
-- highlight groups like rubyConstant or pythonInclude. However, I don't do
68 +
-- that here since these should instead be linked to an existing highlight
69 +
-- group.
70 +
--
71 +
-- @param colors (table) table with keys 'base00', 'base01', 'base02',
72 +
--   'base03', 'base04', 'base05', 'base06', 'base07', 'base08', 'base09',
73 +
--   'base0A', 'base0B', 'base0C', 'base0D', 'base0E', 'base0F'. Each key should
74 +
--   map to a valid 6 digit hex color. If a string is provided, the
75 +
--   corresponding table specifying the colorscheme will be used.
76 +
function M.setup(colors, config)
77 +
    M.with_config(config)
78 +
79 +
    if type(colors) == 'string' then
80 +
        colors = M.colorschemes[colors]
81 +
    end
82 +
83 +
    if vim.fn.exists('syntax_on') then
84 +
        vim.cmd('syntax reset')
85 +
    end
86 +
87 +
    -- BASE16_THEME in a tmux session cannot be trusted because of how envs in tmux panes work.
88 +
    local base16_colorscheme = nil
89 +
    if vim.env.TMUX == nil and vim.env.BASE16_THEME ~= nil then
90 +
        -- Only trust BASE16_THEME if not inside a tmux pane:
91 +
        base16_colorscheme = M.colorschemes[vim.env.BASE16_THEME]
92 +
    end
93 +
    M.colors                              = colors or base16_colorscheme or
94 +
        M.colorschemes['schemer-dark']
95 +
    local hi                              = M.highlight
96 +
97 +
    -- Vim editor colors
98 +
    hi.Normal                             = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
99 +
    hi.Bold                               = { cterm = 'bold' }
100 +
    hi.Debug                              = { ctermfg = M.colors.cterm08 }
101 +
    hi.Directory                          = { ctermfg = M.colors.cterm0D }
102 +
    hi.Error                              = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
103 +
    hi.ErrorMsg                           = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
104 +
    hi.Exception                          = { ctermfg = M.colors.cterm08, ctermbg = nil }
105 +
    hi.FoldColumn                         = { ctermfg = M.colors.cterm0C, ctermbg = M.colors.cterm00 }
106 +
    hi.Folded                             = { ctermfg = M.colors.cterm03, ctermbg = M.colors.cterm01 }
107 +
    hi.IncSearch                          = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm09, cterm = 'none' }
108 +
    hi.Italic                             = { ctermfg = nil, ctermbg = nil, cterm = 'italic' }
109 +
    hi.Macro                              = { ctermfg = M.colors.cterm08, ctermbg = nil }
110 +
    hi.MatchParen                         = { ctermfg = nil, ctermbg = M.colors.cterm03 }
111 +
    hi.ModeMsg                            = { ctermfg = M.colors.cterm0B, ctermbg = nil }
112 +
    hi.MoreMsg                            = { ctermfg = M.colors.cterm0B, ctermbg = nil }
113 +
    hi.Question                           = { ctermfg = M.colors.cterm0D, ctermbg = nil }
114 +
    hi.Search                             = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm0A }
115 +
    hi.Substitute                         = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm0A, cterm = 'none' }
116 +
    hi.SpecialKey                         = { ctermfg = M.colors.cterm03, ctermbg = nil }
117 +
    hi.TooLong                            = { ctermfg = M.colors.cterm08, ctermbg = nil }
118 +
    hi.Underlined                         = { ctermfg = M.colors.cterm08, ctermbg = nil }
119 +
    hi.Visual                             = { ctermfg = nil, ctermbg = M.colors.cterm02 }
120 +
    hi.VisualNOS                          = { ctermfg = M.colors.cterm08, ctermbg = nil }
121 +
    hi.WarningMsg                         = { ctermfg = M.colors.cterm08, ctermbg = nil }
122 +
    hi.WildMenu                           = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm0A }
123 +
    hi.Title                              = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
124 +
    hi.Conceal                            = { ctermfg = M.colors.cterm0D, ctermbg = M.colors.cterm00 }
125 +
    hi.Cursor                             = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm05 }
126 +
    hi.NonText                            = { ctermfg = M.colors.cterm03, ctermbg = nil }
127 +
    hi.LineNr                             = { ctermfg = M.colors.cterm04, ctermbg = M.colors.cterm00 }
128 +
    hi.SignColumn                         = { ctermfg = M.colors.cterm04, ctermbg = M.colors.cterm00 }
129 +
    hi.StatusLine                         = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm02, cterm = 'none' }
130 +
    hi.StatusLineNC                       = { ctermfg = M.colors.cterm04, ctermbg = M.colors.cterm01, cterm = 'none' }
131 +
    hi.WinBar                             = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
132 +
    hi.WinBarNC                           = { ctermfg = M.colors.cterm04, ctermbg = nil, cterm = 'none' }
133 +
    hi.VertSplit                          = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00, cterm = 'none' }
134 +
    hi.ColorColumn                        = { ctermfg = nil, ctermbg = M.colors.cterm01, cterm = 'none' }
135 +
    hi.CursorColumn                       = { ctermfg = nil, ctermbg = M.colors.cterm01, cterm = 'none' }
136 +
    hi.CursorLine                         = { ctermfg = nil, ctermbg = M.colors.cterm01, cterm = 'none' }
137 +
    hi.CursorLineNr                       = { ctermfg = M.colors.cterm04, ctermbg = M.colors.cterm01 }
138 +
    hi.QuickFixLine                       = { ctermfg = nil, ctermbg = M.colors.cterm01, cterm = 'none' }
139 +
    hi.PMenu                              = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm01, cterm = 'none' }
140 +
    hi.PMenuSel                           = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm05 }
141 +
    hi.TabLine                            = { ctermfg = M.colors.cterm03, ctermbg = M.colors.cterm01, cterm = 'none' }
142 +
    hi.TabLineFill                        = { ctermfg = M.colors.cterm03, ctermbg = M.colors.cterm01, cterm = 'none' }
143 +
    hi.TabLineSel                         = { ctermfg = M.colors.cterm0B, ctermbg = M.colors.cterm01, cterm = 'none' }
144 +
145 +
    -- Standard syntax highlighting
146 +
    hi.Boolean                            = { ctermfg = M.colors.cterm09, ctermbg = nil }
147 +
    hi.Character                          = { ctermfg = M.colors.cterm08, ctermbg = nil }
148 +
    hi.Comment                            = { ctermfg = M.colors.cterm03, ctermbg = nil }
149 +
    hi.Conditional                        = { ctermfg = M.colors.cterm0E, ctermbg = nil }
150 +
    hi.Constant                           = { ctermfg = M.colors.cterm09, ctermbg = nil }
151 +
    hi.Define                             = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
152 +
    hi.Delimiter                          = { ctermfg = M.colors.cterm0F, ctermbg = nil }
153 +
    hi.Float                              = { ctermfg = M.colors.cterm09, ctermbg = nil }
154 +
    hi.Function                           = { ctermfg = M.colors.cterm0D, ctermbg = nil }
155 +
    hi.Identifier                         = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
156 +
    hi.Include                            = { ctermfg = M.colors.cterm0D, ctermbg = nil }
157 +
    hi.Keyword                            = { ctermfg = M.colors.cterm0E, ctermbg = nil }
158 +
    hi.Label                              = { ctermfg = M.colors.cterm0A, ctermbg = nil }
159 +
    hi.Number                             = { ctermfg = M.colors.cterm09, ctermbg = nil }
160 +
    hi.Operator                           = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
161 +
    hi.PreProc                            = { ctermfg = M.colors.cterm0A, ctermbg = nil }
162 +
    hi.Repeat                             = { ctermfg = M.colors.cterm0A, ctermbg = nil }
163 +
    hi.Special                            = { ctermfg = M.colors.cterm0C, ctermbg = nil }
164 +
    hi.SpecialChar                        = { ctermfg = M.colors.cterm0F, ctermbg = nil }
165 +
    hi.Statement                          = { ctermfg = M.colors.cterm08, ctermbg = nil }
166 +
    hi.StorageClass                       = { ctermfg = M.colors.cterm0A, ctermbg = nil }
167 +
    hi.String                             = { ctermfg = M.colors.cterm0B, ctermbg = nil }
168 +
    hi.Structure                          = { ctermfg = M.colors.cterm0E, ctermbg = nil }
169 +
    hi.Tag                                = { ctermfg = M.colors.cterm0A, ctermbg = nil }
170 +
    hi.Todo                               = { ctermfg = M.colors.cterm0A, ctermbg = M.colors.cterm01 }
171 +
    hi.Type                               = { ctermfg = M.colors.cterm0A, ctermbg = nil, cterm = 'none' }
172 +
    hi.Typedef                            = { ctermfg = M.colors.cterm0A, ctermbg = nil }
173 +
174 +
    -- Diff highlighting
175 +
    hi.DiffAdd                            = { ctermfg = M.colors.cterm0B, ctermbg = M.colors.cterm00 }
176 +
    hi.DiffChange                         = { ctermfg = M.colors.cterm03, ctermbg = M.colors.cterm00 }
177 +
    hi.DiffDelete                         = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
178 +
    hi.DiffText                           = { ctermfg = M.colors.cterm0D, ctermbg = M.colors.cterm00 }
179 +
    hi.DiffAdded                          = { ctermfg = M.colors.cterm0B, ctermbg = M.colors.cterm00 }
180 +
    hi.DiffFile                           = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
181 +
    hi.DiffNewFile                        = { ctermfg = M.colors.cterm0B, ctermbg = M.colors.cterm00 }
182 +
    hi.DiffLine                           = { ctermfg = M.colors.cterm0D, ctermbg = M.colors.cterm00 }
183 +
    hi.DiffRemoved                        = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
184 +
185 +
    -- Git highlighting
186 +
    hi.gitcommitOverflow                  = { ctermfg = M.colors.cterm08, ctermbg = nil }
187 +
    hi.gitcommitSummary                   = { ctermfg = M.colors.cterm0B, ctermbg = nil }
188 +
    hi.gitcommitComment                   = { ctermfg = M.colors.cterm03, ctermbg = nil }
189 +
    hi.gitcommitUntracked                 = { ctermfg = M.colors.cterm03, ctermbg = nil }
190 +
    hi.gitcommitDiscarded                 = { ctermfg = M.colors.cterm03, ctermbg = nil }
191 +
    hi.gitcommitSelected                  = { ctermfg = M.colors.cterm03, ctermbg = nil }
192 +
    hi.gitcommitHeader                    = { ctermfg = M.colors.cterm0E, ctermbg = nil }
193 +
    hi.gitcommitSelectedType              = { ctermfg = M.colors.cterm0D, ctermbg = nil }
194 +
    hi.gitcommitUnmergedType              = { ctermfg = M.colors.cterm0D, ctermbg = nil }
195 +
    hi.gitcommitDiscardedType             = { ctermfg = M.colors.cterm0D, ctermbg = nil }
196 +
    hi.gitcommitBranch                    = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'bold' }
197 +
    hi.gitcommitUntrackedFile             = { ctermfg = M.colors.cterm0A, ctermbg = nil }
198 +
    hi.gitcommitUnmergedFile              = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'bold' }
199 +
    hi.gitcommitDiscardedFile             = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'bold' }
200 +
    hi.gitcommitSelectedFile              = { ctermfg = M.colors.cterm0B, ctermbg = nil, cterm = 'bold' }
201 +
202 +
    -- GitGutter highlighting
203 +
    hi.GitGutterAdd                       = { ctermfg = M.colors.cterm0B, ctermbg = M.colors.cterm00 }
204 +
    hi.GitGutterChange                    = { ctermfg = M.colors.cterm0D, ctermbg = M.colors.cterm00 }
205 +
    hi.GitGutterDelete                    = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm00 }
206 +
    hi.GitGutterChangeDelete              = { ctermfg = M.colors.cterm0E, ctermbg = M.colors.cterm00 }
207 +
208 +
    -- Spelling highlighting
209 +
    hi.SpellBad                           = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
210 +
    hi.SpellLocal                         = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
211 +
    hi.SpellCap                           = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
212 +
    hi.SpellRare                          = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
213 +
214 +
    hi.DiagnosticError                    = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
215 +
    hi.DiagnosticWarn                     = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
216 +
    hi.DiagnosticInfo                     = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
217 +
    hi.DiagnosticHint                     = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
218 +
    hi.DiagnosticUnderlineError           = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
219 +
    hi.DiagnosticUnderlineWarning         = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
220 +
    hi.DiagnosticUnderlineWarn            = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
221 +
    hi.DiagnosticUnderlineInformation     = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
222 +
    hi.DiagnosticUnderlineHint            = { ctermfg = nil, ctermbg = nil, cterm = 'undercurl' }
223 +
224 +
    hi.LspReferenceText                   = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
225 +
    hi.LspReferenceRead                   = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
226 +
    hi.LspReferenceWrite                  = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
227 +
    hi.LspDiagnosticsDefaultError         = 'DiagnosticError'
228 +
    hi.LspDiagnosticsDefaultWarning       = 'DiagnosticWarn'
229 +
    hi.LspDiagnosticsDefaultInformation   = 'DiagnosticInfo'
230 +
    hi.LspDiagnosticsDefaultHint          = 'DiagnosticHint'
231 +
    hi.LspDiagnosticsUnderlineError       = 'DiagnosticUnderlineError'
232 +
    hi.LspDiagnosticsUnderlineWarning     = 'DiagnosticUnderlineWarning'
233 +
    hi.LspDiagnosticsUnderlineInformation = 'DiagnosticUnderlineInformation'
234 +
    hi.LspDiagnosticsUnderlineHint        = 'DiagnosticUnderlineHint'
235 +
236 +
    hi.TSAnnotation                       = { ctermfg = M.colors.cterm0F, ctermbg = nil, cterm = 'none' }
237 +
    hi.TSAttribute                        = { ctermfg = M.colors.cterm0A, ctermbg = nil, cterm = 'none' }
238 +
    hi.TSBoolean                          = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'none' }
239 +
    hi.TSCharacter                        = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
240 +
    hi.TSComment                          = { ctermfg = M.colors.cterm03, ctermbg = nil, cterm = 'italic' }
241 +
    hi.TSConstructor                      = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
242 +
    hi.TSConditional                      = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
243 +
    hi.TSConstant                         = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'none' }
244 +
    hi.TSConstBuiltin                     = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'italic' }
245 +
    hi.TSConstMacro                       = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
246 +
    hi.TSError                            = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
247 +
    hi.TSException                        = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
248 +
    hi.TSField                            = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
249 +
    hi.TSFloat                            = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'none' }
250 +
    hi.TSFunction                         = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
251 +
    hi.TSFuncBuiltin                      = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'italic' }
252 +
    hi.TSFuncMacro                        = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
253 +
    hi.TSInclude                          = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
254 +
    hi.TSKeyword                          = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
255 +
    hi.TSKeywordFunction                  = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
256 +
    hi.TSKeywordOperator                  = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
257 +
    hi.TSLabel                            = { ctermfg = M.colors.cterm0A, ctermbg = nil, cterm = 'none' }
258 +
    hi.TSMethod                           = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
259 +
    hi.TSNamespace                        = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
260 +
    hi.TSNone                             = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
261 +
    hi.TSNumber                           = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'none' }
262 +
    hi.TSOperator                         = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
263 +
    hi.TSParameter                        = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
264 +
    hi.TSParameterReference               = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
265 +
    hi.TSProperty                         = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
266 +
    hi.TSPunctDelimiter                   = { ctermfg = M.colors.cterm0F, ctermbg = nil, cterm = 'none' }
267 +
    hi.TSPunctBracket                     = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
268 +
    hi.TSPunctSpecial                     = { ctermfg = M.colors.cterm0F, ctermbg = nil, cterm = 'none' }
269 +
    hi.TSRepeat                           = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
270 +
    hi.TSString                           = { ctermfg = M.colors.cterm0B, ctermbg = nil, cterm = 'none' }
271 +
    hi.TSStringRegex                      = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
272 +
    hi.TSStringEscape                     = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
273 +
    hi.TSSymbol                           = { ctermfg = M.colors.cterm0B, ctermbg = nil, cterm = 'none' }
274 +
    hi.TSTag                              = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
275 +
    hi.TSTagDelimiter                     = { ctermfg = M.colors.cterm0F, ctermbg = nil, cterm = 'none' }
276 +
    hi.TSText                             = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
277 +
    hi.TSStrong                           = { ctermfg = nil, ctermbg = nil, cterm = 'bold' }
278 +
    hi.TSEmphasis                         = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'italic' }
279 +
    hi.TSUnderline                        = { ctermfg = M.colors.cterm00, ctermbg = nil, cterm = 'underline' }
280 +
    hi.TSStrike                           = { ctermfg = M.colors.cterm00, ctermbg = nil, cterm = 'strikethrough' }
281 +
    hi.TSTitle                            = { ctermfg = M.colors.cterm0D, ctermbg = nil, cterm = 'none' }
282 +
    hi.TSLiteral                          = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'none' }
283 +
    hi.TSURI                              = { ctermfg = M.colors.cterm09, ctermbg = nil, cterm = 'underline' }
284 +
    hi.TSType                             = { ctermfg = M.colors.cterm0A, ctermbg = nil, cterm = 'none' }
285 +
    hi.TSTypeBuiltin                      = { ctermfg = M.colors.cterm0A, ctermbg = nil, cterm = 'italic' }
286 +
    hi.TSVariable                         = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
287 +
    hi.TSVariableBuiltin                  = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'italic' }
288 +
289 +
    hi.TSDefinition                       = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
290 +
    hi.TSDefinitionUsage                  = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
291 +
    hi.TSCurrentScope                     = { ctermfg = nil, ctermbg = nil, cterm = 'bold' }
292 +
293 +
    hi.LspInlayHint                       = { ctermfg = M.colors.cterm03, ctermbg = nil, cterm = 'italic' }
294 +
295 +
    if vim.fn.has('nvim-0.8.0') then
296 +
        hi['@comment']                  = 'TSComment'
297 +
        hi['@error']                    = 'TSError'
298 +
        hi['@none']                     = 'TSNone'
299 +
        hi['@preproc']                  = 'PreProc'
300 +
        hi['@define']                   = 'Define'
301 +
        hi['@operator']                 = 'TSOperator'
302 +
        hi['@punctuation.delimiter']    = 'TSPunctDelimiter'
303 +
        hi['@punctuation.bracket']      = 'TSPunctBracket'
304 +
        hi['@punctuation.special']      = 'TSPunctSpecial'
305 +
        hi['@string']                   = 'TSString'
306 +
        hi['@string.regex']             = 'TSStringRegex'
307 +
        hi['@string.escape']            = 'TSStringEscape'
308 +
        hi['@string.special']           = 'SpecialChar'
309 +
        hi['@character']                = 'TSCharacter'
310 +
        hi['@character.special']        = 'SpecialChar'
311 +
        hi['@boolean']                  = 'TSBoolean'
312 +
        hi['@number']                   = 'TSNumber'
313 +
        hi['@float']                    = 'TSFloat'
314 +
        hi['@function']                 = 'TSFunction'
315 +
        hi['@function.call']            = 'TSFunction'
316 +
        hi['@function.builtin']         = 'TSFuncBuiltin'
317 +
        hi['@function.macro']           = 'TSFuncMacro'
318 +
        hi['@method']                   = 'TSMethod'
319 +
        hi['@method.call']              = 'TSMethod'
320 +
        hi['@constructor']              = 'TSConstructor'
321 +
        hi['@parameter']                = 'TSParameter'
322 +
        hi['@keyword']                  = 'TSKeyword'
323 +
        hi['@keyword.function']         = 'TSKeywordFunction'
324 +
        hi['@keyword.operator']         = 'TSKeywordOperator'
325 +
        hi['@keyword.return']           = 'TSKeyword'
326 +
        hi['@conditional']              = 'TSConditional'
327 +
        hi['@repeat']                   = 'TSRepeat'
328 +
        hi['@debug']                    = 'Debug'
329 +
        hi['@label']                    = 'TSLabel'
330 +
        hi['@include']                  = 'TSInclude'
331 +
        hi['@exception']                = 'TSException'
332 +
        hi['@type']                     = 'TSType'
333 +
        hi['@type.builtin']             = 'TSTypeBuiltin'
334 +
        hi['@type.qualifier']           = 'TSKeyword'
335 +
        hi['@type.definition']          = 'TSType'
336 +
        hi['@storageclass']             = 'StorageClass'
337 +
        hi['@attribute']                = 'TSAttribute'
338 +
        hi['@field']                    = 'TSField'
339 +
        hi['@property']                 = 'TSProperty'
340 +
        hi['@variable']                 = 'TSVariable'
341 +
        hi['@variable.builtin']         = 'TSVariableBuiltin'
342 +
        hi['@constant']                 = 'TSConstant'
343 +
        hi['@constant.builtin']         = 'TSConstant'
344 +
        hi['@constant.macro']           = 'TSConstant'
345 +
        hi['@namespace']                = 'TSNamespace'
346 +
        hi['@symbol']                   = 'TSSymbol'
347 +
        hi['@text']                     = 'TSText'
348 +
        hi['@text.diff.add']            = 'DiffAdd'
349 +
        hi['@text.diff.delete']         = 'DiffDelete'
350 +
        hi['@text.strong']              = 'TSStrong'
351 +
        hi['@text.emphasis']            = 'TSEmphasis'
352 +
        hi['@text.underline']           = 'TSUnderline'
353 +
        hi['@text.strike']              = 'TSStrike'
354 +
        hi['@text.title']               = 'TSTitle'
355 +
        hi['@text.literal']             = 'TSLiteral'
356 +
        hi['@text.uri']                 = 'TSUri'
357 +
        hi['@text.math']                = 'Number'
358 +
        hi['@text.environment']         = 'Macro'
359 +
        hi['@text.environment.name']    = 'Type'
360 +
        hi['@text.reference']           = 'TSParameterReference'
361 +
        hi['@text.todo']                = 'Todo'
362 +
        hi['@text.note']                = 'Tag'
363 +
        hi['@text.warning']             = 'DiagnosticWarn'
364 +
        hi['@text.danger']              = 'DiagnosticError'
365 +
        hi['@tag']                      = 'TSTag'
366 +
        hi['@tag.attribute']            = 'TSAttribute'
367 +
        hi['@tag.delimiter']            = 'TSTagDelimiter'
368 +
369 +
        hi['@function.method']          = '@method'
370 +
        hi['@function.method.call']     = '@method.call'
371 +
        hi['@comment.error']            = '@text.danger'
372 +
        hi['@comment.warning']          = '@text.warning'
373 +
        hi['@comment.hint']             = 'DiagnosticHint'
374 +
        hi['@comment.info']             = 'DiagnosticInfo'
375 +
        hi['@comment.todo']             = '@text.todo'
376 +
        hi['@diff.plus']                = '@text.diff.add'
377 +
        hi['@diff.minus']               = '@text.diff.delete'
378 +
        hi['@diff.delta']               = 'DiffChange'
379 +
        hi['@string.special.url']       = '@text.uri'
380 +
        hi['@keyword.directive']        = '@preproc'
381 +
        hi['@keyword.directive.define'] = '@define'
382 +
        hi['@keyword.storage']          = '@storageclass'
383 +
        hi['@keyword.conditional']      = '@conditional'
384 +
        hi['@keyword.debug']            = '@debug'
385 +
        hi['@keyword.exception']        = '@exception'
386 +
        hi['@keyword.import']           = '@include'
387 +
        hi['@keyword.repeat']           = '@repeat'
388 +
        hi['@variable.parameter']       = '@parameter'
389 +
        hi['@variable.member']          = '@field'
390 +
        hi['@module']                   = '@namespace'
391 +
        hi['@number.float']             = '@float'
392 +
        hi['@string.special.symbol']    = '@symbol'
393 +
        hi['@string.regexp']            = '@string.regex'
394 +
        hi['@markup.strong']            = '@text.strong'
395 +
        hi['@markup.italic']            = 'Italic'
396 +
        hi['@markup.link']              = '@text.link'
397 +
        hi['@markup.strikethrough']     = '@text.strikethrough'
398 +
        hi['@markup.heading']           = '@text.title'
399 +
        hi['@markup.raw']               = '@text.literal'
400 +
        hi['@markup.link']              = '@text.reference'
401 +
        hi['@markup.link.url']          = '@text.uri'
402 +
        hi['@markup.link.label']        = '@string.special'
403 +
        hi['@markup.list']              = '@punctuation.special'
404 +
    end
405 +
406 +
    if M.config.ts_rainbow then
407 +
        hi.rainbowcol1 = { ctermfg = M.colors.cterm06 }
408 +
        hi.rainbowcol2 = { ctermfg = M.colors.cterm09  }
409 +
        hi.rainbowcol3 = { ctermfg = M.colors.cterm0A }
410 +
        hi.rainbowcol4 = { ctermfg = M.colors.cterm07  }
411 +
        hi.rainbowcol5 = { ctermfg = M.colors.cterm0C  }
412 +
        hi.rainbowcol6 = { ctermfg = M.colors.cterm0D  }
413 +
        hi.rainbowcol7 = { ctermfg = M.colors.cterm0E  }
414 +
    end
415 +
416 +
    hi.NvimInternalError = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm08, cterm = 'none' }
417 +
418 +
    hi.NormalFloat       = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
419 +
    hi.FloatBorder       = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
420 +
    hi.NormalNC          = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
421 +
    hi.TermCursor        = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm05, cterm = 'none' }
422 +
    hi.TermCursorNC      = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm05 }
423 +
424 +
    hi.User1             = { ctermfg = M.colors.cterm08, ctermbg = M.colors.cterm02, cterm = 'none' }
425 +
    hi.User2             = { ctermfg = M.colors.cterm0E, ctermbg = M.colors.cterm02, cterm = 'none' }
426 +
    hi.User3             = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm02, cterm = 'none' }
427 +
    hi.User4             = { ctermfg = M.colors.cterm0C, ctermbg = M.colors.cterm02, cterm = 'none' }
428 +
    hi.User5             = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm02, cterm = 'none' }
429 +
    hi.User6             = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm01, cterm = 'none' }
430 +
    hi.User7             = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm02, cterm = 'none' }
431 +
    hi.User8             = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm02, cterm = 'none' }
432 +
    hi.User9             = { ctermfg = M.colors.cterm00, ctermbg = M.colors.cterm02, cterm = 'none' }
433 +
434 +
    hi.TreesitterContext = { ctermfg = nil, ctermbg = M.colors.cterm01, cterm = 'italic' }
435 +
436 +
    if M.config.telescope then
437 +
        hi.TelescopeBorder       = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
438 +
        hi.TelescopePromptBorder = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
439 +
        hi.TelescopePromptNormal = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
440 +
        hi.TelescopePromptPrefix = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
441 +
        hi.TelescopeNormal       = { ctermbg = M.colors.cterm00 }
442 +
        hi.TelescopePreviewTitle = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm0B }
443 +
        hi.TelescopePromptTitle  = { ctermfg = M.colors.cterm01, ctermbg = M.colors.cterm08 }
444 +
        hi.TelescopeResultsTitle = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
445 +
        hi.TelescopeSelection    = { ctermbg = M.colors.cterm01 }
446 +
        hi.TelescopePreviewLine  = { ctermbg = M.colors.cterm01, cterm = 'none' }
447 +
    end
448 +
449 +
    if M.config.notify then
450 +
        hi.NotifyERRORBorder = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
451 +
        hi.NotifyWARNBorder  = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
452 +
        hi.NotifyINFOBorder  = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
453 +
        hi.NotifyDEBUGBorder = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
454 +
        hi.NotifyTRACEBorder = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
455 +
        hi.NotifyERRORIcon   = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
456 +
        hi.NotifyWARNIcon    = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
457 +
        hi.NotifyINFOIcon    = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
458 +
        hi.NotifyDEBUGIcon   = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
459 +
        hi.NotifyTRACEIcon   = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
460 +
        hi.NotifyERRORTitle  = { ctermfg = M.colors.cterm08, ctermbg = nil, cterm = 'none' }
461 +
        hi.NotifyWARNTitle   = { ctermfg = M.colors.cterm0E, ctermbg = nil, cterm = 'none' }
462 +
        hi.NotifyINFOTitle   = { ctermfg = M.colors.cterm05, ctermbg = nil, cterm = 'none' }
463 +
        hi.NotifyDEBUGTitle  = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
464 +
        hi.NotifyTRACETitle  = { ctermfg = M.colors.cterm0C, ctermbg = nil, cterm = 'none' }
465 +
        hi.NotifyERRORBody   = 'Normal'
466 +
        hi.NotifyWARNBody    = 'Normal'
467 +
        hi.NotifyINFOBody    = 'Normal'
468 +
        hi.NotifyDEBUGBody   = 'Normal'
469 +
        hi.NotifyTRACEBody   = 'Normal'
470 +
    end
471 +
472 +
    if M.config.indentblankline then
473 +
        hi.IndentBlanklineChar        = { ctermfg = M.colors.cterm02, cterm = 'nocombine' }
474 +
        hi.IndentBlanklineContextChar = { ctermfg = M.colors.cterm04, cterm = 'nocombine' }
475 +
        hi.IblIndent                  = { ctermfg = M.colors.cterm02, cterm = 'nocombine' }
476 +
        hi.IblWhitespace              = 'Whitespace'
477 +
        hi.IblScope                   = { ctermfg = M.colors.cterm04, cterm = 'nocombine' }
478 +
    end
479 +
480 +
    if M.config.cmp then
481 +
        hi.CmpDocumentationBorder   = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
482 +
        hi.CmpDocumentation         = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm00 }
483 +
        hi.CmpItemAbbr              = { ctermfg = M.colors.cterm05, ctermbg = M.colors.cterm01 }
484 +
        hi.CmpItemAbbrDeprecated    = { ctermfg = M.colors.cterm03, ctermbg = nil, cterm = 'strikethrough' }
485 +
        hi.CmpItemAbbrMatch         = { ctermfg = M.colors.cterm0D, ctermbg = nil }
486 +
        hi.CmpItemAbbrMatchFuzzy    = { ctermfg = M.colors.cterm0D, ctermbg = nil }
487 +
        hi.CmpItemKindDefault       = { ctermfg = M.colors.cterm05, ctermbg = nil }
488 +
        hi.CmpItemMenu              = { ctermfg = M.colors.cterm04, ctermbg = nil }
489 +
        hi.CmpItemKindKeyword       = { ctermfg = M.colors.cterm0E, ctermbg = nil }
490 +
        hi.CmpItemKindVariable      = { ctermfg = M.colors.cterm08, ctermbg = nil }
491 +
        hi.CmpItemKindConstant      = { ctermfg = M.colors.cterm09, ctermbg = nil }
492 +
        hi.CmpItemKindReference     = { ctermfg = M.colors.cterm08, ctermbg = nil }
493 +
        hi.CmpItemKindValue         = { ctermfg = M.colors.cterm09, ctermbg = nil }
494 +
        hi.CmpItemKindFunction      = { ctermfg = M.colors.cterm0D, ctermbg = nil }
495 +
        hi.CmpItemKindMethod        = { ctermfg = M.colors.cterm0D, ctermbg = nil }
496 +
        hi.CmpItemKindConstructor   = { ctermfg = M.colors.cterm0D, ctermbg = nil }
497 +
        hi.CmpItemKindClass         = { ctermfg = M.colors.cterm0A, ctermbg = nil }
498 +
        hi.CmpItemKindInterface     = { ctermfg = M.colors.cterm0A, ctermbg = nil }
499 +
        hi.CmpItemKindStruct        = { ctermfg = M.colors.cterm0A, ctermbg = nil }
500 +
        hi.CmpItemKindEvent         = { ctermfg = M.colors.cterm0A, ctermbg = nil }
501 +
        hi.CmpItemKindEnum          = { ctermfg = M.colors.cterm0A, ctermbg = nil }
502 +
        hi.CmpItemKindUnit          = { ctermfg = M.colors.cterm0A, ctermbg = nil }
503 +
        hi.CmpItemKindModule        = { ctermfg = M.colors.cterm05, ctermbg = nil }
504 +
        hi.CmpItemKindProperty      = { ctermfg = M.colors.cterm08, ctermbg = nil }
505 +
        hi.CmpItemKindField         = { ctermfg = M.colors.cterm08, ctermbg = nil }
506 +
        hi.CmpItemKindTypeParameter = { ctermfg = M.colors.cterm0A, ctermbg = nil }
507 +
        hi.CmpItemKindEnumMember    = { ctermfg = M.colors.cterm0A, ctermbg = nil }
508 +
        hi.CmpItemKindOperator      = { ctermfg = M.colors.cterm05, ctermbg = nil }
509 +
        hi.CmpItemKindSnippet       = { ctermfg = M.colors.cterm04, ctermbg = nil }
510 +
    end
511 +
512 +
    if M.config.illuminate then
513 +
        hi.IlluminatedWordText  = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
514 +
        hi.IlluminatedWordRead  = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
515 +
        hi.IlluminatedWordWrite = { ctermfg = nil, ctermbg = nil, cterm = 'underline' }
516 +
    end
517 +
518 +
    if M.config.lsp_semantic then
519 +
        hi['@class'] = 'TSType'
520 +
        hi['@struct'] = 'TSType'
521 +
        hi['@enum'] = 'TSType'
522 +
        hi['@enumMember'] = 'Constant'
523 +
        hi['@event'] = 'Identifier'
524 +
        hi['@interface'] = 'Structure'
525 +
        hi['@modifier'] = 'Identifier'
526 +
        hi['@regexp'] = 'TSStringRegex'
527 +
        hi['@typeParameter'] = 'Type'
528 +
        hi['@decorator'] = 'Identifier'
529 +
530 +
        hi['@lsp.type.namespace'] = '@namespace'
531 +
        hi['@lsp.type.type'] = '@type'
532 +
        hi['@lsp.type.class'] = '@type'
533 +
        hi['@lsp.type.enum'] = '@type'
534 +
        hi['@lsp.type.interface'] = '@type'
535 +
        hi['@lsp.type.struct'] = '@type'
536 +
        hi['@lsp.type.parameter'] = '@parameter'
537 +
        hi['@lsp.type.variable'] = '@variable'
538 +
        hi['@lsp.type.property'] = '@property'
539 +
        hi['@lsp.type.enumMember'] = '@constant'
540 +
        hi['@lsp.type.function'] = '@function'
541 +
        hi['@lsp.type.method'] = '@method'
542 +
        hi['@lsp.type.macro'] = '@function.macro'
543 +
        hi['@lsp.type.decorator'] = '@function'
544 +
    end
545 +
546 +
    if M.config.mini_completion then
547 +
        hi.MiniCompletionActiveParameter = 'CursorLine'
548 +
    end
549 +
550 +
    if M.config.dapui then
551 +
        hi.DapUINormal = 'Normal'
552 +
        hi.DapUINormal    = "Normal"
553 +
        hi.DapUIVariable  = "Normal"
554 +
        hi.DapUIScope     = { ctermfg = M.colors.cterm0D }
555 +
        hi.DapUIType      = { ctermfg = M.colors.cterm0E }
556 +
        hi.DapUIValue     = "Normal"
557 +
        hi.DapUIModifiedValue = { ctermfg = M.colors.cterm0D, cterm = "bold" }
558 +
        hi.DapUIDecoration = { ctermfg = M.colors.cterm0D }
559 +
        hi.DapUIThread    = { ctermfg = M.colors.cterm0B }
560 +
        hi.DapUIStoppedThread = { ctermfg = M.colors.cterm0D }
561 +
        hi.DapUIFrameName = "Normal"
562 +
        hi.DapUISource    = { ctermfg = M.colors.cterm0E }
563 +
        hi.DapUILineNumber = { ctermfg = M.colors.cterm0D }
564 +
        hi.DapUIFloatNormal = "NormalFloat"
565 +
        hi.DapUIFloatBorder = { ctermfg = M.colors.cterm0D }
566 +
        hi.DapUIWatchesEmpty = { ctermfg = M.colors.cterm08 }
567 +
        hi.DapUIWatchesValue = { ctermfg = M.colors.cterm0B }
568 +
        hi.DapUIWatchesError = { ctermfg = M.colors.cterm08 }
569 +
        hi.DapUIBreakpointsPath = { ctermfg = M.colors.cterm0D }
570 +
        hi.DapUIBreakpointsInfo = { ctermfg = M.colors.cterm0B }
571 +
        hi.DapUIBreakpointsCurrentLine = { ctermfg = M.colors.cterm0B, cterm = "bold" }
572 +
        hi.DapUIBreakpointsLine = "DapUILineNumber"
573 +
        hi.DapUIBreakpointsDisabledLine = { ctermfg = M.colors.cterm02 }
574 +
        hi.DapUICurrentFrameName = "DapUIBreakpointsCurrentLine"
575 +
        hi.DapUIStepOver  = { ctermfg = M.colors.cterm0D }
576 +
        hi.DapUIStepInto  = { ctermfg = M.colors.cterm0D }
577 +
        hi.DapUIStepBack  = { ctermfg = M.colors.cterm0D }
578 +
        hi.DapUIStepOut   = { ctermfg = M.colors.cterm0D }
579 +
        hi.DapUIStop      = { ctermfg = M.colors.cterm08 }
580 +
        hi.DapUIPlayPause = { ctermfg = M.colors.cterm0B }
581 +
        hi.DapUIRestart   = { ctermfg = M.colors.cterm0B }
582 +
        hi.DapUIUnavailable = { ctermfg = M.colors.cterm02 }
583 +
        hi.DapUIWinSelect = { ctermfg = M.colors.cterm0D, cterm = "bold" }
584 +
        hi.DapUIEndofBuffer = "EndOfBuffer"
585 +
        hi.DapUINormalNC  = "Normal"
586 +
        hi.DapUIPlayPauseNC = { ctermfg = M.colors.cterm0B }
587 +
        hi.DapUIRestartNC = { ctermfg = M.colors.cterm0B }
588 +
        hi.DapUIStopNC    = { ctermfg = M.colors.cterm08 }
589 +
        hi.DapUIUnavailableNC = { ctermfg = M.colors.cterm02 }
590 +
        hi.DapUIStepOverNC = { ctermfg = M.colors.cterm0D }
591 +
        hi.DapUIStepIntoNC = { ctermfg = M.colors.cterm0D }
592 +
        hi.DapUIStepBackNC = { ctermfg = M.colors.cterm0D }
593 +
        hi.DapUIStepOutNC = { ctermfg = M.colors.cterm0D }
594 +
    end
595 +
596 +
597 +
    vim.g.terminal_color_0  = M.colors.cterm00
598 +
    vim.g.terminal_color_1  = M.colors.cterm08
599 +
    vim.g.terminal_color_2  = M.colors.cterm0B
600 +
    vim.g.terminal_color_3  = M.colors.cterm0A
601 +
    vim.g.terminal_color_4  = M.colors.cterm0D
602 +
    vim.g.terminal_color_5  = M.colors.cterm0E
603 +
    vim.g.terminal_color_6  = M.colors.cterm0C
604 +
    vim.g.terminal_color_7  = M.colors.cterm05
605 +
    vim.g.terminal_color_8  = M.colors.cterm03
606 +
    vim.g.terminal_color_9  = M.colors.cterm08
607 +
    vim.g.terminal_color_10 = M.colors.cterm0B
608 +
    vim.g.terminal_color_11 = M.colors.cterm0A
609 +
    vim.g.terminal_color_12 = M.colors.cterm0D
610 +
    vim.g.terminal_color_13 = M.colors.cterm0E
611 +
    vim.g.terminal_color_14 = M.colors.cterm0C
612 +
    vim.g.terminal_color_15 = M.colors.cterm07
613 +
614 +
end
615 +
616 +
function M.available_colorschemes()
617 +
    return vim.tbl_keys(M.colorschemes)
618 +
end
619 +
620 +
M.colorschemes = {}
621 +
setmetatable(M.colorschemes, {
622 +
    __index = function(t, key)
623 +
        t[key] = require(string.format('colors.%s', key))
624 +
        return t[key]
625 +
    end,
626 +
})
627 +
628 +
-- Default ANSI colorscheme mapping
629 +
M.colorschemes['schemer-dark'] = {
630 +
    base00 = 0, base01 = 8, base02 = 8, base03 = 8,
631 +
    base04 = 7, base05 = 15, base06 = 7, base07 = 15,
632 +
    base08 = 1, base09 = 3, base0A = 3, base0B = 2,
633 +
    base0C = 6, base0D = 4, base0E = 5, base0F = 8,
634 +
    cterm00 = 0, cterm01 = 8, cterm02 = 8, cterm03 = 8,
635 +
    cterm04 = 7, cterm05 = 15, cterm06 = 7, cterm07 = 15,
636 +
    cterm08 = 1, cterm09 = 3, cterm0A = 3, cterm0B = 2,
637 +
    cterm0C = 6, cterm0D = 4, cterm0E = 5, cterm0F = 8,
638 +
}
639 +
M.colorschemes['schemer-medium'] = {
640 +
    base00 = 0, base01 = 8, base02 = 8, base03 = 8,
641 +
    base04 = 7, base05 = 15, base06 = 7, base07 = 15,
642 +
    base08 = 1, base09 = 3, base0A = 3, base0B = 2,
643 +
    base0C = 6, base0D = 4, base0E = 5, base0F = 8,
644 +
    cterm00 = 0, cterm01 = 8, cterm02 = 8, cterm03 = 8,
645 +
    cterm04 = 7, cterm05 = 15, cterm06 = 7, cterm07 = 15,
646 +
    cterm08 = 1, cterm09 = 3, cterm0A = 3, cterm0B = 2,
647 +
    cterm0C = 6, cterm0D = 4, cterm0E = 5, cterm0F = 8,
648 +
}
649 +
650 +
M.load_from_shell = function()
651 +
    -- tinted-theming/base16-shell uses XDG_CONFIG_PATH if present.
652 +
    local config_dir = vim.env.XDG_CONFIG_HOME
653 +
    if config_dir == nil or config_dir == '' then
654 +
        config_dir = '~/.config'
655 +
    end
656 +
657 +
    local shell_theme_paths = {
658 +
        -- tinted-theming/base16-shell writes this file
659 +
        config_dir .. "/tinted-theming/set_theme.lua",
660 +
        -- chriskempson/base16-shell writes this file
661 +
        "~/.vimrc_background",
662 +
    }
663 +
664 +
    for _, path in pairs(shell_theme_paths) do
665 +
        local is_readable = vim.fn.filereadable(vim.fn.expand(path)) == 1
666 +
        if is_readable then
667 +
            vim.cmd([[let base16colorspace=256]])
668 +
            vim.cmd("source " .. path)
669 +
            return path
670 +
        end
671 +
    end
672 +
    return false
673 +
end
674 +
675 +
return M
lua/colors/darkmatter.lua (added) +6 −0
1 +
return {
2 +
    base00 = '#121113', base01 = '#121212', base02 = '#222222', base03 = '#333333',
3 +
    base04 = '#999999', base05 = '#c1c1c1', base06 = '#999999', base07 = '#c1c1c1',
4 +
    base08 = '#5f8787', base09 = '#aaaaaa', base0A = '#e78a53', base0B = '#fbcb97',
5 +
    base0C = '#aaaaaa', base0D = '#888888', base0E = '#999999', base0F = '#444444'
6 +
}
lua/colors/init.lua (added) +3 −0
1 +
local M = {}
2 +
M['ansi'] = require('colors.ansi')
3 +
return M
lua/colorscheme.lua (added) +1 −0
1 +
return require('ansi-colorscheme')