-
Notifications
You must be signed in to change notification settings - Fork 0
Integrations
Neotheme includes opt-in highlight definitions for 15 plugin surfaces. Every integration defaults to false.
require("neotheme").setup({
integrations = {
bufferline = true,
gitsigns = true,
nvim_tree = true,
telescope = true,
which_key = true,
},
})
vim.cmd.colorscheme("neotheme")| Setup key | Plugin surface | Highlight coverage |
|---|---|---|
blink_cmp |
blink.cmp | Menu, documentation, labels, kinds, source, and match text |
bufferline |
bufferline.nvim | Fill, buffers, tabs, diagnostics, close buttons, and separators |
cmp |
nvim-cmp | Menu items, abbreviation matches, kinds, and documentation |
fugitive |
vim-fugitive | Git hashes, headings, staged and unstaged changes, and sections |
fzf_lua |
fzf-lua | Windows, borders, titles, preview, cursor, matches, and scrollbars |
gitsigns |
gitsigns.nvim | Added, changed, deleted, current-line, number, and preview states |
lazy |
lazy.nvim UI | Headers, buttons, properties, progress, reasons, and task output |
lspsaga |
lspsaga.nvim | Windows, borders, code actions, diagnostics, finder, symbols, and rename UI |
noice |
noice.nvim | Popups, borders, command line, completion, format, and virtual text |
nvim_tree |
nvim-tree.lua | Canvas, files, folders, Git, diagnostics, clipboard, hidden, modified, and picker states |
rainbow_delimiters |
rainbow-delimiters.nvim | Rainbow delimiter levels |
snacks |
snacks.nvim | Picker, dashboard, notifier, input, terminal, indent, words, and status states |
telescope |
telescope.nvim | Prompt, results, preview, borders, titles, selection, matches, and paths |
trouble |
trouble.nvim | Windows, counts, source, code, positions, signs, and indentation |
which_key |
which-key.nvim | Window, border, title, keys, groups, descriptions, icons, and separators |
Enabling an integration tells Neotheme to define that plugin's highlight groups when the colorscheme loads. Neotheme does not require or load the plugin module itself.
This means:
- Plugin load order does not need to match integration module load order.
- Enabling an integration for an absent plugin only creates unused highlight groups.
- Disabled integrations do not define their plugin-specific groups.
- Palette customization reaches enabled integrations because their definitions consume the resolved semantic palette.
After changing integration options, replace and apply the configured baseline:
require("neotheme").setup({
integrations = {
nvim_tree = true,
},
})
vim.cmd.colorscheme("neotheme")Calling setup() alone updates configured state but does not recreate active highlight groups.
require("neotheme").reset() can apply the new baseline instead of reloading the colorscheme.
:NeothemeSwitch, require("neotheme").switch(), and Enter or Space confirmation inside
:Neotheme are integration-aware. Each confirmed switch copies the latest setup options,
resolves the selected theme, and reruns the normal highlight pipeline. Enabled integrations
remain enabled and receive colors from the confirmed palette; disabled integrations remain
absent.
Browser row movement deliberately excludes integrations. It updates only the preview window's core, Tree-sitter, LSP, and diagnostic namespace until the user confirms a selection.
Session switching does not edit integration configuration. See Session Theme Controls.
Lualine discovers Neotheme through its theme loader and does not use an integrations.lualine option. Configure it with theme = "neotheme" inside Lualine. See Lualine.
If a plugin still uses its default colors:
- Confirm its exact setup key is
true. - Confirm
vim.cmd.colorscheme("neotheme")runs aftersetup. - Check whether the plugin overrides highlights after the
ColorSchemeevent. - Apply the configured baseline after changing integration options.
See Troubleshooting for more diagnostic steps.
See Development for the steps required to contribute a new integration.