1
0
Fork 0
forked from foxora/nix
flake-foxora/homes/modules/programs/neovim/init.lua

70 lines
2.3 KiB
Lua
Raw Permalink Normal View History

2026-02-12 18:53:24 +00:00
vim.g.mapleader = " "
vim.opt.termguicolors = true -- use terminal colors
vim.opt.relativenumber = true
vim.opt.wrap = false
vim.opt.colorcolumn = "80"
require("plugins")
require("lsp")
local uv = vim.loop
local colorscheme_filepath = "/home/aurora/.cache/nvim/neovim-colors"
local colors = {}
-- function to load colors
local function load_colors()
local new_colors = {}
for line in io.lines(colorscheme_filepath) do
table.insert(new_colors, line)
end
-- ensure the table has enough entries to avoid indexing issues
if #new_colors >= 18 then
colors = new_colors
require('base16-colorscheme').setup({
base00 = colors[17], base01 = colors[1], base02 = colors[3], base03 = colors[3],
base04 = colors[5], base05 = colors[8], base06 = colors[5], base07 = colors[8],
base08 = colors[18], base09 = colors[4], base0A = colors[11], base0B = colors[5],
base0C = colors[6], base0D = colors[7], base0E = colors[6], base0F = colors[16],
})
-- set colors for blink.cmp's completion menu
vim.api.nvim_set_hl(0, 'BlinkCmpMenu', { bg = colors[17] })
vim.api.nvim_set_hl(0, 'BlinkCmpMenuBorder', { bg = colors[17], fg = colors[13] })
vim.api.nvim_set_hl(0, 'BlinkCmpMenuSelection', { bg = colors[15], fg = colors[17] })
vim.api.nvim_set_hl(0, 'BlinkCmpScrollBarThumb', { bg = colors[18] })
vim.api.nvim_set_hl(0, 'BlinkCmpKind', { bg = colors[17], fg = colors[14] })
vim.api.nvim_set_hl(0, 'BlinkCmpLabel', { bg = colors[17], fg = colors[18] })
vim.api.nvim_set_hl(0, 'BlinkCmpLabelMatch', { bg = colors[17], fg = colors[18] })
vim.api.nvim_set_hl(0, 'BlinkCmpLabelDetail', { bg = colors[17], fg = colors[18] })
vim.api.nvim_set_hl(0, 'BlinkCmpLabelDescription', { bg = colors[17], fg = colors[18] })
else
print("Error: Not enough colors in file")
end
end
-- initial load
load_colors()
-- vim.defer_fn(load_colors, 1)
-- set up a file watcher
local function watch_colorscheme()
local handle
handle = uv.new_fs_event()
if handle then
uv.fs_event_start(handle, colorscheme_filepath, {}, function(err, _, _)
if err then
print("Error watching colorscheme file:", err)
return
end
-- debounce by adding a slight delay before reloading
vim.defer_fn(load_colors, 100)
end)
end
end
watch_colorscheme()