mirror of
https://github.com/itme-brain/nvim.git
synced 2026-05-08 07:00:13 -04:00
updated compat
This commit is contained in:
parent
62d06a8bdc
commit
23fb66df0b
7 changed files with 159 additions and 87 deletions
6
init.lua
6
init.lua
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
})
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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({
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
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
|
||||||
|
|
||||||
|
return vim.fn.getcwd()
|
||||||
end
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
@ -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" },
|
||||||
|
|
|
||||||
|
|
@ -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" },
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue