editor

Slatewave for Neovim

A Lua colorscheme covering TreeSitter, LSP semantic tokens, and a lualine theme.

Stars
★ 1
Latest release
0.0.2 · 2 months ago
Last commit
3 weeks ago
-- lua/slatewave/init.lua
local M = {}

M.opts = {
  transparent      = false,
  italic_comments  = true,
  italic_keywords  = true,
  dim_inactive     = false,
  terminal_colors  = true,
}

function M.setup(user_opts)
  M.opts = vim.tbl_deep_extend('force', M.opts, user_opts or {})
  require('slatewave.theme').load(M.opts)
end

return M

About this theme

A Neovim colorscheme built as a Lua plugin — TreeSitter @* groups, LSP @lsp.* semantic tokens, and a matching lualine theme. Syntax mapping mirrors the VSCode port so the same code reads the same way in both editors.

Slatewave for Neovim is a proper Lua plugin, not a dropped-in colors file — palette, editor groups, syntax groups, TreeSitter captures, and LSP semantic tokens each live in their own module under lua/slatewave/, with a single setup() entry point for overrides.

Covers core UI (Normal, Pmenu, StatusLine, Visual, Diff, Diagnostics, LSP references, spell), the full :syntax group set, TreeSitter @* captures, LSP @lsp.* semantic tokens, and a matching lualine theme. Terminal ANSI palette mirrors the VSCode theme’s block so embedded terminals stay on palette.

Verify

After install, switch the theme at runtime — strings should be teal, keywords sky, constants rose:

:colorscheme slatewave

Configure

require("slatewave").setup({...}) accepts these options (defaults shown). Pass any of them in before the :colorscheme call:

require("slatewave").setup({
  transparent     = false,  -- set Normal bg to NONE so the terminal shows through
  italic_comments = true,
  italic_keywords = true,   -- applies to storage keywords and self / this / super
  dim_inactive    = false,
  terminal_colors = true,   -- sets g:terminal_color_0..15 to the Slatewave ANSI palette
})

Install

Don't have the CLI yet? Install the Slatewave CLI →

  • Slatewave CLI

    Install with the Slatewave family CLI — one command, every theme.

    slatewave install neovim
  • lazy.nvim

    Drop the plugin spec into your lazy.nvim config. Requires Neovim 0.9+ with termguicolors enabled.

    return {
      "kevinlangleyjr/neovim-slatewave",
      name = "slatewave",
      priority = 1000,
      lazy = false,
      opts = {},
      config = function(_, opts)
        require("slatewave").setup(opts)
        vim.cmd.colorscheme("slatewave")
      end,
    }
    1. Drop the file under `~/.config/nvim/lua/plugins/` — lazy.nvim auto-imports it
    2. Run `:Lazy sync` and restart Neovim
  • packer.nvim

    Add the use() call to your packer plugin list.

    use({
      "kevinlangleyjr/neovim-slatewave",
      as = "slatewave",
      config = function()
        require("slatewave").setup({})
        vim.cmd.colorscheme("slatewave")
      end,
    })
    1. Run `:PackerSync` to install
  • vim-plug

    vim-plug has no config callback — call setup() yourself after :PlugInstall.

    Plug 'kevinlangleyjr/neovim-slatewave', { 'as': 'slatewave' }
    1. Add the Plug line to your init.vim / .vimrc
    2. Run `:PlugInstall`
    3. In init.lua, after the plug list — `require("slatewave").setup({}); vim.cmd.colorscheme("slatewave")`