Colourful and legible themes for Neovim, Ported from Ef (ฮตแฝ) themes for GNU Emacs By protesilaos
Dark Themes
Light Themes
-
Fast loading with compiling on a per-need basis
-
34 Unique themes, ported from
Emacs
-
8 Extras Available for each theme, for a total of 272 extras
-
Close to source. By using a script (see (
./lua/ef-themes/lib/parse.lua
)) to extract the colors and themes from the originalEmacs
theme, this port can easily stay up to date with any new themes or modifications. -
Supports popular plugins. By using the original
Emacs
themes as source, this theme uses the highlights similar to how they are used inEmacs
๐ฆ Modules
Plugin | Source |
---|---|
blink.cmp | blink |
nvim-cmp | cmp |
fzf-lua | fzf |
gitsigns.nvim | gitsigns |
mini.nvim | mini |
Neogit | neogit |
nvim-orgmode | orgmode |
render-markdown | render_markdown |
semantic-tokens (native lsp) | semantic_tokens |
snacks | snacks |
telescope | telescope |
treesitter (native) | treesitter |
which-key.nvim | which_key |
๐ Extras
Tool | Extra |
---|---|
Fzf | extras/fzf |
Ghostty | extras/ghostty |
Kitty | extras/kitty |
Lazygit | extras/lazygit |
Vimium | extras/vimium |
WezTerm | extras/wezterm |
Windows Terminal | extras/windows_terminal |
Yazi | extras/yazi |
- Neovim >= 0.8
- True color support
Note
The default MacOS terminal does not support truecolor
{ "oonamo/ef-themes.nvim" }
add("oonamo/ef-themes.nvim")
use { "oonamo/ef-themes.nvim" }
Plug 'oonamo/ef-themes.nvim'
colorscheme ef-theme " or specify a theme like ef-reverie, ef-owl etc..
vim.cmd.colorscheme("ef-theme") -- or specify a theme like ef-elea-dark
require("ef-themes").setup({
light = "ef-spring", -- Ef-theme to select for light backgrounds
dark = "ef-winter", -- Ef-theme to select for dark backgrounds
transparent = false,
styles = {
-- Set specific styles for specific highlight groups
-- Can be any valid attr-list value. See `:h nvim_set_hl`
comments = { italic = true },
keywords = { bold = true },
functions = {},
variables = {},
classes = { bold = true },
types = { bold = true },
diagnostic = "default", -- Can be "full"
pickers = "default", -- Can be "borderless"
},
modules = {
-- Enable/Disable highlights for a module
-- See `h: ef-themes-modules` for the list of available modules
blink = true,
fzf = false,
mini = true,
semantic_tokens = false,
snacks = false,
treesitter = true,
},
--- Override any color from the ef-theme
---@param colors Ef-Theme
---@param name string
on_colors = function(colors, name) end,
--- Override specific highlights
---@param highlights table
---@param colors Ef-Theme
---@param name string
---@return table
on_highlights = function(highlights, colors, name)
-- Returns a table of highlights
-- return {
-- Normal = { fg = colors.fg_alt, bg = colors.bg_inactive }
-- ObscurePlugin = { fg = colors.yellow_faint }
-- }
end,
options = {
compile = true, -- Whether to compile a theme
compile_path = vim.fn.stdpath("cache") .. "/ef-themes", -- Directory in which to place compiled themes
},
})
vim.cmd.colorscheme("ef-theme") -- To use the default colorscheme defined above
-- Or choose a specific theme
-- vim.cmd.colorscheme("ef-dream")
local ef_dream = require("ef-themes").get_palette("ef-dream")
local ef_rosa = require("ef-themes").get_palette("ef-rosa")
-- or after require("ef-themes").setup()
local ef_dream = EfThemes.get_palette("ef-dream")
local ef_rosa = EfThemes.get_palette("ef-rosa")
require("ef-themes").setup({
on_colors = function(colors, name)
colors.yellow = colors.yellow_faint
colors.bg_main = "#000000"
end,
})
require("ef-themes").setup({
on_highlights = function(hls, palette, name)
local is_dark = require("ef-themes").is_dark(name)
if is_dark then
hls.FloatBorder = { fg = palette.fg_main, bg = palette.bg_inactive }
else
hls.FloatBorder = { fg = palette.fg_main, bg = palette.bg_dim }
end
end,
})
- protesilaos (Original Creator)
- tokyonight (groups/config/structure/utils)
- nightfox (compiling)