-
Notifications
You must be signed in to change notification settings - Fork 0
Integrations
alsi-lawr edited this page Jul 11, 2026
·
4 revisions
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, reload the colorscheme:
require("neotheme").setup({
integrations = {
nvim_tree = true,
},
})
vim.cmd.colorscheme("neotheme")Calling setup alone updates resolved state but does not recreate active highlight groups.
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. - Reload the colorscheme after changing integration options.
See Troubleshooting for more diagnostic steps.