chore: some qol crap

This commit is contained in:
Mariano Z. 2025-04-02 18:07:53 -03:00
parent 867159343a
commit 6fb744cdae
Signed by: marianozunino
GPG key ID: 4C73BAD25156DACE
34 changed files with 433 additions and 598 deletions

6
.luarc.json Normal file
View file

@ -0,0 +1,6 @@
{
"diagnostics.globals": [
"Snacks"
]
}

View file

@ -1,3 +1,7 @@
-- Fuck off with the warnings...
---@diagnostic disable-next-line: duplicate-set-field
vim.deprecate = function() end
require("globals")
require("config.options")
require("config.remap")

View file

@ -1,56 +1,55 @@
{
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" },
"blink.cmp": { "branch": "main", "commit": "49f211fe5d729df53df4c042d7c3464cf47d199e" },
"chezmoi.nvim": { "branch": "main", "commit": "3f72cffa2d18aaec884502443bae37226f3decd2" },
"blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" },
"cloak.nvim": { "branch": "main", "commit": "648aca6d33ec011dc3166e7af3b38820d01a71e4" },
"codeium.vim": { "branch": "main", "commit": "000de972de76f357c03da14f4f8dd9a969d4fe8c" },
"conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"conform.nvim": { "branch": "master", "commit": "372fc521f8421b7830ea6db4d6ea3bae1c77548c" },
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
"fzf-lua": { "branch": "main", "commit": "caee13203d6143d691710c34f85ad6441fe3f535" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"fzf-lua": { "branch": "main", "commit": "b11467c3fbfe48e4a815e4909f5c4e5b413ce6d0" },
"gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" },
"gitsigns.nvim": { "branch": "main", "commit": "3c76f7fabac723aa682365ef782f88a83ccdb4ac" },
"go.nvim": { "branch": "master", "commit": "0d426e87227dd14584881ecc595c173121456111" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"gitsigns.nvim": { "branch": "main", "commit": "1796c7cedfe7e5dd20096c5d7b8b753d8f8d22eb" },
"go.nvim": { "branch": "master", "commit": "37ec4d9be3edef64b725bfe29684e1fe019873bc" },
"knap": { "branch": "main", "commit": "7db44d0bb760120142cc1e8f43e44976de59c2f6" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
"lualine.nvim": { "branch": "master", "commit": "1517caa8fff05e4b4999857319d3b0609a7f57fa" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
"mason-tool-installer.nvim": { "branch": "main", "commit": "1255518cb067e038a4755f5cb3e980f79b6ab89c" },
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
"mini.ai": { "branch": "main", "commit": "978ffc65c6b513fde9ef075326d34d89197f1ea5" },
"mini.icons": { "branch": "main", "commit": "86a633f0dffcfd80110bac86681dbf4b5c37ba5c" },
"mini.surround": { "branch": "main", "commit": "97796f68a8698d9b63ac3927da0d0bf5c3a0876b" },
"neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" },
"mini.ai": { "branch": "main", "commit": "e139eb1101beb0250fea322f8c07a42f0f175688" },
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
"mini.statusline": { "branch": "main", "commit": "e331175f10d9f400b42523b3890841aba202ce16" },
"mini.surround": { "branch": "main", "commit": "5aab42fcdcf31fa010f012771eda5631c077840a" },
"nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" },
"nvim-lint": { "branch": "master", "commit": "93b8040115c9114dac1047311763bef275e752dc" },
"nvim-lspconfig": { "branch": "master", "commit": "ff6471d4f837354d8257dfa326b031dd8858b16e" },
"nvim-spectre": { "branch": "master", "commit": "ddd7383e856a7c939cb4f5143278fe041bbb8cb9" },
"nvim-treesitter": { "branch": "master", "commit": "9be6836ebeb88a536055bf1ce0961eef68da4bc6" },
"nvim-lint": { "branch": "master", "commit": "9dfb77ef6c5092a19502883c02dc5a02ec648729" },
"nvim-lspconfig": { "branch": "master", "commit": "12506bdaccd94964d4fb40367e36ade1960c8947" },
"nvim-spectre": { "branch": "master", "commit": "197150cd3f30eeb1b3fd458339147533d91ac385" },
"nvim-treesitter": { "branch": "master", "commit": "94ea4f436d2b59c80f02e293466c374584f03b8c" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
"oil.nvim": { "branch": "master", "commit": "302bbaceeafc690e6419e0c8296e804d60cb9446" },
"nvim-ufo": { "branch": "main", "commit": "cac999ec9f6302d2fd4ad8a846bf8f731af6e7cf" },
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
"oil.nvim": { "branch": "master", "commit": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"pretty-fold.nvim": { "branch": "master", "commit": "1eb18f228972e86b7b8f5ef33ca8091e53fb1e49" },
"render-markdown.nvim": { "branch": "main", "commit": "a020c88e9552b50916a78dec9eeb4656c6391e6d" },
"schemastore.nvim": { "branch": "main", "commit": "e659e0c6ca06727ed898aaaeea3850f528898684" },
"presenterm.nvim": { "branch": "main", "commit": "2db942337aeeca99e33f627459df2264b3987634" },
"promise-async": { "branch": "main", "commit": "119e8961014c9bfaf1487bf3c2a393d254f337e2" },
"quicker.nvim": { "branch": "master", "commit": "1798be71cdcb15fb84fa8054148a56e17fd391dc" },
"render-markdown.nvim": { "branch": "main", "commit": "8c33733b9af902250731539b2fe3920c76993765" },
"schemastore.nvim": { "branch": "main", "commit": "d521e71f9d5ac1c29a7653528d4e5c66ffe229c5" },
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
"suda.vim": { "branch": "master", "commit": "9adda7d195222d4e2854efb2a88005a120296c47" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"typescript-tools.nvim": { "branch": "master", "commit": "e0887c1e336edbb01243e9f1e60d74b0bc0a2bed" },
"typst-preview.nvim": { "branch": "master", "commit": "2503b188cd2a17ce44fdd21a944a93335e935215" },
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
"vim-dadbod": { "branch": "master", "commit": "9f0ca8bcef704659820a95c3bbd2c262583a66a1" },
"vim-dadbod": { "branch": "master", "commit": "fa31d0ffeebaa59cf97a81e7f92194cced54a13f" },
"vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" },
"vim-dadbod-ui": { "branch": "master", "commit": "685e75b34ee0e12f92ec4507ea8bb7f1aaa936e5" },
"vim-dadbod-ui": { "branch": "master", "commit": "460432301a5cb280ea265ddfa15c9f3dcd1d26b7" },
"vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
"vim-hugo": { "branch": "master", "commit": "324fb8c7371d31701349c1192e25a0bdcf9898f8" },
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
"windsurf.vim": { "branch": "main", "commit": "272c6e2755e8faa90e26bcdcd9fde6b9e61751ea" }
}

View file

@ -1,7 +1,6 @@
-- Create autogroups first
local MZuninoGroup = vim.api.nvim_create_augroup("mzunino", {})
local yank_group = vim.api.nvim_create_augroup("HighlightYank", {})
local bigfile_group = vim.api.nvim_create_augroup("bigfile", {})
-- Set bigfile size threshold
vim.g.bigfile_size = 1024 * 1024 * 1.5 -- 1.5 MB
@ -50,15 +49,3 @@ vim.filetype.add({
},
},
})
-- Bigfile handling
vim.api.nvim_create_autocmd("FileType", {
group = bigfile_group,
pattern = "bigfile",
callback = function(ev)
vim.b.minianimate_disable = true
vim.schedule(function()
vim.bo[ev.buf].syntax = vim.filetype.match({ buf = ev.buf }) or ""
end)
end,
})

39
lua/config/lsp/vtsls.lua Normal file
View file

@ -0,0 +1,39 @@
return {
-- explicitly add default filetypes, so that we can extend
-- them in related extras
filetypes = {
"javascript",
"javascriptreact",
"javascript.jsx",
"typescript",
"typescriptreact",
"typescript.tsx",
},
settings = {
complete_function_calls = true,
vtsls = {
enableMoveToFileCodeAction = true,
autoUseWorkspaceTsdk = true,
experimental = {
maxInlayHintLength = 30,
completion = {
enableServerSideFuzzyMatch = true,
},
},
},
typescript = {
updateImportsOnFileMove = { enabled = "always" },
suggest = {
completeFunctionCalls = true,
},
inlayHints = {
enumMemberValues = { enabled = true },
functionLikeReturnTypes = { enabled = true },
parameterNames = { enabled = "literals" },
parameterTypes = { enabled = true },
propertyDeclarationTypes = { enabled = true },
variableTypes = { enabled = false },
},
},
},
}

View file

@ -39,9 +39,9 @@ end, { desc = "Quit all" })
-- create a user command to save without formatting :noa w
vim.api.nvim_create_user_command("W", function()
-- if buffer is empty, don't save
if vim.fn.empty(vim.fn.expand("%:t")) == 1 then
return vim.notify("Buffer is empty, not saving", vim.log.levels.ERROR)
Snacks.notifier.notify("Buffer is empty, not saving", vim.log.levels.ERROR)
return
end
vim.api.nvim_command("noa w")
end, { nargs = 0, desc = "Save without formatting" })

View file

@ -15,3 +15,13 @@ end
_G.vmap = function(keys, func, opts)
_G.map("v", keys, func, opts)
end
_G.dd = function(...)
Snacks.debug.inspect(...)
end
_G.bt = function()
Snacks.debug.backtrace()
end
vim.print = _G.dd

View file

@ -1,13 +1,10 @@
local M = {
"Exafunction/codeium.vim",
cmd = "Codeium",
keys = {
{ "<leader>ce", "<cmd>Codeium Toggle<cr>", desc = "Codeium Enable" },
},
"Exafunction/windsurf.vim",
}
M.config = function()
vim.g.codeium_disable_bindings = 1
vim.g.codeium_enabled = 0
imap("<C-g>", function()
return vim.fn["codeium#Accept"]()
@ -24,6 +21,11 @@ M.config = function()
imap("<c-x>", function()
return vim.fn["codeium#Clear"]()
end, { expr = true, silent = true, desc = "[codeium] Clear" })
nmap("<leader>ce", function()
vim.cmd("Codeium Toggle")
Snacks.notifier.notify("Codeium " .. (vim.g.codeium_enabled == 1 and "enabled" or "disabled"))
end, { expr = true, silent = true, desc = "[codeium] Toggle" })
end
return M

View file

@ -1,31 +0,0 @@
local M = {
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
}
M.config = function()
require("ibl").setup({
indent = {
char = "",
tab_char = "",
},
scope = { enabled = false },
exclude = {
filetypes = {
"help",
"alpha",
"dashboard",
"neo-tree",
"Trouble",
"trouble",
"lazy",
"mason",
"notify",
"toggleterm",
"lazyterm",
},
},
})
end
return M

View file

@ -1,31 +0,0 @@
return {
"xvzc/chezmoi.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
require("chezmoi").setup({
-- your configurations
edit = {
watch = true, -- Set true to automatically apply on save.
force = true, -- Set true to force apply. Works only when watch = true.
},
notification = {
on_open = true, -- vim.notify when start editing chezmoi-managed file.
on_apply = true, -- vim.notify on apply.
},
})
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
callback = function()
-- invoke with vim.schedule() for better startup time
vim.schedule(require("chezmoi.commands.__edit").watch)
end,
})
-- Auto-apply chezmoi changes
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
command = [[silent! !chezmoi apply --source-path "%"]],
})
end,
}

View file

@ -1,8 +1,11 @@
local M = {
"saghen/blink.cmp",
dependencies = { "L3MON4D3/LuaSnip", version = "v2.*" },
version = "v1.*",
dependencies = {
"nvim-lua/plenary.nvim",
{ "L3MON4D3/LuaSnip", version = "v2.*" },
"folke/lazydev.nvim",
},
version = "*",
}
M.config = function()
@ -26,19 +29,22 @@ M.config = function()
nerd_font_variant = "mono",
},
snippets = { preset = "luasnip" },
snippets = {
preset = "luasnip",
},
sources = {
default = { "lsp", "path", "snippets", "buffer", "dadbod" },
default = { "lsp", "path", "snippets", "buffer", "dadbod", "lazydev" },
providers = {
dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" },
lazydev = { module = "lazydev.integrations.blink", score_offset = 100 },
},
},
signature = {
enabled = true,
window = {
border = "single",
border = "rounded",
},
},
@ -50,7 +56,7 @@ M.config = function()
},
},
menu = {
border = "single",
border = "rounded",
draw = {
components = {
kind_icon = {
@ -70,6 +76,10 @@ M.config = function()
return ctx.mode ~= "default"
end,
},
documentation = {
auto_show = true,
auto_show_delay_ms = 200,
},
},
fuzzy = {

View file

@ -12,7 +12,7 @@ local M = {
M.config = function()
vim.g.db_ui_use_nerd_fonts = 1
-- g:db_ui_save_location
vim.g.db_ui_save_location = "~/Sync/saved_queries"
vim.g.db_ui_save_location = "~/Sync/Work/Stuzo/queries"
end
return M

View file

@ -1,59 +1,69 @@
local M = {
"folke/trouble.nvim",
branch = "main",
"stevearc/quicker.nvim",
-- Set plugin to load on VimEnter instead of FileType qf to ensure diagnostics are configured early
event = { "VimEnter" },
-- Add an explicit dependency for diagnostics loading
dependencies = { "nvim-lspconfig" }, -- Assuming you're using nvim-lspconfig
}
local function setup_keymaps(trouble)
-- Diagnostic navigation
nmap("[d", function()
vim.diagnostic.jump({ count = -1, float = true })
end, { desc = "Previous diagnostic" })
-- Move sign registration outside of the config function to ensure it runs early
local function register_diagnostic_signs()
-- Define diagnostic sign icons
local sign_icons = {
[vim.diagnostic.severity.ERROR] = "󰅙", -- Alternative error symbol
[vim.diagnostic.severity.WARN] = "󱈸", -- Alternative warning
[vim.diagnostic.severity.HINT] = "󰮱", -- Star for hints
[vim.diagnostic.severity.INFO] = "󰋼", -- Info circle
}
nmap("]d", function()
vim.diagnostic.jump({ count = 1, float = true })
end, { desc = "Next diagnostic" })
-- Register signs explicitly
for severity, icon in pairs(sign_icons) do
local name = "DiagnosticSign" .. vim.diagnostic.severity[severity]
vim.fn.sign_define(name, { text = icon, texthl = name })
end
-- Trouble specific navigation
nmap("<a-k>", function()
trouble.previous({ skip_groups = true, jump = true })
end, { desc = "Previous trouble item" })
nmap("<a-j>", function()
trouble.next({ skip_groups = true, jump = true })
end, { desc = "Next trouble item" })
-- Set sign highlights for better visibility
vim.cmd([[
highlight DiagnosticSignError guifg=#f7768e gui=bold
highlight DiagnosticSignWarn guifg=#e0af68 gui=bold
highlight DiagnosticSignInfo guifg=#7dcfff gui=bold
highlight DiagnosticSignHint guifg=#9ece6a gui=bold
]])
end
-- Trouble mode toggles
nmap("<leader>tt", "<cmd>TroubleToggle<cr>", { desc = "Toggle trouble" })
nmap("<leader>tw", "<cmd>TroubleToggle workspace_diagnostics<cr>", { desc = "Workspace diagnostics" })
nmap("<leader>td", "<cmd>TroubleToggle document_diagnostics<cr>", { desc = "Document diagnostics" })
nmap("<leader>tq", "<cmd>TroubleToggle quickfix<cr>", { desc = "Quickfix list" })
nmap("<leader>tl", "<cmd>TroubleToggle loclist<cr>", { desc = "Location list" })
-- This will now be called during setup() which happens at init
M.init = function()
register_diagnostic_signs()
end
local function setup_diagnostic_config()
-- Define prettier diagnostic icons
local diagnostic_icons = {
[vim.diagnostic.severity.ERROR] = "󰅚", -- More prominent error symbol
[vim.diagnostic.severity.WARN] = "󰀦", -- Warning triangle
[vim.diagnostic.severity.HINT] = "󰌵", -- Lightbulb for hints
[vim.diagnostic.severity.INFO] = "󰋽", -- Information symbol
}
-- Configure diagnostics
vim.diagnostic.config({
virtual_text = {
prefix = "",
suffix = "",
format = function(diagnostic)
local icons = {
[vim.diagnostic.severity.ERROR] = " ",
[vim.diagnostic.severity.WARN] = " ",
[vim.diagnostic.severity.HINT] = " ",
[vim.diagnostic.severity.INFO] = " ",
}
local icon = icons[diagnostic.severity] or ""
local icon = diagnostic_icons[diagnostic.severity] or ""
return string.format("%s %s", icon, diagnostic.message)
end,
},
underline = false,
underline = true, -- Enable underline for better visibility
update_in_insert = false,
signs = {
active = true,
text = {
[vim.diagnostic.severity.ERROR] = "",
[vim.diagnostic.severity.WARN] = "",
[vim.diagnostic.severity.HINT] = "",
[vim.diagnostic.severity.INFO] = "",
[vim.diagnostic.severity.ERROR] = "󰅙", -- Alternative error symbol
[vim.diagnostic.severity.WARN] = "󱈸", -- Alternative warning
[vim.diagnostic.severity.HINT] = "󰮱", -- Star for hints
[vim.diagnostic.severity.INFO] = "󰋼", -- Info circle
},
},
float = {
@ -65,62 +75,72 @@ local function setup_diagnostic_config()
prefix = "",
format = function(diagnostic)
local severity = vim.diagnostic.severity[diagnostic.severity]
return string.format("%s: %s", severity:lower(), diagnostic.message)
local icon = diagnostic_icons[diagnostic.severity] or ""
return string.format("%s %s: %s", icon, severity:lower(), diagnostic.message)
end,
},
severity_sort = true,
})
end
local function cycle_qf(cmd)
local qf_list_empty = vim.fn.getqflist({ size = 0 }).size == 0
if qf_list_empty then
return
end
local current_qf = vim.fn.getqflist({ idx = 0 }).idx
local qf_size = vim.fn.getqflist({ size = 0 }).size
if cmd == "next" then
if current_qf == qf_size then
vim.cmd("cfirst")
else
vim.cmd("cnext")
end
elseif cmd == "prev" then
if current_qf == 1 then
vim.cmd("clast")
else
vim.cmd("cprev")
end
end
end
function M.config()
local trouble = require("trouble")
trouble.setup({
position = "bottom",
height = 10,
width = 50,
-- icons = false,
mode = "workspace_diagnostics",
fold_open = "",
fold_closed = "",
group = true,
padding = true,
action_keys = {
close = "q", -- close the list
cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
refresh = "r", -- manually refresh
jump = { "<cr>", "<tab>" }, -- jump to the diagnostic or open / close folds
open_split = { "<c-x>" }, -- open buffer in new split
open_vsplit = { "<c-v>" }, -- open buffer in new vsplit
open_tab = { "<c-t>" }, -- open buffer in new tab
toggle_mode = "m", -- toggle between "workspace" and "document" mode
toggle_preview = "P", -- toggle auto_preview
preview = "p", -- preview the diagnostic location
close_folds = { "zM", "zm" }, -- close all folds
open_folds = { "zR", "zr" }, -- open all folds
toggle_fold = { "zA", "za" }, -- toggle fold of current file
previous = "k", -- previous item
next = "j", -- next item
local opts = {
keys = {
{
">",
function()
require("quicker").expand({ before = 2, after = 2, add_to_existing = true })
end,
desc = "Expand quickfix context",
},
auto_preview = true,
auto_fold = false,
auto_jump = { "lsp_definitions" },
-- signs = {
-- -- Icons / text used for a diagnostic
-- error = "",
-- warning = "",
-- hint = "",
-- information = "",
-- other = "",
-- },
use_diagnostic_signs = false,
})
-- Setup keymaps
setup_keymaps(trouble)
-- Setup diagnostic configuration
{
"<",
function()
require("quicker").collapse()
end,
desc = "Collapse quickfix context",
},
},
type_icons = {
E = "󰅚 ", -- Error
W = "󰀦 ", -- Warning
I = "󰋽 ", -- Info
N = "󰎚 ", -- Note
H = "󰌵 ", -- Hint
},
}
require("quicker").setup(opts)
setup_diagnostic_config()
-- Replace the existing mappings with the cycling versions
nmap("<a-j>", function()
cycle_qf("next")
end, { desc = "Next quickfix item (cycles)" })
nmap("<a-k>", function()
cycle_qf("prev")
end, { desc = "Previous quickfix item (cycles)" })
end
return M

View file

@ -1,53 +1,26 @@
local M = {
"bbjornstad/pretty-fold.nvim",
}
return {
"kevinhwang91/nvim-ufo",
event = "BufRead",
dependencies = "kevinhwang91/promise-async",
config = function()
vim.o.foldcolumn = "0" -- '0' is not bad
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevelstart = 99
vim.o.foldenable = true
M.config = function()
local global_setup = {
sections = {
left = { "content" },
right = {
" ",
function()
return ("[%dL]"):format(vim.v.foldend - vim.v.foldstart)
vim.keymap.set("n", "zA", require("ufo").openAllFolds, { desc = "Open all folds" })
vim.keymap.set("n", "zC", require("ufo").closeAllFolds, { desc = "Close all folds" })
vim.keymap.set("n", "zk", function()
local winid = require("ufo").peekFoldedLinesUnderCursor()
if not winid then
vim.lsp.buf.hover()
end
end, { desc = "Peek Fold" })
require("ufo").setup({
provider_selector = function()
return { "lsp", "indent" }
end,
})
end,
"[",
"percentage",
"]",
},
},
matchup_patterns = {
{ "{", "}" },
{ "%(", ")" },
{ "%[", "]" },
},
process_comment_signs = ({ "delete", "spaces", false })[2],
}
local function ft_setup(lang, options) -- {{{
local opts = vim.tbl_deep_extend("force", global_setup, options)
if opts and opts.matchup_patterns and global_setup.matchup_patterns then
opts.matchup_patterns = vim.list_extend(opts.matchup_patterns, global_setup.matchup_patterns)
end
require("pretty-fold").ft_setup(lang, opts)
end -- }}}
require("pretty-fold").setup(global_setup)
ft_setup("lua", {
matchup_patterns = {
{ "^%s*do$", "end" },
{ "^%s*if", "end" },
{ "^%s*for", "end" },
{ "function[^%(]*%(", "end" },
},
})
ft_setup("vim", {
matchup_patterns = {
{ "^%s*function!?[^%(]*%(", "endfunction" },
},
})
end
return M

View file

@ -12,9 +12,12 @@ return {
svelte = { lsp_format = "fallback" },
html = { "prettierd", "prettier" },
typescript = { "prettierd", "prettier" },
lua = { "stylua" },
typescriptreact = { "prettierd", "prettier" },
javascript = { "prettierd", "prettier", stop_after_first = true },
json = { "prettierd", "prettier" },
htmlhugo = { "prettierd", "prettier" },
markdown = { "prettierd", "prettier" },
lua = { "stylua" },
sh = { "shfmt" },
bash = { "shfmt" },
tex = { "latexindent" },
@ -25,8 +28,6 @@ return {
cpp = { "clang-format" },
hcl = { "hcl" },
toml = { "taplo" },
htmlhugo = { "prettierd", "prettier" },
markdown = { "prettierd", "prettier" },
},
formatters = {
csharpier = {

View file

@ -3,10 +3,6 @@ local M = {
}
M.config = function()
local config = require("fzf-lua.config")
local actions = require("trouble.sources.fzf").actions
config.defaults.actions.files["ctrl-q"] = actions.open
local fzf_lua = require("fzf-lua")
-- Basic fzf-lua setup

View file

@ -24,13 +24,13 @@ local M = {
callback = function()
nmap("P", function()
local cmd = "git push --force-with-lease"
vim.notify("Pushing...", vim.log.levels.INFO)
Snacks.notifier.notify("Pushing...", vim.log.levels.INFO)
vim.fn.jobstart(cmd, {
on_exit = function(_, code)
if code == 0 then
vim.notify("Push completed successfully", vim.log.levels.INFO)
Snacks.notifier.notify("Push completed successfully", vim.log.levels.INFO)
else
vim.notify("Push failed with exit code: " .. code, vim.log.levels.ERROR)
Snacks.notifier.notify("Push failed with exit code: " .. code, vim.log.levels.ERROR)
end
end,
detach = true,
@ -41,6 +41,22 @@ local M = {
local win_id = vim.api.nvim_get_current_win()
vim.api.nvim_win_close(win_id, false)
end, { buffer = true, desc = "Close window" })
-- Git Pull
nmap("gp", function()
local cmd = "git pull"
Snacks.notifier.notify("Pulling...", vim.log.levels.INFO)
vim.fn.jobstart(cmd, {
on_exit = function(_, code)
if code == 0 then
Snacks.notifier.notify("Pull completed successfully", vim.log.levels.INFO)
else
Snacks.notifier.notify("Pull failed with exit code: " .. code, vim.log.levels.ERROR)
end
end,
detach = true,
})
end, { buffer = true, desc = "Close window" })
end,
})
end,

View file

@ -23,4 +23,10 @@ return {
})
end,
},
{
"chomosuke/typst-preview.nvim",
lazy = false, -- or ft = 'typst'
version = "1.*",
opts = {}, -- lazy.nvim will implicitly calls `setup {}`
},
}

View file

@ -10,10 +10,12 @@ M.config = function()
local lint = require("lint")
lint.linters_by_ft = {
javascript = {},
typescript = {},
javascriptreact = {},
typescriptreact = {},
-- fuck this shit, 1.5Gb of RAM for this crap
--
-- javascript = {"eslint_d"},
-- typescript = {"eslint_d"},
-- javascriptreact = {"eslint_d"},
-- typescriptreact = {"eslint_d"},
}
local lint_augroup = vim.api.nvim_create_augroup("lint", { clear = true })

View file

@ -1,68 +0,0 @@
return {
"pmizio/typescript-tools.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"neovim/nvim-lspconfig",
},
ft = { "typescript", "javascript", "jsx", "tsx", "json" },
config = function()
local lsp_common = require("plugins.lsp").get_common_config()
local ts_api = require("typescript-tools.api")
local original_on_attach = lsp_common.on_attach
lsp_common.on_attach = function(client, bufnr)
original_on_attach(client, bufnr)
vim.keymap.set("n", "<leader>ca", function()
local diagnostics = vim.diagnostic.get(0, { lnum = vim.fn.line(".") - 1 })
local context = { diagnostics = diagnostics }
local params = vim.lsp.util.make_range_params(0)
params.context = context
params = vim.tbl_extend("force", {}, params)
vim.lsp.buf_request(bufnr, "textDocument/codeAction", params, function(err, result, ctx)
local actions = result or {}
table.insert(actions, { title = "Organize Imports", command = "typescript.custom.organize_imports" })
table.insert(actions, { title = "Fix All", command = "typescript.custom.fix_all" })
table.insert(actions, { title = "Add Missing Imports", command = "typescript.custom.add_missing_imports" })
table.insert(actions, { title = "Remove Unused", command = "typescript.custom.remove_unused" })
vim.ui.select(actions, {
prompt = "Code Actions",
format_item = function(action)
return action.title
end,
}, function(action)
if not action then
return
end
if action.command == "typescript.custom.organize_imports" then
pcall(ts_api.organize_imports)
elseif action.command == "typescript.custom.fix_all" then
pcall(ts_api.fix_all)
elseif action.command == "typescript.custom.add_missing_imports" then
pcall(ts_api.add_missing_imports)
elseif action.command == "typescript.custom.remove_unused" then
pcall(ts_api.remove_unused)
else
if action.edit or type(action.command) == "table" then
if action.edit then
vim.lsp.util.apply_workspace_edit(action.edit, "utf-8")
end
if type(action.command) == "table" then
vim.lsp.buf.execute_command(action.command)
end
end
end
end)
end)
end, { buffer = bufnr, desc = "Code Actions" })
end
require("typescript-tools").setup(vim.tbl_deep_extend("force", lsp_common, {
settings = {
separate_diagnostic_server = true,
publish_diagnostic_on = "insert_leave",
expose_as_code_action = {},
},
}))
end,
}

View file

@ -2,11 +2,13 @@ local M = {
"neovim/nvim-lspconfig",
dependencies = {
"saghen/blink.cmp",
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
"WhoIsSethDaniel/mason-tool-installer.nvim",
{ "j-hui/fidget.nvim", opts = {} },
require("plugins.lsp.extras.lazydev"),
require("plugins.lsp.extras.gopher"),
require("plugins.lsp.extras.typescript"),
},
}
@ -93,6 +95,9 @@ function M.config()
local ensure_installed = {
-- LSP servers
"gopls",
"jsonls",
"lua_ls",
"yamlls",
"graphql-language-service-cli",
"html-lsp",
"htmx-lsp",
@ -101,6 +106,7 @@ function M.config()
"omnisharp",
"yaml-language-server",
"svelte-language-server",
"vtsls",
-- Formatters
"prettierd",
@ -115,27 +121,12 @@ function M.config()
"templ",
}
-- Install missing tools
local registry = require("mason-registry")
for _, tool in ipairs(ensure_installed) do
if not registry.is_installed(tool) then
vim.cmd("MasonInstall " .. tool)
end
end
require("mason-tool-installer").setup({ ensure_installed = ensure_installed })
-- Set up Mason LSP config
require("mason-lspconfig").setup({
automatic_installation = true,
ensure_installed = {
"gopls",
"html",
"htmx",
"jsonls",
"lua_ls",
"omnisharp",
"yamlls",
"graphql",
},
ensure_installed = {}, -- explicitly set to an empty table (populated via mason-tool-installer)
automatic_installation = false,
handlers = {
function(server_name)
local base_opts = M.get_common_config()

View file

@ -28,6 +28,54 @@ local M = {
require("mini.surround").setup({})
end,
},
{
"echasnovski/mini.statusline",
version = false,
config = function()
require("mini.statusline").setup({})
MiniStatusline.section_codeium = function(args)
args = args or {}
local trunc_width = args.trunc_width or 75
if MiniStatusline.is_truncated(trunc_width) then
return ""
end
local status = vim.fn["codeium#GetStatusString"]()
if status and status ~= "" then
local icon = args.icon or "󰘦 "
return icon .. status
end
return ""
end
MiniStatusline.config.content.active = function()
local mode, mode_hl = MiniStatusline.section_mode({ trunc_width = 120 })
local git = MiniStatusline.section_git({ trunc_width = 40 })
local diff = MiniStatusline.section_diff({ trunc_width = 75 })
local diagnostics = MiniStatusline.section_diagnostics({ trunc_width = 75 })
local lsp = MiniStatusline.section_lsp({ trunc_width = 75 })
local filename = MiniStatusline.section_filename({ trunc_width = 140 })
local fileinfo = MiniStatusline.section_fileinfo({ trunc_width = 120 })
local location = MiniStatusline.section_location({ trunc_width = 75 })
local search = MiniStatusline.section_searchcount({ trunc_width = 75 })
local codeium = MiniStatusline.section_codeium({ trunc_width = 75 })
return MiniStatusline.combine_groups({
{ hl = mode_hl, strings = { mode } },
{ hl = "MiniStatuslineDevinfo", strings = { git, diff, diagnostics, lsp } },
"%<", -- Mark general truncate point
{ hl = "MiniStatuslineFilename", strings = { filename } },
"%=", -- End left alignment
{ hl = "MiniStatuslineFileinfo", strings = { fileinfo } },
{ hl = mode_hl, strings = { codeium, search, location } },
})
end
end,
},
}
return M

28
lua/plugins/obsidian.lua Normal file
View file

@ -0,0 +1,28 @@
return {
"epwalsh/obsidian.nvim",
version = "*", -- recommended, use latest release instead of latest commit
lazy = true,
ft = "markdown",
-- Replace the above line with this if you only want to load obsidian.nvim for markdown files in your vault:
-- event = {
-- -- If you want to use the home shortcut '~' here you need to call 'vim.fn.expand'.
-- -- E.g. "BufReadPre " .. vim.fn.expand "~" .. "/my-vault/*.md"
-- -- refer to `:h file-pattern` for more examples
-- "BufReadPre path/to/my-vault/*.md",
-- "BufNewFile path/to/my-vault/*.md",
-- },
dependencies = {
-- Required.
"nvim-lua/plenary.nvim",
-- see below for full list of optional dependencies 👇
},
opts = {
workspaces = {
{
name = "Vault",
path = "~/Documents/Vault/",
},
},
},
}

View file

@ -61,9 +61,16 @@ M.config = function()
},
})
vim.keymap.set("n", "-", function()
require("oil").open()
end)
nmap("-", require("oil").open, { desc = "Open parent directory" })
vim.api.nvim_create_autocmd("User", {
pattern = "OilActionsPost",
callback = function(event)
if event.data.actions.type == "move" then
Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url)
end
end,
})
end
return M

View file

@ -1,11 +1,9 @@
return {
dir = "/home/forbi/Dev/marianozunino/presenterm.nvim",
"marianozunino/presenterm.nvim",
config = function()
require("presenterm").setup({
patterns = {
"*.presenterm",
"*.pterm",
"*.md",
},
auto_launch = true,
terminal_cmd = "kitty --title 'Presenterm: {title}' --override font_size=18 {cmd}",

58
lua/plugins/qol.lua Normal file
View file

@ -0,0 +1,58 @@
return {
"folke/snacks.nvim",
priority = 1000,
config = function()
local snacks = require("snacks")
snacks.setup({
bigfile = { enabled = true },
debug = { enabled = true },
image = { enabled = true },
indent = { enabled = true, animate = { enabled = false } },
rename = { enabled = true },
notifier = { enabled = true },
scroll = {
enabled = true,
animate = {
duration = { step = 5, total = 50 },
easing = "linear",
},
},
dashboard = {
preset = {
keys = function()
return {
{ icon = "", key = "q", desc = "Quit", action = "<cmd>qa<CR>" },
{ icon = "󱇧", key = "e", desc = "New Buffer", action = "<cmd>ene<CR>" },
}
end,
header = table.concat({
[[ █ █ ]],
[[ █ ██ ]],
[[ ████ ]],
[[ ██ ███ ]],
[[ █ █ ]],
[[ ]],
[[ n e o v i m ]],
}, "\n"),
},
sections = {
{
section = "header",
},
{ title = "MRU ", file = vim.fn.fnamemodify(".", ":~"), padding = 1 },
{ section = "recent_files", cwd = true, limit = 10, padding = 1 },
{ title = "GMRU", padding = 1 },
{ section = "recent_files", limit = 5, padding = 1 },
{ title = "Sessions", padding = 1 },
{ section = "projects", padding = 1 },
{ section = "keys", gap = 0, padding = 1 },
},
},
})
nmap("<leader>.", snacks.scratch.open, { desc = "Toggle Scratch Buffer" })
nmap("<leader>,", snacks.scratch.select, { desc = "Select Scratch Buffer" })
-- Show notifier history
nmap("<leader>ns", snacks.notifier.show_history, { desc = "Show notifier history" })
end,
}

View file

@ -1,17 +0,0 @@
local M = {
"goolord/alpha-nvim",
}
M.config = function()
local startify = require("alpha.themes.startify")
startify.section.top_buttons.val = {
startify.button("e", "New file", "<cmd>ene <CR>"),
startify.button("q", "Quit", "<cmd>q <CR>"),
}
startify.section.bottom_buttons.val = {}
require("alpha").setup(startify.config)
end
return M

View file

@ -1,9 +0,0 @@
local M = {
"stevearc/dressing.nvim",
}
M.config = function()
require("dressing").setup()
end
return M

View file

@ -1,11 +0,0 @@
local M = {
require("plugins.ui.colors"),
require("plugins.ui.alpha"),
require("plugins.ui.dressing"),
require("plugins.ui.whichkey"),
require("plugins.ui.noice"),
require("plugins.ui.scroll"),
require("plugins.ui.status"),
}
return M

View file

@ -1,92 +0,0 @@
local M = {
"folke/noice.nvim",
event = "VeryLazy",
dependencies = {
"MunifTanjim/nui.nvim",
},
}
M.config = function()
local noice = require("noice")
noice.setup({
routes = {
{
filter = {
event = "msg_show",
any = {
{ find = "%d+L, %d+B" },
{ find = "; after #%d+" },
{ find = "; before #%d+" },
{ find = "%d fewer lines" },
{ find = "%d more lines" },
},
},
opts = { skip = true },
},
},
lsp = {
progress = { enabled = true },
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
hover = { silent = true },
signature = {
auto_open = { throttle = vim.api.nvim_get_option_value("updatetime", { scope = "global" }) },
},
},
cmdline = {
format = {
cmdline = { icon = "" },
search_down = { icon = " " },
search_up = { icon = " " },
},
},
messages = {
enabled = false,
},
popupmenu = { enabled = true },
presets = {
bottom_search = true,
long_message_to_split = true,
lsp_doc_border = true,
},
views = {
split = {
enter = true,
size = "25%",
win_options = {
signcolumn = "no",
number = false,
relativenumber = false,
list = false,
wrap = false,
},
},
popup = { border = { style = "rounded" } },
hover = {
border = { style = "rounded" },
position = { row = 2, col = 2 },
},
mini = {
timeout = 1000,
position = { row = 2, col = "99%" }, -- Positions at top-right
border = { style = "rounded" },
win_options = {
winblend = vim.api.nvim_get_option_value("winblend", { scope = "global" }),
},
},
cmdline_popup = { border = { style = "rounded" } },
confirm = {
border = {
style = "rounded",
padding = { 0, 1 },
},
},
},
})
end
return M

View file

@ -1,41 +0,0 @@
local M = {
"karb94/neoscroll.nvim",
}
M.config = function()
require("neoscroll").setup({
-- All these keys will be mapped to their corresponding default scrolling animation
mappings = { "<C-u>", "<C-d>" },
hide_cursor = true, -- Hide cursor while scrolling
stop_eof = true, -- Stop at <EOF> when scrolling downwards
respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further
easing_function = nil, -- Default easing function
pre_hook = nil, -- Function to run before the scrolling animation starts
post_hook = nil, -- Function to run after the scrolling animation ends
performance_mode = false, -- Disable "Performance Mode" on all buffers.
})
local neoscroll = require("neoscroll")
local t = {
["<C-u>"] = function()
neoscroll.ctrl_u({ duration = 50 })
end,
["<C-k>"] = function()
neoscroll.ctrl_u({ duration = 50 })
end,
["<C-d>"] = function()
neoscroll.ctrl_d({ duration = 50 })
end,
["<C-j>"] = function()
neoscroll.ctrl_d({ duration = 50 })
end,
}
local modes = { "n", "v", "x" }
for key, func in pairs(t) do
vim.keymap.set(modes, key, func)
end
end
return M

View file

@ -1,66 +0,0 @@
local M = {
"nvim-lualine/lualine.nvim",
}
function M.config()
local lualine = require("lualine")
local mode = "mode"
local filetype = { "filetype", icon_only = true }
local diagnostics = {
"diagnostics",
sources = { "nvim_diagnostic" },
sections = { "error", "warn", "info", "hint" },
symbols = {
error = icons.diagnostics.Error,
hint = icons.diagnostics.Hint,
info = icons.diagnostics.Info,
warn = icons.diagnostics.Warning,
},
colored = true,
update_in_insert = false,
always_visible = false,
}
local diff = {
"diff",
source = function()
local gitsigns = vim.b.gitsigns_status_dict
if gitsigns then
return {
added = gitsigns.added,
modified = gitsigns.changed,
removed = gitsigns.removed,
}
end
end,
symbols = {
added = icons.git.LineAdded .. " ",
modified = icons.git.LineModified .. " ",
removed = icons.git.LineRemoved .. " ",
},
colored = true,
always_visible = false,
}
lualine.setup({
options = {
theme = "auto",
globalstatus = true,
section_separators = "",
component_separators = "",
disabled_filetypes = { statusline = { "dashboard", "lazy", "alpha" } },
},
sections = {
lualine_a = { mode },
lualine_b = {},
lualine_c = { "filename" },
lualine_x = { diff, diagnostics, filetype },
lualine_y = {},
lualine_z = {},
},
})
end
return M