├── .github └── workflows │ └── release.yml ├── .releaserc.js ├── CHANGELOG.md ├── README.md ├── colors └── spaceduck.lua └── lua ├── lualine └── themes │ └── spaceduck.lua ├── palette.lua └── spaceduck.lua /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | branches: 5 | - master 6 | 7 | jobs: 8 | release: 9 | name: Release 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v3 14 | with: 15 | # get all commits 16 | fetch-depth: 0 17 | - name: Setup NodeJS 18 | uses: actions/setup-node@v3 19 | with: 20 | node-version: "lts/*" 21 | - name: Install dependencies 22 | # @see: https://github.com/semantic-release/semantic-release/discussions/2500#discussioncomment-3118983 23 | run: npm --location=global i semantic-release{@19,-gitmoji} @semantic-release/{changelog,git} 24 | - name: Release 25 | env: 26 | GITHUB_TOKEN: ${{ github.token }} 27 | run: npx semantic-release@19 28 | -------------------------------------------------------------------------------- /.releaserc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | "semantic-release-gitmoji", 4 | "@semantic-release/changelog", 5 | [ 6 | "@semantic-release/git", 7 | { 8 | message: 9 | ":bookmark: ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", 10 | }, 11 | ], 12 | "@semantic-release/github", 13 | ], 14 | }; 15 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # [v1.1.0](https://github.com/spaceduck-theme/nvim/compare/v1.0.1...v1.1.0) (2023-12-29) 2 | 3 | ## ✨ New Features 4 | - [`a7aa1ea`](https://github.com/spaceduck-theme/nvim/commit/a7aa1ea) Add highlight for float border (Issues: [`#1`](https://github.com/spaceduck-theme/nvim/issues/1)) 5 | 6 | # [v1.0.1](https://github.com/spaceduck-theme/nvim/compare/v1.0.0...v1.0.1) (2023-07-01) 7 | 8 | ## 🐛 Bug Fixes 9 | - [`5e95aa5`](https://github.com/spaceduck-theme/nvim/commit/5e95aa5) Set proper style for window separator 10 | - [`c9307d1`](https://github.com/spaceduck-theme/nvim/commit/c9307d1) Change window separator color from cream to dark_purple (Issues: [`#5`](https://github.com/spaceduck-theme/nvim/issues/5)) 11 | 12 | # v1.0.0 (2022-12-20) 13 | 14 | ## ✨ New Features 15 | - [`62bd408`](https://github.com/spaceduck-theme/nvim/commit/62bd408) port basic spaceduck to lua 16 | - [`00cbec8`](https://github.com/spaceduck-theme/nvim/commit/00cbec8) add lualine support 17 | 18 | ## 🐛 Bug Fixes 19 | - [`b351754`](https://github.com/spaceduck-theme/nvim/commit/b351754) assert syntax_on existence properly and disable broken groups 20 | - [`ab971f0`](https://github.com/spaceduck-theme/nvim/commit/ab971f0) fix errors in lualine support 21 | - [`73c45d1`](https://github.com/spaceduck-theme/nvim/commit/73c45d1) remove unwanted character from StatusLineTermNC 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

Spaceduck theme for Nvim

3 | Spaceduck for neovim. All Lua, all spaceduck, always intergalactic. 4 |
5 | 6 |
7 | 8 |
9 | Spaceduck Logo of duck in an astronaut uniform holding computer: credit to Lexi @kalrita_lw 10 |
11 | 12 |
13 | Screenshot of terminal with vim spaceduck theme installed 14 |
15 | 16 | This is Nvim spaceduck theme port written in Lua. 17 | 18 | # Inspiration 💭 19 | 20 | This theme was inspired from my incessant desire to feel like I'm in space when I stare at a computer. 21 | "Spaceduck" takes its name from my love of [duck dodgers](https://m.media-amazon.com/images/M/MV5BNDY2YjgyZGMtMWY2Zi00ZmQ5LTg0YjgtNjYyMGNkMTMzNWU1XkEyXkFqcGdeQXVyMzM4NjcxOTc@._V1_.jpg) as a kid. 22 | 23 | # Current Language Support 24 | 25 | Basically languages I looked at with my eyes to make sure they didn't look like poop. 26 | 27 | **Languages:** 28 | 29 | _Note: if something looks off please submit an issue with a screenshot_ 30 | 31 | - C, C++, fortran, haskell, html, java, javascript, markdown, php, python, ruby, sql, LaTeX, typescript 32 | 33 | # Installation 34 | 35 | ## [packer.nvim](https://github.com/wbthomason/packer.nvim) 36 | 37 | ```lua 38 | use({ "spaceduck-theme/nvim", as = "spaceduck" }) 39 | ``` 40 | 41 | We use semver on spaceduck so you can refer to a specific tag if you want instead of the `master` branch. 42 | 43 | # Plugins support 44 | 45 | ## [Lualine](https://github.com/hoob3rt/lualine.nvim) 46 | 47 |
48 | lualine normal mode screenshot 49 | lualine insert mode screenshot 50 | lualine visual mode screenshot 51 | lualine replace mode screenshot 52 |
53 | 54 | ```lua 55 | require("lualine").setup({ 56 | options = { 57 | theme = "spaceduck", 58 | }, 59 | }) 60 | ``` 61 | 62 | # Contributing 63 | 64 | We welcome all contributions. Before you contribute you should be aware of some tooling we have in place to help us maintaining this project. 65 | 66 | We use [`gitmoji`](https://gitmoji.dev/) and [`semantic-release`](https://semantic-release.gitbook.io/semantic-release/) to respectively give meaning to our commits and automatically version the project based on these commits. `gitmoji` has a lot of different emojis you can use to give meaning to your commits. We recommend you check the link given to familiarize yourself with it. They provide a [quizz website](https://gitmemoji.lalilo.com/) to learn it. 67 | 68 | To assist you in writing your commits when you develop on this project, we recommend you to use [gitmoji-cli](https://github.com/carloscuesta/gitmoji-cli). 69 | 70 | To inspect the highlight groups used for a specific portion of text, you can use the built-in command `:Inspect` provided by NeoVim. 71 | -------------------------------------------------------------------------------- /colors/spaceduck.lua: -------------------------------------------------------------------------------- 1 | require("spaceduck") 2 | -------------------------------------------------------------------------------- /lua/lualine/themes/spaceduck.lua: -------------------------------------------------------------------------------- 1 | local colors = require("palette") 2 | local spaceduck = {} 3 | 4 | spaceduck.normal = { 5 | -- gui parameter is optional and behaves the same way as in vim's highlight command 6 | a = { bg = colors.grey_purple.hex, fg = colors.blackish.hex, gui = "bold" }, 7 | b = { bg = colors.dark_purple.hex, fg = colors.greyer.hex }, 8 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 9 | } 10 | 11 | spaceduck.insert = { 12 | a = { bg = colors.green.hex, fg = colors.blackish.hex, gui = "bold" }, 13 | b = { bg = colors.dark_purple.hex, fg = colors.greyer.hex }, 14 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 15 | } 16 | 17 | spaceduck.visual = { 18 | a = { bg = colors.yellow.hex, fg = colors.blackish.hex, gui = "bold" }, 19 | b = { bg = colors.dark_purple.hex, fg = colors.greyer.hex }, 20 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 21 | } 22 | 23 | spaceduck.replace = { 24 | a = { bg = colors.purple.hex, fg = colors.blackish.hex, gui = "bold" }, 25 | b = { bg = colors.dark_purple.hex, fg = colors.greyer.hex }, 26 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 27 | } 28 | 29 | spaceduck.command = { 30 | a = { bg = colors.cyan.hex, fg = colors.blackish.hex, gui = "bold" }, 31 | b = { bg = colors.dark_purple.hex, fg = colors.greyer.hex }, 32 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 33 | } 34 | 35 | -- you can assign one colorscheme to another, if a colorscheme is 36 | -- undefined it falls back to normal 37 | spaceduck.terminal = spaceduck.normal 38 | 39 | spaceduck.inactive = { 40 | a = { bg = colors.blackish.hex, fg = colors.greyer.hex, gui = "bold" }, 41 | b = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 42 | c = { bg = colors.blackish.hex, fg = colors.greyer.hex }, 43 | } 44 | 45 | -- lualine.theme = spaceduck 46 | return spaceduck 47 | -------------------------------------------------------------------------------- /lua/palette.lua: -------------------------------------------------------------------------------- 1 | local colors = { 2 | cream = { hex = "#ecf0c1", cterm = 255 }, 3 | white = { hex = "#FFFFFF", cterm = 15 }, 4 | 5 | black = { hex = "#000000", cterm = 0 }, 6 | blackish = { hex = "#0f111b", cterm = 233 }, 7 | 8 | dark_blue = { hex = "#16172d", cterm = 234 }, 9 | 10 | dark_grey = { hex = "#1b1c36", cterm = 234 }, 11 | greyer = { hex = "#c1c3cc", cterm = 251 }, 12 | grey = { hex = "#818596", cterm = 102 }, 13 | 14 | dark_purple = { hex = "#30365F", cterm = 237 }, 15 | grey_purple = { hex = "#686f9a", cterm = 60 }, 16 | purple = { hex = "#7a5ccc", cterm = 98 }, 17 | light_purple = { hex = "#b3a1e6", cterm = 146 }, 18 | 19 | cyan = { hex = "#00a3cc", cterm = 38 }, 20 | green = { hex = "#5ccc96", cterm = 78 }, 21 | orange = { hex = "#e39400", cterm = 172 }, 22 | red = { hex = "#e33400", cterm = 166 }, 23 | yellow = { hex = "#f2ce00", cterm = 220 }, 24 | magenta = { hex = "#ce6f8f", cterm = 168 }, 25 | } 26 | 27 | return colors 28 | -------------------------------------------------------------------------------- /lua/spaceduck.lua: -------------------------------------------------------------------------------- 1 | -- =============================================================== 2 | -- spaceduck 3 | -- 4 | -- URL: https://github.com/pineapplegiant/spaceduck 5 | -- Author: Guillermo Rodriguez 6 | -- License: MIT 7 | -- =============================================================== 8 | local colors = require("palette") 9 | 10 | vim.opt.background = "dark" 11 | vim.api.nvim_command("hi clear") 12 | 13 | if vim.g.syntax_on then 14 | vim.api.nvim_command("syntax reset") 15 | end 16 | 17 | vim.g.colors_name = "spaceduck" 18 | 19 | local Italic = "" 20 | if vim.g.spaceduck_italic then 21 | Italic = "italic" 22 | end 23 | 24 | local Bold = "" 25 | if vim.g.spaceduck_bold then 26 | Bold = "bold" 27 | end 28 | 29 | vim.g.terminal_color_foreground = colors.cream.hex 30 | vim.g.terminal_color_background = colors.blackish.hex 31 | vim.g.terminal_color_0 = colors.black.hex 32 | vim.g.terminal_color_1 = colors.red.hex 33 | vim.g.terminal_color_2 = colors.green.hex 34 | vim.g.terminal_color_3 = colors.light_purple.hex 35 | vim.g.terminal_color_4 = colors.cyan.hex 36 | vim.g.terminal_color_5 = colors.magenta.hex 37 | vim.g.terminal_color_6 = colors.purple.hex 38 | vim.g.terminal_color_7 = colors.grey_purple.hex 39 | vim.g.terminal_color_8 = colors.grey_purple.hex 40 | vim.g.terminal_color_9 = colors.red.hex 41 | vim.g.terminal_color_10 = colors.green.hex 42 | vim.g.terminal_color_11 = colors.light_purple.hex 43 | vim.g.terminal_color_12 = colors.cyan.hex 44 | vim.g.terminal_color_13 = colors.magenta.hex 45 | vim.g.terminal_color_14 = colors.purple.hex 46 | vim.g.terminal_color_15 = colors.cream.hex 47 | 48 | vim.g.terminal_ansi_colors = { 49 | colors.black.hex, 50 | colors.red.hex, 51 | colors.green.hex, 52 | colors.light_purple.hex, 53 | colors.cyan.hex, 54 | colors.magenta.hex, 55 | colors.purple.hex, 56 | colors.grey_purple, 57 | colors.grey_purple, 58 | colors.red.hex, 59 | colors.green.hex, 60 | colors.light_purple.hex, 61 | colors.cyan.hex, 62 | colors.magenta.hex, 63 | colors.purple.hex, 64 | colors.cream.hex, 65 | } 66 | 67 | local scheme = { 68 | ColorColumn = { bg = colors.dark_blue.hex, ctermbg = colors.dark_blue.cterm }, 69 | CursorColumn = { bg = colors.dark_blue.hex, ctermbg = colors.dark_blue.cterm }, 70 | Conceal = { fg = colors.grey_purple.hex, ctermfg = colors.grey_purple.cterm }, 71 | Cursor = { 72 | fg = colors.blackish.hex, 73 | ctermfg = colors.blackish.cterm, 74 | bg = colors.grey.hex, 75 | ctermbg = colors.grey.cterm, 76 | }, 77 | CursorIM = { link = "Cursor" }, 78 | CursorLine = { bg = colors.dark_blue.hex, ctermfg = colors.dark_blue.cterm }, 79 | CursorLineNr = { 80 | fg = colors.greyer.hex, 81 | ctermfg = colors.greyer.cterm, 82 | bg = colors.dark_blue.hex, 83 | ctermbg = colors.dark_blue.cterm, 84 | }, 85 | Directory = { fg = colors.cyan.hex, ctermfg = colors.cyan.cterm }, 86 | DiffAdd = { 87 | fg = colors.green.hex, 88 | ctermfg = colors.green.cterm, 89 | bg = colors.dark_grey.hex, 90 | ctermbg = colors.dark_grey.cterm, 91 | }, 92 | DiffChange = { 93 | fg = colors.orange.hex, 94 | ctermfg = colors.orange.cterm, 95 | bg = colors.dark_grey.hex, 96 | ctermbg = colors.dark_grey.cterm, 97 | }, 98 | DiffDelete = { 99 | fg = colors.red.hex, 100 | ctermfg = colors.red.cterm, 101 | bg = colors.dark_grey.hex, 102 | ctermbg = colors.dark_grey.cterm, 103 | }, 104 | DiffText = { 105 | fg = colors.yellow.hex, 106 | ctermfg = colors.yellow.cterm, 107 | bg = colors.dark_grey.hex, 108 | ctermbg = colors.dark_grey.cterm, 109 | }, 110 | EndOfBuffer = { 111 | fg = colors.dark_purple.hex, 112 | ctermfg = colors.dark_purple.cterm, 113 | bg = colors.blackish.hex, 114 | ctermbg = colors.blackish.cterm, 115 | }, 116 | TermCursor = { link = "Cursor" }, 117 | ErrorMsg = { fg = colors.red.hex, ctermfg = colors.red.cterm }, 118 | VertSplit = { 119 | fg = colors.dark_purple.hex, 120 | ctermfg = colors.dark_purple.cterm, 121 | bg = colors.blackish.hex, 122 | ctermbg = colors.blackish.cterm, 123 | }, 124 | Folded = { 125 | fg = colors.grey_purple.hex, 126 | ctermfg = colors.grey_purple.cterm, 127 | bg = colors.blackish.hex, 128 | ctermbg = colors.blackish.cterm, 129 | }, 130 | FoldColumn = { 131 | fg = colors.dark_purple.hex, 132 | ctermfg = colors.dark_purple.cterm, 133 | bg = colors.blackish.hex, 134 | ctermbg = colors.blackish.cterm, 135 | }, 136 | SignColumn = { 137 | fg = colors.dark_purple.hex, 138 | ctermfg = colors.dark_purple.cterm, 139 | bg = colors.blackish.hex, 140 | ctermbg = colors.blackish.cterm, 141 | }, 142 | IncSearch = { 143 | fg = colors.white.hex, 144 | ctermfg = colors.white.cterm, 145 | bg = colors.dark_purple.hex, 146 | ctermbg = colors.dark_purple.cterm, 147 | }, 148 | LineNr = { 149 | fg = colors.dark_purple.hex, 150 | ctermfg = colors.dark_purple.cterm, 151 | bg = colors.blackish.hex, 152 | ctermbg = colors.blackish.cterm, 153 | }, 154 | MatchParen = { 155 | fg = colors.white.hex, 156 | ctermfg = colors.white.cterm, 157 | bg = colors.dark_purple.hex, 158 | ctermbg = colors.dark_purple.cterm, 159 | }, 160 | ModeMsg = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 161 | MoreMsg = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 162 | NonText = { link = "EndOfBuffer" }, 163 | Pmenu = { 164 | fg = colors.cream.hex, 165 | ctermfg = colors.cream.cterm, 166 | bg = colors.dark_grey.hex, 167 | ctermbg = colors.dark_grey.cterm, 168 | }, 169 | PmenuSel = { 170 | fg = colors.white.hex, 171 | ctermfg = colors.white.cterm, 172 | bg = colors.dark_purple.hex, 173 | ctermbg = colors.dark_purple.cterm, 174 | }, 175 | PmenuSbar = { bg = colors.dark_purple.hex, ctermbg = colors.dark_purple.cterm }, 176 | PmenuThumb = { bg = colors.grey_purple.hex, ctermbg = colors.grey_purple.cterm }, 177 | Question = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 178 | QuickFixLine = { 179 | fg = colors.cream.hex, 180 | ctermfg = colors.cream.cterm, 181 | bg = colors.dark_blue.hex, 182 | ctermbg = colors.dark_blue.cterm, 183 | }, 184 | Search = { 185 | fg = colors.white.hex, 186 | ctermfg = colors.white.cterm, 187 | bg = colors.grey_purple.hex, 188 | ctermbg = colors.grey_purple.cterm, 189 | }, 190 | SpecialKey = { 191 | fg = colors.orange.hex, 192 | ctermfg = colors.orange.cterm, 193 | bg = colors.blackish.hex, 194 | ctermbg = colors.blackish.cterm, 195 | }, 196 | SpellBad = { fg = colors.red.hex, ctermfg = colors.red.cterm, underline = true }, 197 | SpellLocal = { fg = colors.cream.hex, ctermfg = colors.cream.cterm, underline = true }, 198 | SpellCap = { fg = colors.green.hex, ctermfg = colors.green.cterm, underline = true }, 199 | SpellRare = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm, underline = true }, 200 | StatusLine = { 201 | fg = colors.cream.hex, 202 | ctermfg = colors.cream.cterm, 203 | bg = colors.blackish.hex, 204 | ctermbg = colors.blackish.cterm, 205 | reverse = true, 206 | }, 207 | StatusLineTerm = { link = "StatusLine" }, 208 | StatusLineTermNC = { 209 | fg = colors.black.hex, 210 | ctermfg = colors.black.cterm, 211 | bg = colors.dark_purple.hex, 212 | ctermbg = colors.dark_purple.cterm, 213 | reverse = true, 214 | }, 215 | StatusLineNC = { link = "StatusLineTermNC" }, 216 | TabLine = { 217 | fg = colors.black.hex, 218 | ctermfg = colors.black.cterm, 219 | bg = colors.grey.hex, 220 | ctermbg = colors.grey.cterm, 221 | }, 222 | TabLineFill = { 223 | fg = colors.grey.hex, 224 | ctermfg = colors.grey.cterm, 225 | bg = colors.black.hex, 226 | ctermbg = colors.black.cterm, 227 | }, 228 | TabLineSel = { 229 | fg = colors.greyer.hex, 230 | ctermfg = colors.greyer.cterm, 231 | bg = colors.blackish.hex, 232 | ctermbg = colors.blackish.cterm, 233 | }, 234 | Visual = { bg = colors.dark_grey.hex, ctermbg = colors.dark_grey.cterm }, 235 | VisualNOS = { link = "Visual" }, 236 | WarningMsg = { 237 | fg = colors.orange.hex, 238 | ctermfg = colors.orange.cterm, 239 | bg = colors.blackish.hex, 240 | ctermbg = colors.blackish.cterm, 241 | }, 242 | WildMenu = { 243 | fg = colors.black.hex, 244 | ctermfg = colors.black.cterm, 245 | bg = colors.greyer.hex, 246 | ctermbg = colors.greyer.cterm, 247 | }, 248 | Whitespace = { link = "EndOfBuffer" }, 249 | diffAdded = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 250 | diffRemoved = { fg = colors.red.hex, ctermfg = colors.red.cterm }, 251 | Normal = { 252 | fg = colors.cream.hex, 253 | ctermfg = colors.cream.cterm, 254 | bg = colors.blackish.hex, 255 | ctermbg = colors.blackish.cterm, 256 | }, 257 | Comment = { fg = colors.dark_purple.hex, ctermfg = colors.dark_purple.cterm }, 258 | Constant = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm }, 259 | Identifier = { fg = colors.cyan.hex, ctermfg = colors.cyan.cterm }, 260 | Statement = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 261 | PreProc = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 262 | Type = { fg = colors.magenta.hex, ctermfg = colors.magenta.cterm }, 263 | Special = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 264 | Underlined = { fg = colors.green.hex, ctermfg = colors.green.cterm, underline = true }, 265 | Error = { fg = colors.red.hex, ctermfg = colors.red.cterm }, 266 | Ignore = { fg = colors.red.hex, ctermfg = colors.red.cterm }, 267 | Delimiter = { fg = colors.cream.hex, ctermfg = colors.cream.cterm }, 268 | Operator = { fg = colors.magenta.hex, ctermfg = colors.magenta.cterm }, 269 | Tag = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 270 | Debug = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 271 | StorageClass = { fg = colors.light_purple.hex, ctermfg = colors.light_purple.cterm }, 272 | String = { fg = colors.cyan.hex, ctermfg = colors.cyan.cterm }, 273 | Structure = { fg = colors.cyan.hex, ctermfg = colors.cyan.cterm }, 274 | Typedef = { fg = colors.cyan.hex, ctermfg = colors.cyan.cterm }, 275 | Function = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 276 | Include = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 277 | Label = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 278 | Exception = { fg = colors.orange.hex, ctermfg = colors.orange.cterm }, 279 | Keyword = { fg = colors.orange.hex, ctermfg = colors.orange.cterm }, 280 | SpecialChar = { fg = colors.orange.hex, ctermfg = colors.orange.cterm }, 281 | Boolean = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm }, 282 | Character = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm }, 283 | Float = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm }, 284 | FloatBorder = { 285 | fg = colors.cream.hex, 286 | ctermfg = colors.cream.cterm, 287 | bg = colors.dark_grey.hex, 288 | ctermbg = colors.dark_grey.cterm, 289 | }, 290 | Number = { fg = colors.yellow.hex, ctermfg = colors.yellow.cterm }, 291 | Conditional = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 292 | Repeat = { fg = colors.green.hex, ctermfg = colors.green.cterm }, 293 | Title = { fg = colors.purple.hex, ctermfg = colors.purple.cterm }, 294 | Define = { fg = colors.purple.hex, ctermfg = colors.purple.cterm }, 295 | Macro = { fg = colors.purple.hex, ctermfg = colors.purple.cterm }, 296 | PreCondit = { fg = colors.purple.hex, ctermfg = colors.purple.cterm }, 297 | SpecialComment = { link = "Comment" }, 298 | Todo = { 299 | fg = colors.white.hex, 300 | ctermfg = colors.white.cterm, 301 | bg = colors.grey_purple.hex, 302 | ctermbg = colors.grey_purple.cterm, 303 | underline = true, 304 | }, 305 | 306 | cFormat = { link = "Title" }, 307 | cCppOutIf1 = { link = "Normal" }, 308 | cCppOutIf2 = { link = "Normal" }, 309 | cBracket = { link = "Title" }, 310 | 311 | cssBraces = { link = "Normal" }, 312 | cssSelectorOp = { fg = colors.magenta.hex, ctermfg = colors.magenta.cterm }, 313 | 314 | fortranType = { link = "Tag" }, 315 | fortranStructure = { link = "Structure" }, 316 | fortranStorageClass = { link = "StorageClass" }, 317 | fortranUnitHeader = { link = "Title" }, 318 | 319 | haskellType = { link = "Tag" }, 320 | haskellIdentifier = { link = "Label" }, 321 | haskellKeyword = { link = "Boolean" }, 322 | haskellDecl = { link = "Boolean" }, 323 | 324 | htmlTagName = { link = "Function" }, 325 | htmlEndTag = { link = "Conditional" }, 326 | htmlArg = { link = "Tag" }, 327 | htmlSpecialTagName = { link = "Type" }, 328 | 329 | javaClassDecl = { link = "Structure" }, 330 | javaTypeDef = { link = "Keyword" }, 331 | 332 | jsStorageClass = { link = "Title" }, 333 | jsFunction = { link = "Function" }, 334 | jsFuncName = { link = "Special" }, 335 | jsOperator = { link = "Operator" }, 336 | jsNull = { link = "Constant" }, 337 | jsGlobalObjects = { link = "Constant" }, 338 | jsFuncCall = { link = "Function" }, 339 | jsOperatorKeyword = { link = "Operator" }, 340 | jsExceptions = { link = "Error" }, 341 | jsTernaryIfOperator = { link = "Title" }, 342 | jsTemplateBraces = { link = "Title" }, 343 | jsTemplateExpression = { link = "String" }, 344 | 345 | texTypeStyle = { link = "Special" }, 346 | 347 | mkdDelimiter = { link = "Normal" }, 348 | 349 | phpFunction = { link = "Function" }, 350 | phpMethod = { link = "Function" }, 351 | phpType = { link = "Constant" }, 352 | phpIdentifier = { link = "Type" }, 353 | phpStringSingle = { link = "String" }, 354 | phpStringDouble = { link = "String" }, 355 | 356 | pythonOperator = { fg = colors.magenta.hex, ctermfg = colors.magenta.cterm }, 357 | 358 | rubyConstant = { link = "Constant" }, 359 | rubyDefine = { link = "Define" }, 360 | rubyMethodName = { link = "Function" }, 361 | rubyInstanceVariable = { link = "Tag" }, 362 | rubyKeywordAsMethod = { link = "Tag" }, 363 | 364 | jsxTagName = { link = "HTMLTagName" }, 365 | jsxComponentName = { link = "Tag" }, 366 | jsxOpenPunct = { link = "jsxTagName" }, 367 | jsxClosePunct = { link = "jsxOpenPunct" }, 368 | jsxCloseString = { link = "jsxClosePunct" }, 369 | 370 | typescriptProp = { link = "Tag" }, 371 | typescriptVariable = { link = "Title" }, 372 | typescriptArrowFunc = { fg = colors.magenta.hex, ctermfg = colors.magenta.cterm }, 373 | typescriptBraces = { link = "Normal" }, 374 | typescriptNumberStaticMethod = { link = "Function" }, 375 | typescriptNumberMethod = { link = "Function" }, 376 | typescriptStringStaticMethod = { link = "Function" }, 377 | typescriptStringMethod = { link = "Function" }, 378 | typescriptArrayStaticMethod = { link = "Function" }, 379 | typescriptArrayMethod = { link = "Function" }, 380 | typescriptObjectStaticMethod = { link = "Function" }, 381 | typescriptObjectMethod = { link = "Function" }, 382 | typescriptSymbolStaticMethod = { link = "Function" }, 383 | typescriptFunctionMethod = { link = "Function" }, 384 | typescriptMathStaticMethod = { link = "Function" }, 385 | typescriptDateStaticMethod = { link = "Function" }, 386 | typescriptDateMethod = { link = "Function" }, 387 | typescriptJSONStaticMethod = { link = "Function" }, 388 | typescriptRegExpMethod = { link = "Function" }, 389 | typescriptES6MapMethod = { link = "Function" }, 390 | typescriptES6SetMethod = { link = "Function" }, 391 | typescriptPromiseStaticMethod = { link = "Function" }, 392 | typescriptPromiseMethod = { link = "Function" }, 393 | typescriptReflectMethod = { link = "Function" }, 394 | typescriptIntlMethod = { link = "Function" }, 395 | typescriptBOMNavigatorMethod = { link = "Function" }, 396 | typescriptServiceWorkerMethod = { link = "Function" }, 397 | typescriptBOMLocationMethod = { link = "Function" }, 398 | typescriptBOMHistoryMethod = { link = "Function" }, 399 | typescriptConsoleMethod = { link = "Function" }, 400 | typescriptXHRMethod = { link = "Function" }, 401 | typescriptFileMethod = { link = "Function" }, 402 | typescriptFileReaderMethod = { link = "Function" }, 403 | typescriptFileListMethod = { link = "Function" }, 404 | typescriptBlobMethod = { link = "Function" }, 405 | typescriptURLStaticMethod = { link = "Function" }, 406 | typescriptSubtleCryptoMethod = { link = "Function" }, 407 | typescriptCryptoMethod = { link = "Function" }, 408 | typescriptHeadersMethod = { link = "Function" }, 409 | typescriptRequestMethod = { link = "Function" }, 410 | typescriptResponseMethod = { link = "Function" }, 411 | typescriptCacheMethod = { link = "Function" }, 412 | typescriptEncodingMethod = { link = "Function" }, 413 | typescriptGeolocationMethod = { link = "Function" }, 414 | typescriptPaymentMethod = { link = "Function" }, 415 | typescriptPaymentResponseMethod = { link = "Function" }, 416 | typescriptDOMNodeMethod = { link = "Function" }, 417 | typescriptDOMDocMethod = { link = "Function" }, 418 | typescriptDOMEventTargetMethod = { link = "Function" }, 419 | typescriptDOMEventMethod = { link = "Function" }, 420 | typescriptDOMStorageMethod = { link = "Function" }, 421 | typescriptDOMFormMethod = { link = "Function" }, 422 | 423 | vimGroupName = { link = "Normal" }, 424 | 425 | yamlKeyValueDelimiter = { link = "Normal" }, 426 | yamlBlockMappingKey = { link = "Function" }, 427 | 428 | vistaTag = { link = "Conditional" }, 429 | vistaIcon = { link = "Identifier" }, 430 | vistaColon = { link = "Normal" }, 431 | vistaScope = { link = "Constant" }, 432 | vistaKind = { link = "Conditional" }, 433 | 434 | Sneak = { 435 | fg = colors.black.hex, 436 | ctermfg = colors.black.cterm, 437 | bg = colors.yellow.hex, 438 | ctermbg = colors.yellow.cterm, 439 | }, 440 | BufferCurrent = { 441 | fg = colors.greyer.hex, 442 | ctermfg = colors.greyer.cterm, 443 | bg = colors.blackish.hex, 444 | ctermbg = colors.blackish.cterm, 445 | }, 446 | BufferVisible = { 447 | fg = colors.dark_purple.hex, 448 | ctermfg = colors.dark_purple.cterm, 449 | bg = colors.blackish.hex, 450 | ctermbg = colors.blackish.cterm, 451 | }, 452 | BufferInactive = { 453 | fg = colors.dark_purple.hex, 454 | ctermfg = colors.dark_purple.cterm, 455 | bg = colors.blackish.hex, 456 | ctermbg = colors.blackish.cterm, 457 | }, 458 | BufferTabpageFill = { 459 | fg = colors.blackish.hex, 460 | ctermfg = colors.blackish.cterm, 461 | bg = colors.blackish.hex, 462 | ctermbg = colors.blackish.cterm, 463 | }, 464 | BufferCurrentIndex = { 465 | fg = colors.green.hex, 466 | ctermfg = colors.green.cterm, 467 | bg = colors.blackish.hex, 468 | ctermbg = colors.blackish.cterm, 469 | }, 470 | BufferVisibleIndex = { 471 | fg = colors.dark_purple.hex, 472 | ctermfg = colors.dark_purple.cterm, 473 | bg = colors.blackish.hex, 474 | ctermbg = colors.blackish.cterm, 475 | }, 476 | BufferInactiveIndex = { 477 | fg = colors.dark_purple.hex, 478 | ctermfg = colors.dark_purple.cterm, 479 | bg = colors.blackish.hex, 480 | ctermbg = colors.blackish.cterm, 481 | }, 482 | BufferCurrentMod = { 483 | fg = colors.orange.hex, 484 | ctermfg = colors.orange.cterm, 485 | bg = colors.blackish.hex, 486 | ctermbg = colors.blackish.cterm, 487 | }, 488 | BufferVisibleMod = { 489 | fg = colors.orange.hex, 490 | ctermfg = colors.orange.cterm, 491 | bg = colors.blackish.hex, 492 | ctermbg = colors.blackish.cterm, 493 | }, 494 | BufferInactiveMod = { 495 | fg = colors.orange.hex, 496 | ctermfg = colors.orange.cterm, 497 | bg = colors.blackish.hex, 498 | ctermbg = colors.blackish.cterm, 499 | }, 500 | BufferCurrentSign = { 501 | fg = colors.green.hex, 502 | ctermfg = colors.green.cterm, 503 | bg = colors.blackish.hex, 504 | ctermbg = colors.blackish.cterm, 505 | }, 506 | BufferVisibleSign = { 507 | fg = colors.dark_purple.hex, 508 | ctermfg = colors.dark_purple.cterm, 509 | bg = colors.blackish.hex, 510 | ctermbg = colors.blackish.cterm, 511 | }, 512 | BufferInactiveSign = { 513 | fg = colors.dark_purple.hex, 514 | ctermfg = colors.dark_purple.cterm, 515 | bg = colors.blackish.hex, 516 | ctermbg = colors.blackish.cterm, 517 | }, 518 | BufferCurrentTarget = { 519 | fg = colors.magenta.hex, 520 | ctermfg = colors.magenta.cterm, 521 | bg = colors.blackish.hex, 522 | ctermbg = colors.blackish.cterm, 523 | }, 524 | BufferVisibleTarget = { 525 | fg = colors.magenta.hex, 526 | ctermfg = colors.magenta.cterm, 527 | bg = colors.blackish.hex, 528 | ctermbg = colors.blackish.cterm, 529 | }, 530 | BufferInactiveTarget = { 531 | fg = colors.magenta.hex, 532 | ctermfg = colors.magenta.cterm, 533 | bg = colors.blackish.hex, 534 | ctermbg = colors.blackish.cterm, 535 | }, 536 | } 537 | 538 | for group, config in pairs(scheme) do 539 | vim.api.nvim_set_hl(0, group, config) 540 | end 541 | --------------------------------------------------------------------------------