initial import

This commit is contained in:
Fábio André Damas 2025-03-27 08:18:20 +00:00
commit f9f53656f7
32 changed files with 1064 additions and 0 deletions

21
lua/plugins/blink.lua Normal file
View file

@ -0,0 +1,21 @@
return {
{
'saghen/blink.cmp',
dependencies = 'rafamadriz/friendly-snippets',
version = '*',
---@module 'blink.cmp'
---@type blink.cmp.Config
opts = {
keymap = { preset = 'default' },
appearance = {
use_nvim_cmp_as_default = true,
nerd_font_variant = 'mono'
},
signature = { enabled = true },
completion = {
documentation = { auto_show = true, auto_show_delay_ms = 500 },
},
},
opts_extend = { "sources.default" },
} }

154
lua/plugins/commander.lua Normal file
View file

@ -0,0 +1,154 @@
return {
{
"FeiyouG/commander.nvim",
dependencies = { "nvim-telescope/telescope.nvim" },
init = function()
require("commander").setup({
integration = {
telescope = {
enable = true,
theme = require("telescope.themes").commander,
},
lazy = {
enable = true,
set_plugin_name_as_cat = true,
},
},
})
require("commander").add({
{
desc = "Find git files",
cmd = ":FzfLua git_files<CR>",
},
{
cmd = ":FzfLua files<CR>",
desc = "Find files",
},
{
cmd = ":FzfLua buffers<CR>",
desc = "Buffer list",
},
{
cmd = ":FzfLua quickfix<CR>",
desc = "Quickfix",
},
{
cmd = ":FzfLua quickfix_stack<CR>",
desc = "Quickfix History",
},
{
cmd = ":FzfLua command_history<CR>",
desc = "Command History",
},
{
cmd = ":FzfLua git_commits<CR>",
desc = "Git commits",
},
{
cmd = ":FzfLua git_bcommits<CR>",
desc = "Git buffer commits",
},
{
cmd = ":FzfLua git_branches<CR>",
desc = "Git branches",
},
{
cmd = ":GV<CR>",
desc = "Git log",
},
{
cmd = ":Git blame",
desc = "Git blame",
},
{
cmd = ":DiffviewOpen<CR>",
desc = "Diff view",
},
{
cmd = ":UndotreeToggle<CR>",
desc = "Undotree",
},
{
cmd = ":EslintFixAll<CR>",
desc = "ESLint: autofix all problems",
},
{
cmd = ":'<,'>sort",
desc = "Sort",
},
{
cmd = ":Fidget history<CR>",
desc = "Error/notification history",
},
{
cmd = ":lua Snacks.terminal.toggle()<CR>",
desc = "Terminal",
keys = { "n", "<leader>t" },
set = false,
},
{
cmd = ":GitConflicts<CR>",
desc = "Git conflicts to quickfix",
},
{
cmd = ":LastCommitToQuickfix<CR>",
desc = "Last Commit To quickfix",
},
{
cmd = ":ForkToQuickfix<CR>",
desc = "Branch commits to quickfix",
},
{
cmd = ":Trouble diagnostics toggle focus=false filter.buf=0<CR>",
desc = "Diagnostic window (current buffer)",
},
{
cmd = ":Trouble symbols toggle pinned=true results.win.relative=win results.win.position=right<CR>",
desc = "Symbols",
},
{
cmd = ":PackageInfoShow<CR>",
desc = "Show package.json versions",
},
{
cmd = ":PackageInfoHide<CR>",
desc = "Hide package.json versions",
},
{
cmd = ":PackageInfoUpdate<CR>",
desc = "Update package.json dependency",
},
{
cmd = ":CoAuthor<CR>",
desc = "Add Git CoAuthor",
},
{
cmd = ":TailwindConcealToggle<CR>",
desc = "Toggle conceal tailwind classes",
},
})
vim.api.nvim_create_user_command("Commander", function(args)
require("commander").show()
end, {
desc = "Show commands",
nargs = "*",
})
vim.api.nvim_create_user_command("LastCommitToQuickfix", function(args)
require("utils.telescope").last_commit_to_quickfix()
end, {
desc = "Last Commit To quickfix",
nargs = "?",
})
vim.api.nvim_create_user_command("ForkToQuickfix", function(args)
require("utils.telescope").fork_to_quickfix(args.fargs[1])
end, {
desc = "Branch changes to quickfix",
nargs = "?",
})
end,
},
}

View file

@ -0,0 +1,5 @@
return {{
"folke/flash.nvim",
event = "VeryLazy",
opts = {},
}}

14
lua/plugins/fzf-lua.lua Normal file
View file

@ -0,0 +1,14 @@
return {
{
"ibhagwan/fzf-lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("fzf-lua").setup({
keymap = {
fzf = {
["ctrl-q"] = "select-all+accept",
},
},
})
end
} }

50
lua/plugins/glance.lua Normal file
View file

@ -0,0 +1,50 @@
return {
"dnlhc/glance.nvim",
config = function()
local glance = require("glance")
local actions = glance.actions
glance.setup({
border = {
enable = true,
},
folds = {
fold_closed = "",
fold_open = "",
folded = false, -- Automatically fold list on startup
},
mappings = {
list = {
["j"] = actions.next, -- Bring the cursor to the next item in the list
["k"] = actions.previous, -- Bring the cursor to the previous item in the list
["<Down>"] = actions.next,
["<Up>"] = actions.previous,
["J"] = actions.next_location,
["K"] = actions.previous_location,
["<C-u>"] = actions.preview_scroll_win(5),
["<C-d>"] = actions.preview_scroll_win(-5),
["v"] = actions.jump_vsplit,
["s"] = actions.jump_split,
["t"] = actions.jump_tab,
["<CR>"] = actions.jump,
["<TAB>"] = actions.enter_win("preview"), -- Focus preview window
["q"] = actions.close,
["Q"] = actions.close,
["<Esc>"] = actions.close,
["<C-q>"] = actions.quickfix,
-- ['<Esc>'] = false -- disable a mapping
},
preview = {
["Q"] = actions.close,
["q"] = actions.close,
["J"] = actions.next_location,
["K"] = actions.previous_location,
["<TAB>"] = actions.enter_win("list"), -- Focus list window
},
},
winbar = {
enable = false,
},
use_trouble_qf = true,
})
end
}

86
lua/plugins/hurl.nvim.lua Normal file
View file

@ -0,0 +1,86 @@
local function load_env(file)
local env_vars = {}
local env_file = io.open(file, "r")
if not env_file then return env_vars end
for line in env_file:lines() do
local key, value = line:match("([^=]+)=([^=]+)")
if key and value then
env_vars[key] = value
vim.fn.setenv(key, value) -- Optionally set it in Neovim's environment
end
end
env_file:close()
return env_vars
end
return {
"jellydn/hurl.nvim",
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
-- Optional, for markdown rendering with render-markdown.nvim
{
'MeanderingProgrammer/render-markdown.nvim',
opts = {
file_types = { "markdown" },
},
ft = { "markdown" },
},
},
ft = "hurl",
opts = {
-- Show debugging info
debug = false,
-- Show notification on run
show_notification = false,
-- Show response in popup or split
mode = "split",
-- Default formatter
formatters = {
json = { 'jq' }, -- Make sure you have install jq in your system, e.g: brew install jq
html = {
'prettier', -- Make sure you have install prettier in your system, e.g: npm install -g prettier
'--parser',
'html',
},
xml = {
'tidy', -- Make sure you have installed tidy in your system, e.g: brew install tidy-html5
'-xml',
'-i',
'-q',
},
},
mappings = {
close = 'q', -- Close the response popup or split view
next_panel = '<C-n>', -- Move to the next response popup window
prev_panel = '<C-p>', -- Move to the previous response popup window
},
fixture_vars = {
{
name = 'CARBONCENTRAL_FIREBASE_TOKEN',
callback = function()
local vars = load_env("vars.env")
local firebaseUrl = vars["FIREBASE_URL"]
local firebaseKey = vars["FIREBASE_KEY"]
local email = vars["FIREBASE_EMAIL"]
local password = vars["FIREBASE_PASSWORD"]
local h = io.popen(
"curl --header \"Content-Type: application/json\" --request POST --data '{\"returnSecureToken\":true,\"email\":\"" ..
email ..
"\",\"password\":\"" ..
password ..
"\",\"clientType\":\"CLIENT_TYPE_WEB\"}' " .. firebaseUrl .. "?key=" ..
firebaseKey)
local rawdata = h:read("all")
h:close()
local t = vim.json.decode(rawdata)
return t["idToken"]
end
},
}
},
}

86
lua/plugins/lsp.lua Normal file
View file

@ -0,0 +1,86 @@
local augroup = vim.api.nvim_create_augroup("LspFormatting", {})
local format_on_save = function(client, bufnr)
if client.supports_method("textDocument/formatting") then
vim.api.nvim_clear_autocmds({
group = augroup,
buffer = bufnr,
})
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
buffer = bufnr,
callback = function()
vim.lsp.buf.format({
bufnr = bufnr,
async = false,
})
end,
})
end
end
local configs = {}
for _, v in ipairs(vim.api.nvim_get_runtime_file('lsp/*', true)) do
local name = vim.fn.fnamemodify(v, ':t:r')
configs[name] = true
end
vim.lsp.enable(vim.tbl_keys(configs))
vim.api.nvim_create_autocmd('LspAttach', {
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
if not client then return end
if vim.bo.filetype == "lua" or client.name == "jdtls" then
-- Format the current buffer on save
vim.api.nvim_create_autocmd('BufWritePre', {
buffer = args.buf,
callback = function()
vim.lsp.buf.format({ bufnr = args.buf, id = client.id })
end,
})
end
end,
})
vim.diagnostic.config({
virtual_lines = true
})
return {
{
"williamboman/mason.nvim",
opts = {
tools_to_install = {
"lua-language-server", "vtsls", "ruff", "mypy", "black", "pyright", "tailwindcss-language-server",
"eslint-lsp", "lemminx", "gopls"
}
},
config = function(_, opts)
require("mason").setup()
local mason_registry = require("mason-registry")
mason_registry.refresh()
for _, tool in pairs(opts.tools_to_install) do
local package = mason_registry.get_package(tool)
if not package:is_installed() then
package:install()
end
end
end
},
{
"nvimtools/none-ls.nvim",
config = function(_, opts)
local null_ls = require("null-ls")
null_ls.setup({
on_attach = function(client, bufnr)
format_on_save(client, bufnr)
end,
sources = {
null_ls.builtins.formatting.prettier,
},
})
end
}
}

View file

@ -0,0 +1,44 @@
return
{
'nvimdev/lspsaga.nvim',
config = function()
require('lspsaga').setup({
symbol_in_winbar = {
enable = true,
hide_keyboard = true,
},
lightbulb = {
enable = true,
enable_in_insert = true,
cache_code_action = true,
sign = true,
update_time = 150,
sign_priority = 20,
virtual_text = false,
},
diagnostic = {
extend_relatedInformation = true,
},
finder = {
keys = {
vsplit = "s",
split = "v",
toggle_or_open = "<CR>",
shuttle = "<TAB>",
},
},
outline = {
keys = {
toggle_or_jump = "<CR>",
},
},
implement = {
enable = false,
},
})
end,
dependencies = {
'nvim-treesitter/nvim-treesitter',
'nvim-tree/nvim-web-devicons',
}
}

View file

@ -0,0 +1,3 @@
return {
{ 'echasnovski/mini.files', version = '*', opts = {} }
}

View file

@ -0,0 +1,3 @@
return {
{ 'echasnovski/mini.statusline', version = '*',opts = {} },
}

24
lua/plugins/namu.nvim.lua Normal file
View file

@ -0,0 +1,24 @@
return {
{
"bassamsdata/namu.nvim",
config = function()
require("namu").setup({
-- Enable the modules you want
namu_symbols = {
enable = true,
options = {}, -- here you can configure namu
},
-- Optional: Enable other modules if needed
ui_select = { enable = false }, -- vim.ui.select() wrapper
colorscheme = {
enable = false,
options = {
-- NOTE: if you activate persist, then please remove any vim.cmd("colorscheme ...") in your config, no needed anymore
persist = true, -- very efficient mechanism to Remember selected colorscheme
write_shada = false, -- If you open multiple nvim instances, then probably you need to enable this
},
},
})
end,
}
}

View file

@ -0,0 +1,18 @@
return {
"nvim-neo-tree/neo-tree.nvim",
branch = "v3.x",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-tree/nvim-web-devicons",
"MunifTanjim/nui.nvim",
},
opts = {
close_if_last_window = true,
filesystem = {
follow_current_file = {
enabled = true,
leave_dirs_open = true,
},
},
},
}

View file

@ -0,0 +1,7 @@
return {
{
"windwp/nvim-autopairs",
event = "InsertEnter",
opts = {},
}
}

View file

@ -0,0 +1,14 @@
return { {
"folke/snacks.nvim",
priority = 1000,
lazy = false,
opts = {
notifier = { enabled = true },
terminal = { enabled = true },
indent = { enabled = true, only_scope = true, only_current = false },
git = { enabled = true },
bufdelete = { enabled = true },
},
} }

View file

@ -0,0 +1,9 @@
return {
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
init = function()
require("tokyonight").setup({transparent = true, dim_inactive = true, lualine_bold = true})
vim.cmd("colo tokyonight-night")
end
}

View file

@ -0,0 +1,32 @@
return {
'nvim-treesitter/nvim-treesitter',
run = ':TSUpdate',
config = function()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = {
"c",
"lua",
"vim",
"vimdoc",
"query",
"elixir",
"heex",
"javascript",
"html",
"markdown",
"markdown_inline",
"html",
"jsdoc",
"hurl",
"typescript"
},
sync_install = false,
highlight = { enable = true },
indent = { enable = true },
auto_install = true,
})
end
}

View file

@ -0,0 +1 @@
return {{"tpope/vim-fugitive"}}

View file

@ -0,0 +1,301 @@
return {
{
"folke/which-key.nvim",
init = function()
local wk = require("which-key")
wk.add({
{ "<A-j>", ":m .+1<cr>==", desc = "Move line down" },
{ "<A-k>", ":m .-2<cr>==", desc = "Move line up" },
{
mode = "v",
{ "<A-j>", ":m '>+1<CR>gv=gv", desc = "Move line down" },
{ "<A-k>", ":m '<-2<CR>gv=gv", desc = "Move line up" },
},
{
mode = "i",
{ "<A-j>", "<Esc>:m .+1<CR>==gi", desc = "Move line down" },
{ "<A-k>", "<Esc>:m .-2<CR>==gi", desc = "Move line up" },
},
{ "<c-\\>", "<cmd>Commander<cr>", desc = "Commander" },
{ "<C-p>", "<cmd>FzfLua git_files<cr>", desc = "Find git files" },
{ ",", group = "Search" },
{ ",p", "<cmd>FzfLua files<cr>", desc = "Files files" },
{ ",b", "<cmd>FzfLua buffers<cr>", desc = "Buffer List" },
{ ",q", "<cmd>FzfLua quickfix<cr>", desc = "Quickfix" },
{ ",c", "<cmd>FzfLua command_history<cr>", desc = "Quickfix" },
{ ",e", ":e **/*<C-z><S-Tab>", desc = "Open with autocomplete" },
{ ",f", ":find **/*<C-z><S-Tab>", desc = "Find with autocomplete" },
{ "<leader>p", group = "Search" },
{ "<leader>pc", "<cmd>FzfLua git_commits<cr>", desc = "Git commits" },
{ "<leader>pf", "<cmd>FzfLua git_bcommits<cr>", desc = "Git file history" },
{ "<leader>pb", "<cmd>FzfLua git_branches<cr>", desc = "Git branches" },
{ "<leader>ph", "<cmd>FzfLua git_statuscr>", desc = "Git status" },
{
"<leader>ps",
"<cmd>FzfLua live_grep<cr>",
desc = "Project search"
},
-- {
-- "<leader>ds",
-- function()
-- require("utils.telescope").search_dotfiles()
-- end,
-- desc = "Search dot files 🔭",
-- },
{ "K", "<cmd>Lspsaga hover_doc<cr>", desc = "Show documentation" },
{ "<C-k>", "<cmd>Lspsaga hover_doc ++keep<cr>", desc = "Show documentation (keep)" },
{ "<f2>", "<cmd>Lspsaga rename<cr>", desc = "Rename variable" },
{ "g", group = "Go to" },
{ "gd", ":Lspsaga goto_definition<cr>", desc = "Go to definition" },
{
"gD",
function()
vim.lsp.buf.declaration()
end,
desc = "Go to declaration",
},
{ "gt", ":Lspsaga goto_type_definition<cr>", desc = "Go to type definition" },
{ "gh", ":Lspsaga finder<cr>", desc = "LSP Finder" },
{ "gH", ":Lspsaga finder ++normal<cr>", desc = "LSP Finder (keep)" },
{ "gj", ":Lspsaga diagnostic_jump_next<cr>", desc = "Next diagnostic message" },
{ "gk", ":Lspsaga diagnostic_jump_prev<cr>", desc = "Previous diagnostic message" },
{ "<localleader>a", group = "Local File Actions" },
{ "<localleader>ac", "<cmd>Lspsaga code_action<cr>", desc = "Code action" },
{
"<localleader>ag",
function()
vim.diagnostic.open_float(0, { scope = "line", focusable = false })
end,
desc = "Show line diagnostics",
},
{
"<localleader>ad",
"<cmd>Glance definitions<cr>",
desc = "Definitions",
},
{
"<localleader>ar",
"<cmd>Glance references<cr>",
desc = "References",
},
{
"<localleader>ai",
"<cmd>Glance implementations<cr>",
desc = "References",
},
{
"<localleader>at",
"<cmd>Glance type_definitions<cr>",
desc = "Type definitions",
},
{
"<localleader>aI",
"<cmd>Lspsaga incoming_calls<cr>",
desc = "Incoming calls",
},
{
"<localleader>aO",
"<cmd>Lspsaga outgoing_calls<cr>",
desc = "Outgoing calls",
},
{
"<localleader>O",
"<cmd>Lspsaga outline<cr>",
desc = "Toggle Outline",
icon = "󰷐",
},
{
"<leader>g",
group = "Git",
},
{
"<leader>gd",
"<cmd>DiffviewOpen<cr>",
desc = "Diff view",
},
{
"»",
"]",
noremap = false,
},
{
"«",
"[",
noremap = false,
},
{ "<localleader>h", group = "git signs" },
{
"<localleader>hs",
function()
require("gitsigns").stage_hunk()
end,
desc = "Stage hunk",
},
{
"<localleader>hu",
function()
require("gitsigns").undo_stage_hunk()
end,
desc = "Undo stage hunk",
},
{
"<localleader>hv",
function()
require("gitsigns").preview_hunk()
end,
desc = "Preview hunk",
},
{
"<localleader>hb",
function()
require("gitsigns").blame_line()
end,
desc = "Blame line",
},
{
"<localleader>hR",
function()
require("gitsigns").reset_buffer()
end,
desc = "Reset buffer",
},
{
"<localleader>hr",
function()
require("gitsigns").reset_hunk()
end,
desc = "Reset hunk",
},
{
"<localleader>hS",
function()
require("gitsigns").stage_buffer()
end,
desc = "Stage buffer",
},
{
"<localleader>hU",
function()
require("gitsigns").reset_buffer_index()
end,
desc = "Reset buffer index",
},
{
mode = "v",
{
"<localleader>hs",
function()
require("gitsigns").stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
end,
desc = "Stage hunk",
},
{
"<localleader>hr",
function()
require("gitsigns").reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
end,
desc = "Reset hunk",
},
},
{
"]c",
function()
if vim.wo.diff then
vim.cmd.normal({ "]c", bang = true })
else
vim.schedule(function()
require("gitsigns").nav_hunk("next")
end)
end
end,
desc = "Next hunk",
},
{
"[c",
function()
if vim.wo.diff then
vim.cmd.normal({ "[c", bang = true })
else
vim.schedule(function()
require("gitsigns").nav_hunk("prev")
end)
end
end,
desc = "Previous hunk",
},
{ "<leader>u", "<cmd>UndotreeToggle<cr>", desc = "Undotree", icon = "" },
{ "<leader>c", group = "quickfix" },
{ "<leader>co", "<cmd>copen<cr>", desc = "Open" },
{ "<leader>cf", "<cmd>cfirst<cr>", desc = "First result" },
{ "<leader>cl", "<cmd>clast<cr>", desc = "Last result" },
{ "<leader>cn", "<cmd>cnext<cr>", desc = "Next result" },
{ "<leader>cp", "<cmd>cprevious<cr>", desc = "Previous result" },
{ "<leader>cc", "<cmd>cclose<cr>", desc = "Close" },
{ "<localleader>c", group = "Location List" },
{ "<localleader>co", "<cmd>lopen<cr>", desc = "Open" },
{ "<localleader>cf", "<cmd>lfirst<cr>", desc = "First result" },
{ "<localleader>cl", "<cmd>llast<cr>", desc = "Last result" },
{ "<localleader>cn", "<cmd>lnext<cr>", desc = "Next result" },
{ "<localleader>cp", "<cmd>lprevious<cr>", desc = "Previous result" },
{ "<localleader>cc", "<cmd>lclose<cr>", desc = "Close" },
{ "<C-n>", "<cmd>Neotree toggle<cr>", desc = "Toggle neo-tree" },
{ "<leader>t", "<cmd>lua Snacks.terminal.toggle()<cr>", desc = "Toggle Terminal" },
{ mode = { "t" }, { "<leader>t", "<cmd>lua Snacks.terminal.toggle()<cr>", desc = "Toggle Terminal" } },
{
mode = { "n", "x", "o" },
{
"s",
function()
require("flash").jump()
end,
desc = "Flash ⚡",
},
{
"S",
function()
require("flash").treesitter()
end,
desc = "Flash Treesitter ⚡",
},
},
{
mode = { "o", "x" },
{
"R",
function()
require("flash").treesitter_search()
end,
desc = "Flash Treesitter search ⚡",
},
},
{
mode = "c",
{
"<C-s>",
function()
require("flash").toggle()
end,
desc = "Toggle Flash Search ⚡",
},
},
})
end,
}
}