chore(nvim): a lot of changes

This commit is contained in:
Afonso Franco 2025-03-16 01:12:43 +00:00
parent 98d7e4b3d7
commit 8aeb7e3c87
Signed by: afonso
SSH key fingerprint: SHA256:gkVPzsQQJzqi21ntQBV6pXTx4bYI53rFGI4XtvCpwd4
12 changed files with 135 additions and 120 deletions

View file

@ -1,2 +1,2 @@
plugin
lazy-lock.json lazy-lock.json
lua/dev

View file

@ -2,5 +2,4 @@ require("core.variables")
require("core.keymaps") require("core.keymaps")
require("core.autocmds") require("core.autocmds")
require('core.package_manager') require('core.package_manager')
require('winbar')
require('core.theme') require('core.theme')

View file

@ -1,18 +1,27 @@
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
if not vim.loop.fs_stat(lazypath) then local lazyrepo = "https://github.com/folke/lazy.nvim.git"
vim.fn.system({ local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
"git", if vim.v.shell_error ~= 0 then
"clone", vim.api.nvim_echo({
"--filter=blob:none", { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
"https://github.com/folke/lazy.nvim.git", { out, "WarningMsg" },
"--branch=stable", -- latest stable release { "\nPress any key to exit..." },
lazypath, }, true, {})
}) vim.fn.getchar()
os.exit(1)
end
end end
vim.opt.rtp:prepend(lazypath) vim.opt.rtp:prepend(lazypath)
--Call lazy config here --Call lazy config here
local lazy = require("lazy") local lazy = require("lazy")
lazy.setup("plugins") lazy.setup({
spec = {
{ import = "plugins" }
},
dev = {
path = vim.fn.stdpath("config") .. "/lua/dev"
}
})

View file

@ -47,4 +47,3 @@ vim.opt.signcolumn = "yes"
vim.opt.autoread = true vim.opt.autoread = true
-- disable swapfile -- disable swapfile
vim.opt.swapfile = false vim.opt.swapfile = false
vim.opt.laststatus = 3

View file

@ -25,18 +25,26 @@ return {
sources = { sources = {
default = { 'lsp', 'path', 'snippets', 'buffer' }, default = { 'lsp', 'path', 'snippets', 'buffer' },
providers = { providers = {
lazydev = { name = "LazyDev", module = "lazydev.integrations.blink", fallbacks = { "lsp" } }, lazydev = {
name = "LazyDev",
module = "lazydev.integrations.blink",
fallbacks = { "lsp" }
},
}, },
}, },
signature = { signature = {
enabled = true, enabled = true,
window = { window = {
max_width = 160,
max_height = 30,
scrollbar = true,
show_documentation = false, show_documentation = false,
} }
}, },
cmdline = {
completion = {
menu = {
auto_show = true
}
}
},
completion = { completion = {
accept = { accept = {
auto_brackets = { auto_brackets = {

View file

@ -117,10 +117,19 @@ return {
capabilities = capabilities, capabilities = capabilities,
filetypes = { 'haskell', 'lhaskell', 'cabal' }, filetypes = { 'haskell', 'lhaskell', 'cabal' },
}) })
lspconfig["clangd"].setup({ -- lspconfig["clangd"].setup({
-- capabilities = capabilities,
-- })
lspconfig["texlab"].setup({
capabilities = capabilities, capabilities = capabilities,
}) })
lspconfig["texlab"].setup({ lspconfig["bashls"].setup({
capabilities = capabilities,
})
lspconfig["zls"].setup({
capabilities = capabilities,
})
lspconfig["pyright"].setup({
capabilities = capabilities, capabilities = capabilities,
}) })
end, end,
@ -165,11 +174,35 @@ return {
rust = { "rustfmt" }, rust = { "rustfmt" },
go = { "gofmt" }, go = { "gofmt" },
json = { "jq" }, json = { "jq" },
bash = { "shfmt" } bash = { "shfmt", "beautysh" },
zsh = { "beautysh" }
} }
}) })
end, end,
}, },
{
'mfussenegger/nvim-lint',
config = function()
local lint = require("lint")
lint.linters_by_ft = {
go = { "golangcilint" },
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, {
group = lint_augroup,
callback = function()
lint.try_lint()
end,
})
vim.keymap.set("n", "<leader>li", function()
lint.try_lint()
end, { desc = "Trigger linting for current file" })
end,
},
{ {
"lervag/vimtex", "lervag/vimtex",
@ -180,6 +213,15 @@ return {
else else
vim.g.vimtex_view_method = 'zathura' vim.g.vimtex_view_method = 'zathura'
end end
vim.g.vimtex_quickfix_ignore_filters = {
"warning",
"Warning"
}
vim.g.vimtex_quickfix_open_on_warning = 0
vim.g.vimtex_quickfix_ignore_filters = {
'Overfull',
'Underfull',
}
vim.g.vimtex_compiler_method = 'latexmk' vim.g.vimtex_compiler_method = 'latexmk'
vim.g.vimtex_compiler_latexmk = { vim.g.vimtex_compiler_latexmk = {
out_dir = 'build', out_dir = 'build',

View file

@ -25,6 +25,7 @@ return {
statuscolumn = { enabled = true }, statuscolumn = { enabled = true },
dashboard = { enabled = true }, dashboard = { enabled = true },
input = { enabled = true }, input = { enabled = true },
image = { enabled = true },
lazygit = { lazygit = {
vim.keymap.set('n', '<leader>lg', function() vim.keymap.set('n', '<leader>lg', function()
Snacks.lazygit.open() Snacks.lazygit.open()
@ -46,5 +47,15 @@ return {
end end
}, },
"tpope/vim-fugitive", "tpope/vim-fugitive",
"pimalaya/himalaya-vim" {
"afonsofrancof/worktrees.nvim",
dev = true,
opts = {
mappings = {
create = "<leader>wtc",
delete = "<leader>wtd",
switch = "<leader>wts",
}
}
}
} }

View file

@ -9,7 +9,7 @@ return {
fzflua.setup({ fzflua.setup({
defaults = { defaults = {
winopts = { winopts = {
border = "single", border = "rounded",
width = 0.6, width = 0.6,
height = 0.5, height = 0.5,
}, },

View file

@ -0,0 +1,24 @@
return {
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
opts = {
sections = {
lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { { 'filename', path = 1 } },
lualine_x = { 'filetype' },
lualine_y = { 'progress' },
lualine_z = { 'location' }
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = { 'filename' },
lualine_x = { 'location' },
lualine_y = {},
lualine_z = {}
},
}
}
}

View file

@ -19,6 +19,15 @@ return {
disable = { "latex" }, disable = { "latex" },
use_languagetree = true, use_languagetree = true,
}, },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
indent = { indent = {
enable = true, enable = true,
}, },

View file

@ -1,14 +1,14 @@
return { return {
{ -- {
"vimpostor/vim-tpipeline", -- "vimpostor/vim-tpipeline",
config = function() -- config = function()
vim.g.tpipeline_restore = 0 -- vim.g.tpipeline_restore = 0
vim.g.tpipeline_autoembed = 0 -- vim.g.tpipeline_autoembed = 0
vim.o.laststatus = 0 -- vim.o.laststatus = 0
vim.g.tpipeline_statusline = '%=%l:%c' -- vim.g.tpipeline_statusline = '%=%l:%c'
end -- end
}, -- },
{ {
"folke/noice.nvim", "folke/noice.nvim",
event = "VeryLazy", event = "VeryLazy",
@ -36,6 +36,7 @@ return {
}, },
{ {
'kevinhwang91/nvim-ufo', 'kevinhwang91/nvim-ufo',
event = "VeryLazy",
dependencies = 'kevinhwang91/promise-async', dependencies = 'kevinhwang91/promise-async',
config = function() config = function()
vim.o.foldcolumn = '0' vim.o.foldcolumn = '0'

View file

@ -1,87 +0,0 @@
local folder_icon = "󰉋"
local M = {}
--- Window bar that shows the current file path (in a fancy way).
---@return string
function M.render()
-- Get the path and expand variables.
local path = vim.fs.normalize(vim.fn.expand '%:p' --[[@as string]])
-- Replace slashes by arrows.
local separator = ' %#WinbarSeparator# '
local prefix, prefix_path = '', ''
-- If the window gets too narrow, shorten the path and drop the prefix.
if vim.api.nvim_win_get_width(0) < math.floor(vim.o.columns / 3) then
path = vim.fn.pathshorten(path)
else
-- For some special folders, add a prefix instead of the full path (making
-- sure to pick the longest prefix).
---@type table<string, string>
local special_dirs = {
DOTFILES = "$HOME/.config",
HOME = vim.env.HOME,
PROJECTS = "$HOME/projects",
["University"] = "$HOME/projects/University",
["Personal"] = "$HOME/projects/Personal",
}
for dir_name, dir_path in pairs(special_dirs) do
if vim.startswith(path, vim.fs.normalize(dir_path)) and #dir_path > #prefix_path then
prefix, prefix_path = dir_name, dir_path
end
end
if prefix ~= '' then
path = path:gsub('^' .. prefix_path, '')
prefix = string.format('%%#WinBarSpecial#%s %s%s', folder_icon, prefix, separator)
end
end
-- Remove leading slash.
path = path:gsub('^/', '')
-- Get the background color of the Normal highlight group
local normal_bg_color = vim.api.nvim_get_hl_by_name('Normal', true).background
-- Get the foreground color of the Normal highlight group
local normal_fg_color = vim.api.nvim_get_hl_by_name('Normal', true).foreground
-- Convert the RGB color to a hex string
local bg_hex_color = normal_bg_color and string.format('#%06x', normal_bg_color) or 'transparent'
-- Convert the RGB color to a hex string
local fg_hex_color = string.format('#%06x', normal_fg_color)
-- Define the Winbar highlight group with the same background color
vim.api.nvim_command('highlight Winbar guibg=' .. bg_hex_color)
-- Define the Winbar highlight group with the same foreground color
vim.api.nvim_command('highlight Winbar guifg=' .. fg_hex_color)
return table.concat {
' ',
prefix,
table.concat(
vim.iter(vim.split(path, '/'))
:map(function(segment)
return string.format('%%#Winbar#%s', segment)
end):totable(),
separator
),
}
end
vim.api.nvim_create_autocmd('BufWinEnter', {
group = vim.api.nvim_create_augroup('mariasolos/winbar', { clear = true }),
desc = 'Attach winbar',
callback = function(args)
if
not vim.api.nvim_win_get_config(0).zindex -- Not a floating window
and vim.bo[args.buf].buftype == '' -- Normal buffer
and vim.api.nvim_buf_get_name(args.buf) ~= '' -- Has a file name
and not vim.wo[0].diff -- Not in diff mode
then
vim.wo.winbar = "%{%v:lua.require'winbar'.render()%}"
end
end,
})
return M