updated compat

This commit is contained in:
Bryan Ramos 2026-04-08 15:50:18 -04:00
parent 62d06a8bdc
commit 23fb66df0b
7 changed files with 159 additions and 87 deletions

View file

@ -1,9 +1,11 @@
local function load_config_directory(directory) local function load_config_directory(directory)
local config_path = vim.fn.stdpath("config") .. "/lua/" .. directory local config_path = vim.fn.stdpath("config") .. "/lua/" .. directory
local files = vim.fn.glob(config_path .. "/*.lua", false, true) local files = vim.fn.readdir(config_path, function(name)
return name:sub(-4) == ".lua"
end)
for _, file in ipairs(files) do for _, file in ipairs(files) do
local file_name = vim.fn.fnamemodify(file, ":t:r") -- Extract filename without extension local file_name = file:sub(1, -5)
require(directory .. "." .. file_name) require(directory .. "." .. file_name)
end end
end end

View file

@ -26,10 +26,23 @@ vim.opt.guicursor = "n-v-c:block,i:block,r:block"
vim.opt.fillchars = { eob = " " } vim.opt.fillchars = { eob = " " }
vim.cmd([[ local options_group = vim.api.nvim_create_augroup("config_options", { clear = true })
autocmd FileType python,haskell,c,cpp setlocal tabstop=4 shiftwidth=4 softtabstop=4
]])
vim.cmd([[ vim.api.nvim_create_autocmd("FileType", {
au BufRead,BufNewFile *.purs set filetype=purescript group = options_group,
]]) pattern = { "python", "haskell", "c", "cpp" },
callback = function()
local opt = vim.opt_local
opt.tabstop = 4
opt.shiftwidth = 4
opt.softtabstop = 4
end,
})
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
group = options_group,
pattern = "*.purs",
callback = function(event)
vim.bo[event.buf].filetype = "purescript"
end,
})

View file

@ -2,63 +2,87 @@ return {
{ {
"chriskempson/base16-vim", "chriskempson/base16-vim",
config = function() config = function()
vim.cmd("colorscheme base16-onedark") local color_group = vim.api.nvim_create_augroup("config_colorscheme", { clear = true })
vim.cmd([[
hi Normal guibg=NONE ctermbg=NONE guifg=#FFFFFF
hi Visual ctermbg=Gray ctermfg=Black guibg=Gray guifg=Black
hi NonText guibg=NONE ctermbg=NONE
hi LineNr guibg=NONE ctermbg=NONE
hi CursorLine guibg=NONE ctermbg=NONE
hi CursorLineNr guibg=NONE ctermbg=NONE guifg=#E5C07B ctermfg=Yellow cterm=bold
hi Search ctermfg=Black guifg=#000000 ctermbg=Gray guibg=#FFCC66
hi Pmenu ctermbg=Black ctermfg=White cterm=NONE guibg=Black guifg=White gui=NONE
hi PmenuSel ctermbg=Green ctermfg=Black cterm=NONE guibg=Green guifg=Black gui=NONE
hi PmenuThumb ctermbg=Green guibg=Green
hi PmenuSbar ctermbg=Black guibg=Black
hi WinSeparator guibg=NONE ctermbg=NONE
hi GitGutterChange guibg=NONE ctermbg=NONE local highlights = {
hi GitGutterAdd guibg=NONE ctermbg=NONE Normal = { bg = "NONE", fg = "#FFFFFF" },
hi GitGutterDelete guibg=NONE ctermbg=NONE Visual = { bg = "Gray", fg = "Black" },
hi SignColumn ctermbg=NONE guibg=NONE NonText = { bg = "NONE" },
LineNr = { bg = "NONE" },
CursorLine = { bg = "NONE" },
CursorLineNr = { bg = "NONE", fg = "#E5C07B", bold = true },
Search = { bg = "#FFCC66", fg = "#000000" },
Pmenu = { bg = "Black", fg = "White" },
PmenuSel = { bg = "Green", fg = "Black" },
PmenuThumb = { bg = "Green" },
PmenuSbar = { bg = "Black" },
WinSeparator = { bg = "NONE" },
GitGutterChange = { bg = "NONE" },
GitGutterAdd = { bg = "NONE" },
GitGutterDelete = { bg = "NONE" },
SignColumn = { bg = "NONE" },
TelescopeSelection = { bg = "Gray", fg = "Green", bold = true },
TelescopePreviewMatch = { bg = "Yellow", fg = "Black" },
TreesitterContext = { bg = "NONE" },
LazyH1 = { bg = "Black", fg = "Green" },
IblScope = { bg = "NONE", fg = "Yellow" },
ConflictMarker = { fg = "red" },
DiffAdd = { bg = "NONE" },
DiffChange = { bg = "NONE" },
DiffDelete = { bg = "NONE" },
DiffText = { bg = "NONE" },
BufferLineFill = { bg = "NONE" },
BufferLineBackground = { bg = "NONE", fg = "#5c6370" },
BufferLineBuffer = { bg = "NONE", fg = "#5c6370" },
BufferLineBufferSelected = { bg = "NONE", fg = "#FFFFFF", bold = true },
BufferLineBufferVisible = { bg = "NONE", fg = "#abb2bf" },
BufferLineCloseButton = { bg = "NONE", fg = "#5c6370" },
BufferLineCloseButtonSelected = { bg = "NONE", fg = "#e06c75" },
BufferLineCloseButtonVisible = { bg = "NONE", fg = "#5c6370" },
BufferLineModified = { bg = "NONE", fg = "#e5c07b" },
BufferLineModifiedSelected = { bg = "NONE", fg = "#e5c07b" },
BufferLineModifiedVisible = { bg = "NONE", fg = "#e5c07b" },
BufferLineSeparator = { bg = "NONE", fg = "#3e4452" },
BufferLineSeparatorSelected = { bg = "NONE", fg = "#3e4452" },
BufferLineSeparatorVisible = { bg = "NONE", fg = "#3e4452" },
BufferLineIndicatorSelected = { bg = "NONE", fg = "#61afef" },
YankHighlight = { bg = "yellow", fg = "black" },
}
hi TelescopeSelection guibg=Gray guifg=Green gui=bold ctermbg=Black ctermfg=Green cterm=bold local function apply_highlights()
hi TelescopePreviewMatch ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black for group, spec in pairs(highlights) do
vim.api.nvim_set_hl(0, group, spec)
end
end
hi TreesitterContext guibg=NONE ctermbg=NONE local conflict_pattern = [[<<<<<<< HEAD\|=======\|>>>>>>> .\+]]
local function apply_conflict_match(win)
if vim.w[win].conflict_marker_match_id then
pcall(vim.fn.matchdelete, vim.w[win].conflict_marker_match_id, win)
end
vim.w[win].conflict_marker_match_id = vim.fn.matchadd("ConflictMarker", conflict_pattern, 10, -1, {
window = win,
})
end
hi LazyH1 ctermbg=Green ctermfg=Black guibg=Black guifg=Green vim.cmd.colorscheme("base16-onedark")
hi IblScope guibg=NONE guifg=Yellow ctermbg=NONE ctermfg=Yellow apply_highlights()
hi ConflictMarker ctermfg=red guifg=red vim.api.nvim_create_autocmd("ColorScheme", {
match ConflictMarker /<<<<<<< HEAD\|=======\|>>>>>>> .\+/ group = color_group,
callback = apply_highlights,
})
hi DiffAdd ctermbg=none guibg=none vim.api.nvim_create_autocmd({ "BufWinEnter", "WinEnter" }, {
hi DiffChange ctermbg=none guibg=none group = color_group,
hi DiffDelete ctermbg=none guibg=none callback = function(event)
hi DiffText ctermbg=none guibg=none apply_conflict_match(vim.api.nvim_get_current_win())
end,
" Bufferline - dark background, readable text })
hi BufferLineFill guibg=NONE ctermbg=NONE
hi BufferLineBackground guibg=NONE ctermbg=NONE guifg=#5c6370 ctermfg=Gray
hi BufferLineBuffer guibg=NONE ctermbg=NONE guifg=#5c6370 ctermfg=Gray
hi BufferLineBufferSelected guibg=NONE ctermbg=NONE guifg=#FFFFFF ctermfg=White gui=bold cterm=bold
hi BufferLineBufferVisible guibg=NONE ctermbg=NONE guifg=#abb2bf ctermfg=White
hi BufferLineCloseButton guibg=NONE ctermbg=NONE guifg=#5c6370 ctermfg=Gray
hi BufferLineCloseButtonSelected guibg=NONE ctermbg=NONE guifg=#e06c75 ctermfg=Red
hi BufferLineCloseButtonVisible guibg=NONE ctermbg=NONE guifg=#5c6370 ctermfg=Gray
hi BufferLineModified guibg=NONE ctermbg=NONE guifg=#e5c07b ctermfg=Yellow
hi BufferLineModifiedSelected guibg=NONE ctermbg=NONE guifg=#e5c07b ctermfg=Yellow
hi BufferLineModifiedVisible guibg=NONE ctermbg=NONE guifg=#e5c07b ctermfg=Yellow
hi BufferLineSeparator guibg=NONE ctermbg=NONE guifg=#3e4452 ctermfg=DarkGray
hi BufferLineSeparatorSelected guibg=NONE ctermbg=NONE guifg=#3e4452 ctermfg=DarkGray
hi BufferLineSeparatorVisible guibg=NONE ctermbg=NONE guifg=#3e4452 ctermfg=DarkGray
hi BufferLineIndicatorSelected guibg=NONE ctermbg=NONE guifg=#61afef ctermfg=Blue
]])
vim.api.nvim_create_autocmd("TextYankPost", { vim.api.nvim_create_autocmd("TextYankPost", {
group = color_group,
callback = function() callback = function()
vim.cmd("highlight YankHighlight ctermbg=yellow ctermfg=black guibg=yellow guifg=black")
vim.highlight.on_yank({ higroup = "YankHighlight", timeout = 150 }) vim.highlight.on_yank({ higroup = "YankHighlight", timeout = 150 })
end, end,
}) })

View file

@ -201,9 +201,11 @@ return {
local function get_all_servers() local function get_all_servers()
local servers = {} local servers = {}
local lsp_path = vim.fn.stdpath('data') .. '/lazy/nvim-lspconfig/lsp' local lsp_path = vim.fn.stdpath('data') .. '/lazy/nvim-lspconfig/lsp'
local files = vim.fn.globpath(lsp_path, '*.lua', false, true) local files = vim.fn.readdir(lsp_path, function(name)
return name:sub(-4) == '.lua'
end)
for _, file in ipairs(files) do for _, file in ipairs(files) do
local server = vim.fn.fnamemodify(file, ':t:r') local server = file:sub(1, -5)
table.insert(servers, server) table.insert(servers, server)
end end
return servers return servers

View file

@ -51,8 +51,10 @@ return {
if ev.event == "ColorScheme" then if ev.event == "ColorScheme" then
vim.api.nvim_set_hl(0, "NeoTreeCursorLine", { bg = "#313244", fg = "#a6e3a1" }) vim.api.nvim_set_hl(0, "NeoTreeCursorLine", { bg = "#313244", fg = "#a6e3a1" })
end end
if vim.bo.filetype == "neo-tree" then local win = vim.api.nvim_get_current_win()
vim.wo.winhighlight = "CursorLine:NeoTreeCursorLine" local buf = vim.api.nvim_win_get_buf(win)
if vim.bo[buf].filetype == "neo-tree" then
vim.wo[win].winhighlight = "CursorLine:NeoTreeCursorLine"
end end
end, end,
}) })
@ -75,12 +77,12 @@ return {
for _, buf in ipairs(bufs) do for _, buf in ipairs(bufs) do
local name = api.nvim_buf_get_name(buf) local name = api.nvim_buf_get_name(buf)
if name:match("neo%-tree filesystem") then if name:match("neo%-tree filesystem") then
api.nvim_command(":Neotree close") vim.cmd("Neotree close")
return return
end end
end end
api.nvim_command(":Neotree") vim.cmd("Neotree")
end end
require("which-key").add({ require("which-key").add({

View file

@ -1,12 +1,15 @@
local function get_root() local function get_root()
local git_dir = vim.fn.systemlist("git rev-parse --show-toplevel")[1] local result = vim.system({ "git", "rev-parse", "--show-toplevel" }, { text = true }):wait()
if git_dir and git_dir ~= "" then if result.code == 0 and result.stdout then
local git_dir = vim.trim(result.stdout)
if git_dir ~= "" then
return git_dir return git_dir
else
return vim.fn.getcwd() -- Fallback to current working directory if not in a Git repo
end end
end end
return vim.fn.getcwd()
end
return { return {
{ {
"nvim-telescope/telescope.nvim", "nvim-telescope/telescope.nvim",
@ -22,8 +25,10 @@ return {
require('telescope.builtin').live_grep({ cwd = get_root() }) require('telescope.builtin').live_grep({ cwd = get_root() })
end, end,
desc = "grep" }, desc = "grep" },
{ "<leader>/", ":Telescope live_grep<CR>", desc = "grep" }, { "<leader>ff", function()
{ "<leader>ff", ":Telescope fd<CR>", desc = "Search for Files" }, require('telescope.builtin').find_files({ cwd = get_root() })
end,
desc = "Search for Files" },
{ "<leader>fp", ":Telescope oldfiles<CR>", desc = "Oldfiles" }, { "<leader>fp", ":Telescope oldfiles<CR>", desc = "Oldfiles" },
{ "<leader>?", ":Telescope command_history<CR>", desc = "Command History" }, { "<leader>?", ":Telescope command_history<CR>", desc = "Command History" },
{ "<leader>cm", ":Telescope man_pages<CR>", desc = "Manpages" }, { "<leader>cm", ":Telescope man_pages<CR>", desc = "Manpages" },
@ -35,14 +40,14 @@ return {
if next(attached) ~= nil then if next(attached) ~= nil then
require('telescope.builtin').lsp_definitions() require('telescope.builtin').lsp_definitions()
else else
vim.api.nvim_command('normal! gd') vim.api.nvim_feedkeys("gd", "n", false)
end end
end, end,
mode = "n", mode = "n",
desc = "Go to Definition" desc = "Go to Definition"
}, },
{ "<leader>gd", ":Telescope lsp_definitions<CR>", desc = "Go to Definition" }, { "<leader>gd", ":Telescope lsp_definitions<CR>", desc = "Go to Definition" },
{ "<leader>gr", ":Telescope lsp_references", desc = "Goto References" }, { "<leader>gr", ":Telescope lsp_references<CR>", desc = "Goto References" },
{ "<leader>gi", ":Telescope lsp_implementations<CR>", desc = "Go to Implementations" }, { "<leader>gi", ":Telescope lsp_implementations<CR>", desc = "Go to Implementations" },
{ "<leader>gt", ":Telescope lsp_type_definitions<CR>", desc = "Go to Type Definition" }, { "<leader>gt", ":Telescope lsp_type_definitions<CR>", desc = "Go to Type Definition" },
{ "<leader>cv", ":Telescope treesitter<CR>", desc = "Function Names & Variables" }, { "<leader>cv", ":Telescope treesitter<CR>", desc = "Function Names & Variables" },

View file

@ -7,8 +7,12 @@ return {
{ "<leader>l", ":Lazy<CR>", desc = "Lazy" }, { "<leader>l", ":Lazy<CR>", desc = "Lazy" },
{ "<leader>t", { "<leader>t",
function() function()
vim.cmd("botright new | setlocal nonumber norelativenumber | resize 10 | terminal") vim.cmd.botright("new")
vim.cmd("startinsert") vim.opt_local.number = false
vim.opt_local.relativenumber = false
vim.cmd.resize(10)
vim.cmd.terminal()
vim.cmd.startinsert()
end, end,
mode = "n", mode = "n",
desc = "Open Terminal" desc = "Open Terminal"
@ -24,11 +28,14 @@ return {
{ "<leader>b", group = "Buffers"}, { "<leader>b", group = "Buffers"},
{ "<leader>bd", function() { "<leader>bd", function()
local function is_neotree() local function is_neotree(bufnr)
return vim.bo.filetype == "neo-tree" return vim.bo[bufnr].filetype == "neo-tree"
end end
local current_buf = vim.api.nvim_get_current_buf()
-- Skip if in neo-tree -- Skip if in neo-tree
if is_neotree() then if is_neotree(current_buf) then
vim.notify("Cannot delete buffer from neo-tree", vim.log.levels.WARN) vim.notify("Cannot delete buffer from neo-tree", vim.log.levels.WARN)
return return
end end
@ -38,15 +45,32 @@ return {
vim.notify("Cannot delete last buffer", vim.log.levels.WARN) vim.notify("Cannot delete last buffer", vim.log.levels.WARN)
return return
end end
local buf_to_delete = vim.api.nvim_get_current_buf() vim.cmd.bprevious()
vim.cmd('bprevious') vim.cmd.bdelete({ args = { tostring(current_buf) } })
vim.cmd('bdelete ' .. buf_to_delete)
-- If we ended up in neo-tree, move back to a regular window -- If we ended up in neo-tree, move back to a regular window
if is_neotree() then local new_buf = vim.api.nvim_get_current_buf()
vim.cmd('wincmd l') if is_neotree(new_buf) then
vim.cmd.wincmd("l")
end end
end, desc = "Delete Buffer" }, end, desc = "Delete Buffer" },
{ "<leader>bD", "execute 'close'<CR> | <cmd>execute 'bd!'", desc = "Delete Window & Buffer" }, { "<leader>bD", function()
local current_buf = vim.api.nvim_get_current_buf()
local current_win = vim.api.nvim_get_current_win()
if vim.bo[current_buf].filetype == "neo-tree" then
vim.notify("Cannot delete neo-tree buffer", vim.log.levels.WARN)
return
end
local wins = vim.fn.win_findbuf(current_buf)
if #wins > 1 then
vim.api.nvim_win_close(current_win, false)
end
if vim.api.nvim_buf_is_valid(current_buf) then
vim.cmd('bdelete! ' .. current_buf)
end
end, desc = "Delete Window & Buffer" },
{ "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action" }, { "<leader>ca", vim.lsp.buf.code_action, desc = "Code Action" },
{ "<leader>cr", vim.lsp.buf.rename, desc = "Rename Variable" }, { "<leader>cr", vim.lsp.buf.rename, desc = "Rename Variable" },