added themes, niri waybar updat, nvim plugins updates and additions
This commit is contained in:
128
nvim/.config/nvim/after/ftplugin/mail.lua
Normal file
128
nvim/.config/nvim/after/ftplugin/mail.lua
Normal file
@@ -0,0 +1,128 @@
|
||||
-- Helper function to extract clean email address
|
||||
local function extract_email(address_string)
|
||||
-- Match email in angle brackets: "Name <email@example.com>"
|
||||
local email = address_string:match("<([^>]+)>")
|
||||
if email then
|
||||
return email
|
||||
end
|
||||
|
||||
-- Match standalone email: "email@example.com"
|
||||
email = address_string:match("([%w%._%+-]+@[%w%._%+-]+)")
|
||||
if email then
|
||||
return email
|
||||
end
|
||||
|
||||
-- Fallback: return as-is if no pattern matches
|
||||
return address_string
|
||||
end
|
||||
|
||||
-- Option 2: Omnifunc completion
|
||||
function _G.mail_complete(findstart, base)
|
||||
if findstart == 1 then
|
||||
-- Find start of word
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local col = vim.fn.col('.')
|
||||
local line_to_cursor = line:sub(1, col - 1)
|
||||
|
||||
-- Only on header lines
|
||||
if not line_to_cursor:match("^%s*[ToCcBcFrom]+:%s*") then
|
||||
return -1
|
||||
end
|
||||
|
||||
-- Find start of current address
|
||||
local start = line_to_cursor:reverse():find("[%s,]")
|
||||
if start then
|
||||
return col - start
|
||||
else
|
||||
return line_to_cursor:find(":") or 0
|
||||
end
|
||||
else
|
||||
-- Get completions
|
||||
local handle = io.popen(string.format('abook --mutt-query "%s" 2>/dev/null | tail -n +2', base))
|
||||
if not handle then
|
||||
return {}
|
||||
end
|
||||
|
||||
local result = handle:read("*a")
|
||||
handle:close()
|
||||
|
||||
local matches = {}
|
||||
for address in result:gmatch("[^\r\n]+") do
|
||||
if address ~= "" then
|
||||
-- Extract clean email only
|
||||
local clean_email = extract_email(address)
|
||||
table.insert(matches, clean_email)
|
||||
end
|
||||
end
|
||||
|
||||
return matches
|
||||
end
|
||||
end
|
||||
|
||||
-- Set omnifunc
|
||||
vim.bo.omnifunc = 'v:lua.mail_complete'
|
||||
|
||||
-- Map Tab to trigger completion on header lines
|
||||
vim.keymap.set('i', '<Tab>', function()
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
if line:match("^%s*[ToCcBcFrom]+:%s*") then
|
||||
return '<C-x><C-o>'
|
||||
else
|
||||
return '<Tab>'
|
||||
end
|
||||
end, { expr = true, buffer = true })
|
||||
|
||||
-- Option 3: Interactive fzf picker
|
||||
local function pick_email()
|
||||
-- Get all addresses
|
||||
local handle = io.popen('abook --mutt-query "" 2>/dev/null | tail -n +2')
|
||||
if not handle then
|
||||
vim.notify("Could not query abook", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
local addresses = {}
|
||||
local display_addresses = {}
|
||||
|
||||
for line in handle:lines() do
|
||||
if line ~= "" then
|
||||
local clean_email = extract_email(line)
|
||||
table.insert(addresses, clean_email)
|
||||
-- Show full format in picker, but insert clean email
|
||||
table.insert(display_addresses, line .. " → " .. clean_email)
|
||||
end
|
||||
end
|
||||
handle:close()
|
||||
|
||||
if #addresses == 0 then
|
||||
vim.notify("No addresses in abook", vim.log.levels.WARN)
|
||||
return
|
||||
end
|
||||
|
||||
-- Use vim.ui.select (works with fzf-lua if installed)
|
||||
vim.ui.select(display_addresses, {
|
||||
prompt = "Select recipient:",
|
||||
format_item = function(item)
|
||||
return item
|
||||
end,
|
||||
}, function(choice, idx)
|
||||
if choice and idx then
|
||||
local email = addresses[idx]
|
||||
-- Insert at cursor
|
||||
local row, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
local line = vim.api.nvim_get_current_line()
|
||||
local new_line = line:sub(1, col) .. email .. line:sub(col + 1)
|
||||
vim.api.nvim_set_current_line(new_line)
|
||||
-- Move cursor after inserted text
|
||||
vim.api.nvim_win_set_cursor(0, {row, col + #email})
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
-- Map Ctrl+f to pick email (Option 3)
|
||||
vim.keymap.set('i', '<C-f>', pick_email, { buffer = true, desc = "Pick email address with fzf" })
|
||||
|
||||
-- Optional: Map Ctrl+a for Tab completion manually (in case Tab doesn't work)
|
||||
vim.keymap.set('i', '<C-a>', '<C-x><C-o>', { buffer = true, desc = "Trigger address completion" })
|
||||
```
|
||||
im.keymap.set("i", "<C-a>", "<C-x><C-o>", { buffer = true, desc = "Trigger address completion" })
|
||||
@@ -14,9 +14,17 @@ if not vim.loop.fs_stat(lazypath) then
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
-- Enable spell check for mail files
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = "mail",
|
||||
callback = function()
|
||||
vim.opt_local.spell = true
|
||||
vim.opt_local.spelllang = "en_us,de" -- Add languages you need
|
||||
end,
|
||||
})
|
||||
-- Only enable spell checking for specific filetypes
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "markdown", "text", "gitcommit", "tex", "plaintext" },
|
||||
pattern = { "mail", "markdown", "text", "gitcommit", "tex", "plaintext" },
|
||||
callback = function()
|
||||
vim.opt_local.spell = true
|
||||
vim.opt_local.spelllang = "en_us,de"
|
||||
@@ -57,3 +65,10 @@ if vim.fn.filereadable(theme_file) == 1 then
|
||||
else
|
||||
vim.cmd.colorscheme("catppuccin") -- fallback
|
||||
end
|
||||
|
||||
vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
|
||||
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
|
||||
vim.api.nvim_set_hl(0, "NormalNC", { bg = "none" })
|
||||
vim.api.nvim_set_hl(0, "SignColumn", { bg = "none" })
|
||||
vim.api.nvim_set_hl(0, "FloatBorder", { bg = "none" })
|
||||
vim.api.nvim_set_hl(0, "LineNr", { bg = "none" })
|
||||
|
||||
@@ -1,44 +1,46 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "fb525166ccc30296fb3457441eb979113de46b00" },
|
||||
"R.nvim": { "branch": "main", "commit": "b7de6e6f43d79e31b077096ca0089fde85190f46" },
|
||||
"LuaSnip": { "branch": "master", "commit": "5a1e39223db9a0498024a77b8441169d260c8c25" },
|
||||
"R.nvim": { "branch": "main", "commit": "3db1971a81f8ad3d09aca698601abbe4cc909e37" },
|
||||
"barbecue": { "branch": "main", "commit": "cd7e7da622d68136e13721865b4d919efd6325ed" },
|
||||
"blink.cmp": { "branch": "main", "commit": "b19413d214068f316c78978b08264ed1c41830ec" },
|
||||
"catppuccin": { "branch": "main", "commit": "beaf41a30c26fd7d6c386d383155cbd65dd554cd" },
|
||||
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "cbc7b02bb99fae35cb42f514762b89b5126651ef" },
|
||||
"cmp-nvim-lua": { "branch": "main", "commit": "e3a22cb071eb9d6508a156306b102c45cd2d573d" },
|
||||
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||
"cmp-r": { "branch": "main", "commit": "70bfe8f4c062acc10266e24825439c009a0b1b89" },
|
||||
"conform.nvim": { "branch": "master", "commit": "8314f4c9e205e7f30b62147069729f9a1227d8bf" },
|
||||
"conform.nvim": { "branch": "master", "commit": "c2526f1cde528a66e086ab1668e996d162c75f4f" },
|
||||
"dashboard-nvim": { "branch": "master", "commit": "0775e567b6c0be96d01a61795f7b64c1758262f6" },
|
||||
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||
"dracula.nvim": { "branch": "main", "commit": "ae752c13e95fb7c5f58da4b5123cb804ea7568ee" },
|
||||
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
|
||||
"everforest": { "branch": "master", "commit": "b90025cc84dbb9c46df5a2ae540d3f01cf85af74" },
|
||||
"everforest": { "branch": "master", "commit": "b03a03148c8b34c24c96960b93da9c8883d11f54" },
|
||||
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"fzf-lua": { "branch": "main", "commit": "b8d1356b7120f5cf111709cb2fa504096248fb26" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "42d6aed4e94e0f0bbced16bbdcc42f57673bd75e" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" },
|
||||
"fzf-lua": { "branch": "main", "commit": "e5804f4924cf74ad03834c25988998a273ae0d7b" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "abf82a65f185bd54adc0679f74b7d6e1ada690c9" },
|
||||
"grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" },
|
||||
"gruvbox-mat": { "branch": "master", "commit": "e4359a2f80ef7275b080be180841c62ca8322757" },
|
||||
"harpoon": { "branch": "harpoon2", "commit": "87b1a3506211538f460786c23f98ec63ad9af4e5" },
|
||||
"gruvbox-mat": { "branch": "master", "commit": "790afe9dd085aa04eccd1da3626c5fa05c620e53" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"kanagawa.nvim": { "branch": "master", "commit": "aef7f5cec0a40dbe7f3304214850c472e2264b10" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
||||
"luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "fe661093f4b05136437b531e7f959af2a2ae66c8" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "c953789db7fd28eafe5eb5659846d34b5024b3cc" },
|
||||
"mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" },
|
||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "f3df514fff2bdd4318127c40470984137f87b62e" },
|
||||
"neogit": { "branch": "master", "commit": "d8bf9102692250193b855acd9025a826f1af2729" },
|
||||
"neogit": { "branch": "master", "commit": "73870229977fdd8747025820e15e98cfde787b9c" },
|
||||
"nightfox.nvim": { "branch": "main", "commit": "ba47d4b4c5ec308718641ba7402c143836f35aa9" },
|
||||
"noice.nvim": { "branch": "main", "commit": "7bfd942445fb63089b59f97ca487d605e715f155" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "c2a0dd0d931d0fb07665e1fedb1ea688da3b80b4" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "85bbfad83f804f11688d1ab9486b459e699292d6" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "da88697d7f45d16852c6b2769dc52387d1ddc45f" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||
"nvim-lint": { "branch": "master", "commit": "ca6ea12daf0a4d92dc24c5c9ae22a1f0418ade37" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "92ee7d42320edfbb81f3cad851314ab197fa324a" },
|
||||
"nvim-lint": { "branch": "master", "commit": "bcd1a44edbea8cd473af7e7582d3f7ffc60d8e81" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "3f58aeca0c6ece8a9fb8782ea3fcb6024f285be3" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f5eba192f39b453675d115351808bd51276d9de5" },
|
||||
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
||||
"nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" },
|
||||
@@ -47,22 +49,23 @@
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "6788013bb9cb784e606ada44206b0e755e4323d7" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "803353450c374192393f5387b6a0176d0972b848" },
|
||||
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||
"onedark-warm": { "branch": "master", "commit": "213c23ae45a04797572242568d5d51937181792d" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||
"portal.nvim": { "branch": "main", "commit": "77d9d53fec945bfa407d5fd7120f1b4f117450ed" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "8aafe2cbd89cd4090f573a98cab6b20366576fde" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "73a6ebc842cf81926eb1d424820b800f6f6a1227" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "d6b802552cbe7d643a3b6b31f419c248d1f1e220" },
|
||||
"render-markdown.nvim": { "branch": "main", "commit": "b3efd6408e4e4d66d6caaee0579e72b579bc0884" },
|
||||
"rose-pine": { "branch": "main", "commit": "cf2a288696b03d0934da713d66c6d71557b5c997" },
|
||||
"sonokai": { "branch": "master", "commit": "5c7f88c0cac01b32cfce634f2a28947ab426537f" },
|
||||
"snacks.nvim": { "branch": "main", "commit": "fe7cfe9800a182274d0f868a74b7263b8c0c020b" },
|
||||
"sonokai": { "branch": "master", "commit": "b023c5280b16fe2366f5e779d8d2756b3e5ee9c3" },
|
||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "3333a52ff548ba0a68af6d8da1e54f9cd96e9179" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "ad7d9580338354ccc136e5b8f0aa4f880434dcdc" },
|
||||
"tokyonight": { "branch": "main", "commit": "5da1b76e64daf4c5d410f06bcb6b9cb640da7dfd" },
|
||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||
"vim-test": { "branch": "master", "commit": "aa619692ff48a3cf3e6bdb893765039488d4e5f3" },
|
||||
"vimtex": { "branch": "master", "commit": "3abfa1ff75b81c01e4305e8062549ac0ea5cc9b8" },
|
||||
"vim-test": { "branch": "master", "commit": "c569b3620d0e53572efc95159f66ace5e7b06b48" },
|
||||
"vimtex": { "branch": "master", "commit": "f707368022cdb851716be0d2970b90599c84a6a6" },
|
||||
"vimux": { "branch": "master", "commit": "614f0bb1fb598f97accdcea71d5f7b18d7d62436" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "3aab2147e74890957785941f0c1ad87d0a44c15a" },
|
||||
"yazi.nvim": { "branch": "main", "commit": "4a8bd3284708e11e48bcd865892902a46abdcce0" }
|
||||
"yazi.nvim": { "branch": "main", "commit": "46fd318814b13cdb27750c045973df3f80425e68" }
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"hrsh7th/cmp-path", -- file and folders
|
||||
"hrsh7th/cmp-buffer", -- words from the current buffer
|
||||
"hrsh7th/cmp-nvim-lsp", -- LSP-based autocompletions
|
||||
"hrsh7th/cmp-cmdline", -- Command-line autocompletions
|
||||
"tzachar/cmp-tabnine"--, build = "./install.sh",
|
||||
},
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
},
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
dependencies = {
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
"rafamadriz/friendly-snippets",
|
||||
},
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
dependencies = {
|
||||
"hrsh7th/cmp-path",
|
||||
"hrsh7th/cmp-buffer",
|
||||
"hrsh7th/cmp-cmdline",
|
||||
},
|
||||
},
|
||||
{
|
||||
"tzachar/cmp-tabnine",
|
||||
build = "./install.sh",
|
||||
},
|
||||
}
|
||||
38
nvim/.config/nvim/lua/plugins.inactive/ufo.lua
Normal file
38
nvim/.config/nvim/lua/plugins.inactive/ufo.lua
Normal file
@@ -0,0 +1,38 @@
|
||||
return {
|
||||
"kevinhwang91/nvim-ufo",
|
||||
dependencies = "kevinhwang91/promise-async",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
keys = {
|
||||
{
|
||||
"zR",
|
||||
function()
|
||||
require("ufo").openAllFolds()
|
||||
end,
|
||||
desc = "Ufo: open all folds",
|
||||
},
|
||||
{
|
||||
"zM",
|
||||
function()
|
||||
require("ufo").closeAllFolds()
|
||||
end,
|
||||
desc = "Ufo: close all folds",
|
||||
},
|
||||
{
|
||||
"zr",
|
||||
function()
|
||||
require("ufo").openFoldsExceptKinds()
|
||||
end,
|
||||
desc = "Ufo: open outer folds",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
local ufo = require("ufo")
|
||||
ufo.setup({
|
||||
provider_selector = function(bufnr, filetype, buftype)
|
||||
-- prefer LSP, fall back to treesitter
|
||||
return { "lsp", "treesitter" }
|
||||
end,
|
||||
fold_virt_text_handler = ufo.handler, -- default virtual text
|
||||
})
|
||||
end,
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
-- autopairs.lua: Auto-inserts matching pairs for brackets, quotes, and delimiters during coding.
|
||||
|
||||
return {
|
||||
{
|
||||
"windwp/nvim-autopairs",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-- This is a VS Code like winbar that uses nvim-navic in order to get LSP context from your language server.
|
||||
-- barbcue.lua: Provides a minimal status line with contextual code structure (e.g., current function/method) using Treesitter and nvim-navic for lightweight navigation.
|
||||
|
||||
return {
|
||||
{
|
||||
@@ -14,39 +14,39 @@ return {
|
||||
require("barbecue").setup({
|
||||
-- Create autocmd to attach to LSP
|
||||
attach_navic = true,
|
||||
|
||||
|
||||
-- Create user commands
|
||||
create_autocmd = true,
|
||||
|
||||
|
||||
-- Whether to show/use file icons
|
||||
show_modified = false,
|
||||
|
||||
|
||||
-- Whether to show file path
|
||||
show_dirname = true,
|
||||
|
||||
|
||||
-- Whether to show basename
|
||||
show_basename = true,
|
||||
|
||||
|
||||
-- Filetypes to exclude
|
||||
exclude_filetypes = { "netrw", "toggleterm", "alpha", "NvimTree" },
|
||||
|
||||
|
||||
-- Modifiers to apply to dirname
|
||||
modifiers = {
|
||||
dirname = ":~:.",
|
||||
basename = "",
|
||||
},
|
||||
|
||||
|
||||
-- Whether to display path to file
|
||||
show_navic = true,
|
||||
|
||||
|
||||
-- Custom section
|
||||
custom_section = function()
|
||||
return " "
|
||||
end,
|
||||
|
||||
|
||||
-- Theme configuration
|
||||
theme = "auto", -- 'auto', 'tokyonight', 'catppuccin', etc.
|
||||
|
||||
|
||||
-- Symbols for different node kinds
|
||||
kinds = {
|
||||
File = "",
|
||||
|
||||
63
nvim/.config/nvim/lua/plugins/blink.lua
Normal file
63
nvim/.config/nvim/lua/plugins/blink.lua
Normal file
@@ -0,0 +1,63 @@
|
||||
-- blink.lua: Temporarily highlights cursor position after movement to improve visibility.
|
||||
|
||||
return {
|
||||
"saghen/blink.cmp",
|
||||
version = "v1.*", -- stay on stable branch
|
||||
build = "cargo build --release", -- compile matcher locally
|
||||
lazy = false, -- must load before first lsp attach
|
||||
dependencies = {
|
||||
"L3MON4D3/LuaSnip",
|
||||
"rafamadriz/friendly-snippets",
|
||||
},
|
||||
opts = {
|
||||
-- completion sources ----------------------------------------------------
|
||||
sources = {
|
||||
min_keyword_length = 2, -- <-- Move it here from trigger section
|
||||
default = { "nvim_lsp", "luasnip", "buffer", "path", "cmp_tabnine" },
|
||||
providers = {
|
||||
nvim_lsp = { name = "LSP", module = "blink.cmp.sources.lsp" },
|
||||
luasnip = { name = "Snippets", module = "blink.cmp.sources.luasnip" },
|
||||
buffer = { name = "Buffer", module = "blink.cmp.sources.buffer" },
|
||||
path = { name = "Path", module = "blink.cmp.sources.path" },
|
||||
cmp_tabnine = {
|
||||
name = "TabNine",
|
||||
module = "blink.compat.source",
|
||||
score_offset = 3,
|
||||
},
|
||||
},
|
||||
per_filetype = {
|
||||
lua = { default = { "lazydev", "nvim_lsp", "luasnip", "buffer", "path" } },
|
||||
},
|
||||
},
|
||||
|
||||
-- completion behaviour --------------------------------------------------
|
||||
completion = {
|
||||
accept = { auto_brackets = { enabled = true } },
|
||||
trigger = {
|
||||
show_on_trigger_character = true, -- <-- Remove min_keyword_length from here
|
||||
},
|
||||
list = {
|
||||
selection = {
|
||||
preselect = function(ctx)
|
||||
return ctx.mode ~= "cmdline"
|
||||
end,
|
||||
},
|
||||
},
|
||||
documentation = {
|
||||
auto_show = true,
|
||||
auto_show_delay_ms = 100,
|
||||
},
|
||||
},
|
||||
|
||||
signature = {
|
||||
enabled = true,
|
||||
window = { border = "rounded" },
|
||||
},
|
||||
|
||||
cmdline = { enabled = true },
|
||||
},
|
||||
|
||||
config = function(_, opts)
|
||||
require("blink.cmp").setup(opts)
|
||||
end,
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
-- colorschemes.lua: Manages and switches between visual themes for the editor interface.
|
||||
|
||||
return {
|
||||
{
|
||||
"catppuccin/nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- comment.lua: Toggles line or block comments with customizable keybindings.
|
||||
|
||||
return {
|
||||
{
|
||||
"numToStr/Comment.nvim",
|
||||
@@ -21,21 +23,21 @@ return {
|
||||
|
||||
-- LHS of toggle mappings in NORMAL mode
|
||||
toggler = {
|
||||
line = "gcc", -- Line-comment toggle keymap
|
||||
line = "gcc", -- Line-comment toggle keymap
|
||||
block = "gbc", -- Block-comment toggle keymap
|
||||
},
|
||||
|
||||
-- LHS of operator-pending mappings in NORMAL and VISUAL mode
|
||||
opleader = {
|
||||
line = "gc", -- Line-comment keymap
|
||||
block = "gb", -- Block-comment keymap
|
||||
line = "gc", -- Line-comment keymap
|
||||
block = "gb", -- Block-comment keymap
|
||||
},
|
||||
|
||||
-- LHS of extra mappings
|
||||
extra = {
|
||||
above = "gcO", -- Add comment on the line above
|
||||
below = "gco", -- Add comment on the line below
|
||||
eol = "gcA", -- Add comment at the end of line
|
||||
eol = "gcA", -- Add comment at the end of line
|
||||
},
|
||||
|
||||
-- Enable keybindings
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
-- completions.lua: Provides intelligent code completion via LSP or snippet engines.
|
||||
|
||||
return {
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-cmdline", -- NEW: Command line completion
|
||||
"hrsh7th/cmp-cmdline", -- Command line completion
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lua", -- NEW: Better Neovim Lua API completion
|
||||
"hrsh7th/cmp-nvim-lua", -- Better Neovim Lua API completion
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-path", -- ADD THIS: Path completion source
|
||||
},
|
||||
{
|
||||
"hrsh7th/cmp-buffer", -- ADD THIS: Buffer completion source
|
||||
},
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
@@ -21,7 +29,6 @@ return {
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
@@ -41,10 +48,12 @@ return {
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "nvim_lsp" },
|
||||
{ name = "luasnip" }, -- For luasnip users.
|
||||
{ name = "luasnip" },
|
||||
{ name = "nvim_lua" }, -- ADD THIS: For nvim lua API completion
|
||||
}, {
|
||||
{ name = "buffer" },
|
||||
{ name = "path" },
|
||||
{ name = "cmp_tabnine" }, -- ai powerde suggestions
|
||||
{ name = "cmp_tabnine" }, -- ai powered suggestions
|
||||
}),
|
||||
})
|
||||
end,
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- conform.lua: Automates code formatting on save or manual trigger.
|
||||
|
||||
return {
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- dashboard.lua: Creates a customizable start screen with project shortcuts and statistics.
|
||||
|
||||
return {
|
||||
{
|
||||
"nvimdev/dashboard-nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- dressing.lua: Enhances UI elements like input boxes and select menus for consistency.
|
||||
|
||||
return {
|
||||
{
|
||||
"stevearc/dressing.nvim",
|
||||
|
||||
@@ -1,50 +1,52 @@
|
||||
-- flash-nvim.lua: Highlights search matches and movement destinations for faster navigation.
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
---@type Flash.Config
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
"<leader>w",
|
||||
mode = { "n", "x", "o" },
|
||||
function()
|
||||
require("flash").jump()
|
||||
end,
|
||||
desc = "Flash",
|
||||
},
|
||||
{
|
||||
"<leader>W",
|
||||
mode = { "n", "x", "o" },
|
||||
function()
|
||||
require("flash").treesitter()
|
||||
end,
|
||||
desc = "Flash Treesitter",
|
||||
},
|
||||
{
|
||||
"<leader>r",
|
||||
mode = "o",
|
||||
function()
|
||||
require("flash").remote()
|
||||
end,
|
||||
desc = "Remote Flash",
|
||||
},
|
||||
{
|
||||
"<leader>R",
|
||||
mode = { "o", "x" },
|
||||
function()
|
||||
require("flash").treesitter_search()
|
||||
end,
|
||||
desc = "Treesitter Search",
|
||||
},
|
||||
{
|
||||
"<c-f>",
|
||||
mode = { "c" },
|
||||
function()
|
||||
require("flash").toggle()
|
||||
end,
|
||||
desc = "Toggle Flash Search",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/flash.nvim",
|
||||
event = "VeryLazy",
|
||||
---@type Flash.Config
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
"<leader>w",
|
||||
mode = { "n", "x", "o" },
|
||||
function()
|
||||
require("flash").jump()
|
||||
end,
|
||||
desc = "Flash",
|
||||
},
|
||||
{
|
||||
"<leader>W",
|
||||
mode = { "n", "x", "o" },
|
||||
function()
|
||||
require("flash").treesitter()
|
||||
end,
|
||||
desc = "Flash Treesitter",
|
||||
},
|
||||
{
|
||||
"<leader>r",
|
||||
mode = "o",
|
||||
function()
|
||||
require("flash").remote()
|
||||
end,
|
||||
desc = "Remote Flash",
|
||||
},
|
||||
{
|
||||
"<leader>R",
|
||||
mode = { "o", "x" },
|
||||
function()
|
||||
require("flash").treesitter_search()
|
||||
end,
|
||||
desc = "Treesitter Search",
|
||||
},
|
||||
{
|
||||
"<c-f>",
|
||||
mode = { "c" },
|
||||
function()
|
||||
require("flash").toggle()
|
||||
end,
|
||||
desc = "Toggle Flash Search",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- fzf.lua: Integrates fuzzy Finder for quick file, buffer, and command searching.
|
||||
|
||||
return {
|
||||
{
|
||||
"ibhagwan/fzf-lua",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- git-signs.lua: Displays Git diff markers directly in the editor margin.
|
||||
|
||||
return {
|
||||
{
|
||||
"lewis6991/gitsigns.nvim",
|
||||
@@ -5,19 +7,19 @@ return {
|
||||
config = function()
|
||||
require("gitsigns").setup({
|
||||
signs = {
|
||||
add = { text = "│" },
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
add = { text = "│" },
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
watch_gitdir = {
|
||||
follow_files = true
|
||||
follow_files = true,
|
||||
},
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
@@ -38,7 +40,7 @@ return {
|
||||
style = "minimal",
|
||||
relative = "cursor",
|
||||
row = 0,
|
||||
col = 1
|
||||
col = 1,
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
@@ -51,35 +53,51 @@ return {
|
||||
|
||||
-- Navigation
|
||||
map("n", "]c", function()
|
||||
if vim.wo.diff then return "]c" end
|
||||
vim.schedule(function() gs.next_hunk() end)
|
||||
if vim.wo.diff then
|
||||
return "]c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.next_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true, desc = "Next hunk" })
|
||||
|
||||
map("n", "[c", function()
|
||||
if vim.wo.diff then return "[c" end
|
||||
vim.schedule(function() gs.prev_hunk() end)
|
||||
if vim.wo.diff then
|
||||
return "[c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.prev_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true, desc = "Previous hunk" })
|
||||
|
||||
-- Actions
|
||||
map("n", "<leader>hs", gs.stage_hunk, { desc = "Stage hunk" })
|
||||
map("n", "<leader>hr", gs.reset_hunk, { desc = "Reset hunk" })
|
||||
map("v", "<leader>hs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "Stage hunk" })
|
||||
map("v", "<leader>hr", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end, { desc = "Reset hunk" })
|
||||
map("v", "<leader>hs", function()
|
||||
gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end, { desc = "Stage hunk" })
|
||||
map("v", "<leader>hr", function()
|
||||
gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") })
|
||||
end, { desc = "Reset hunk" })
|
||||
map("n", "<leader>hS", gs.stage_buffer, { desc = "Stage buffer" })
|
||||
map("n", "<leader>hu", gs.undo_stage_hunk, { desc = "Undo stage hunk" })
|
||||
map("n", "<leader>hR", gs.reset_buffer, { desc = "Reset buffer" })
|
||||
map("n", "<leader>hp", gs.preview_hunk, { desc = "Preview hunk" })
|
||||
map("n", "<leader>hb", function() gs.blame_line({ full = true }) end, { desc = "Blame line" })
|
||||
map("n", "<leader>hb", function()
|
||||
gs.blame_line({ full = true })
|
||||
end, { desc = "Blame line" })
|
||||
map("n", "<leader>tb", gs.toggle_current_line_blame, { desc = "Toggle line blame" })
|
||||
map("n", "<leader>hd", gs.diffthis, { desc = "Diff this" })
|
||||
map("n", "<leader>hD", function() gs.diffthis("~") end, { desc = "Diff this ~" })
|
||||
map("n", "<leader>hD", function()
|
||||
gs.diffthis("~")
|
||||
end, { desc = "Diff this ~" })
|
||||
map("n", "<leader>td", gs.toggle_deleted, { desc = "Toggle deleted" })
|
||||
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", { desc = "Select hunk" })
|
||||
end
|
||||
end,
|
||||
})
|
||||
end,
|
||||
},
|
||||
|
||||
19
nvim/.config/nvim/lua/plugins/grapple.lua
Normal file
19
nvim/.config/nvim/lua/plugins/grapple.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
-- grapple.lua: Manages and switches between workspace tags for project organization.
|
||||
|
||||
return {
|
||||
"cbochs/grapple.nvim",
|
||||
event = { "BufReadPost", "BufNewFile" },
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
keys = {
|
||||
{ "<leader>m", "<cmd>Grapple toggle<cr>", desc = "Grapple: toggle file" },
|
||||
{ "<leader>M", "<cmd>Grapple toggle_tags<cr>", desc = "Grapple: open tag menu" },
|
||||
{ "<leader>1", "<cmd>Grapple select index=1<cr>", desc = "Grapple: goto tag 1" },
|
||||
{ "<leader>2", "<cmd>Grapple select index=2<cr>", desc = "Grapple: goto tag 2" },
|
||||
{ "<leader>3", "<cmd>Grapple select index=3<cr>", desc = "Grapple: goto tag 3" },
|
||||
{ "<leader>4", "<cmd>Grapple select index=4<cr>", desc = "Grapple: goto tag 4" },
|
||||
},
|
||||
opts = {
|
||||
scope = "git", -- per-branch scope
|
||||
quick_select = "123456789",
|
||||
},
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
-- indent-blankline.lua: Visualizes indentation levels with vertical guide lines.
|
||||
|
||||
return {
|
||||
{
|
||||
"lukas-reineke/indent-blankline.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- lazydev.lua: Streamlines Neovim plugin management and dependency loading.
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/lazydev.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- lsp-config.lua: Configures Language Server Protocol for code analysis and diagnostics.
|
||||
|
||||
return {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
@@ -20,10 +22,10 @@ return {
|
||||
"html",
|
||||
"texlab",
|
||||
"ltex",
|
||||
"dockerls", -- Fixed: correct name
|
||||
"yamlls", -- Fixed: correct name (not yaml-language-server)
|
||||
"taplo", -- TOML LSP
|
||||
"cssls", -- css
|
||||
"dockerls",
|
||||
"yamlls",
|
||||
"taplo",
|
||||
"cssls",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -36,7 +38,6 @@ return {
|
||||
config = function()
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
local navic = require("nvim-navic")
|
||||
-- local lspconfig = require("lspconfig")
|
||||
|
||||
-- Common on_attach function
|
||||
local on_attach = function(client, bufnr)
|
||||
@@ -88,11 +89,30 @@ return {
|
||||
ltex = {
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
filetypes = { "latex", "tex", "bib", "markdown" },
|
||||
filetypes = { "latex", "tex", "bib", "markdown", "mail", "text" },
|
||||
settings = {
|
||||
ltex = {
|
||||
language = "en-US",
|
||||
enabled = { "latex", "tex", "bib" },
|
||||
enabled = { "latex", "tex", "bib", "markdown", "mail", "text" },
|
||||
checkFrequency = "save", -- Only check when you save, not on every keystroke
|
||||
diagnosticSeverity = "hint", -- Less intrusive
|
||||
completionEnabled = true,
|
||||
additionalRules = {
|
||||
enablePickyRules = true,
|
||||
motherTongue = "en-US",
|
||||
},
|
||||
disabledRules = {
|
||||
-- Add rules you want to disable, e.g.:
|
||||
-- ["en-US"] = { "MORFOLOGIK_RULE_EN_US" },
|
||||
},
|
||||
dictionary = {
|
||||
-- Add custom words here that shouldn't be flagged
|
||||
["en-US"] = {
|
||||
-- "aerc",
|
||||
-- "notmuch",
|
||||
-- "dovecot",
|
||||
},
|
||||
},
|
||||
java = {
|
||||
path = "",
|
||||
initialHeapSize = 64,
|
||||
@@ -129,7 +149,7 @@ return {
|
||||
css = {
|
||||
validate = true,
|
||||
lint = {
|
||||
unknownAtRules = "ignore", -- Important for @define-color in GTK CSS
|
||||
unknownAtRules = "ignore",
|
||||
},
|
||||
},
|
||||
scss = {
|
||||
@@ -185,11 +205,31 @@ return {
|
||||
vim.lsp.enable(server)
|
||||
end
|
||||
|
||||
-- Configure diagnostics globally
|
||||
vim.diagnostic.config({
|
||||
virtual_text = false, -- Disable inline diagnostic text (no more popups!)
|
||||
signs = true, -- Keep gutter signs
|
||||
underline = true, -- Underline errors
|
||||
update_in_insert = false, -- Don't update diagnostics while typing
|
||||
severity_sort = true,
|
||||
float = {
|
||||
border = "rounded",
|
||||
source = "always",
|
||||
header = "",
|
||||
prefix = "",
|
||||
},
|
||||
})
|
||||
|
||||
-- LSP keymaps
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
|
||||
vim.keymap.set("n", "<leader>gd", vim.lsp.buf.definition, {})
|
||||
vim.keymap.set("n", "<leader>gr", vim.lsp.buf.references, {})
|
||||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
|
||||
|
||||
-- Show diagnostics in floating window (optional - press this when you want to see the error)
|
||||
vim.keymap.set("n", "<leader>e", vim.diagnostic.open_float, {})
|
||||
vim.keymap.set("n", "[d", vim.diagnostic.goto_prev, {})
|
||||
vim.keymap.set("n", "]d", vim.diagnostic.goto_next, {})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- lualine.lua: Customizable status line showing file info, language, and mode.
|
||||
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
config = function()
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- neo-tree.lua: File explorer with nested structure and Git integration.
|
||||
|
||||
return {
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
branch = "v3.x",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- neogit.lua: Embedded Git client with status, commits, and branch management.
|
||||
|
||||
return {
|
||||
{
|
||||
"NeogitOrg/neogit",
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
-- noice.lua: Replaces default UI messages with polished, keyboard-friendly notifications.
|
||||
|
||||
return { -- lazy.nvim
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
-- add any options here
|
||||
},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
},
|
||||
{
|
||||
"folke/noice.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {
|
||||
-- add any options here
|
||||
},
|
||||
dependencies = {
|
||||
-- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- OPTIONAL:
|
||||
-- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- If not available, we use `mini` as the fallback
|
||||
"rcarriga/nvim-notify",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- nvim-colorizer.lua: Highlights color codes (e.g., #FFFFFF) directly in code.
|
||||
|
||||
return {
|
||||
{
|
||||
"norcalli/nvim-colorizer.lua",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- nvim-lint.lua: Runs linters automatically on save or on-demand for code quality.
|
||||
|
||||
return {
|
||||
{
|
||||
"mfussenegger/nvim-lint",
|
||||
|
||||
@@ -1,159 +1,161 @@
|
||||
-- nvim-spectre.lua: Global search/replace tool with real-time preview and refactoring.
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-pack/nvim-spectre",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("spectre").setup({
|
||||
-- Optional: customize colors
|
||||
color_devicons = true,
|
||||
open_cmd = "vnew",
|
||||
live_update = false, -- auto execute search again when you write any file
|
||||
line_sep_start = "┌-----------------------------------------",
|
||||
result_padding = "¦ ",
|
||||
line_sep = "└-----------------------------------------",
|
||||
highlight = {
|
||||
ui = "String",
|
||||
search = "DiffChange",
|
||||
replace = "DiffDelete",
|
||||
},
|
||||
mapping = {
|
||||
["toggle_line"] = {
|
||||
map = "dd",
|
||||
cmd = "<cmd>lua require('spectre').toggle_line()<CR>",
|
||||
desc = "toggle item",
|
||||
},
|
||||
["enter_file"] = {
|
||||
map = "<cr>",
|
||||
cmd = "<cmd>lua require('spectre.actions').select_entry()<CR>",
|
||||
desc = "open file",
|
||||
},
|
||||
["send_to_qf"] = {
|
||||
map = "<leader>q",
|
||||
cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
|
||||
desc = "send all items to quickfix",
|
||||
},
|
||||
["replace_cmd"] = {
|
||||
map = "<leader>c",
|
||||
cmd = "<cmd>lua require('spectre.actions').replace_cmd()<CR>",
|
||||
desc = "input replace command",
|
||||
},
|
||||
["show_option_menu"] = {
|
||||
map = "<leader>o",
|
||||
cmd = "<cmd>lua require('spectre').show_options()<CR>",
|
||||
desc = "show options",
|
||||
},
|
||||
["run_current_replace"] = {
|
||||
map = "<leader>rc",
|
||||
cmd = "<cmd>lua require('spectre.actions').run_current_replace()<CR>",
|
||||
desc = "replace current line",
|
||||
},
|
||||
["run_replace"] = {
|
||||
map = "<leader>R",
|
||||
cmd = "<cmd>lua require('spectre.actions').run_replace()<CR>",
|
||||
desc = "replace all",
|
||||
},
|
||||
["change_view_mode"] = {
|
||||
map = "<leader>v",
|
||||
cmd = "<cmd>lua require('spectre').change_view()<CR>",
|
||||
desc = "change result view mode",
|
||||
},
|
||||
["change_replace_sed"] = {
|
||||
map = "trs",
|
||||
cmd = "<cmd>lua require('spectre').change_engine_replace('sed')<CR>",
|
||||
desc = "use sed to replace",
|
||||
},
|
||||
["change_replace_oxi"] = {
|
||||
map = "tro",
|
||||
cmd = "<cmd>lua require('spectre').change_engine_replace('oxi')<CR>",
|
||||
desc = "use oxi to replace",
|
||||
},
|
||||
["toggle_live_update"] = {
|
||||
map = "tu",
|
||||
cmd = "<cmd>lua require('spectre').toggle_live_update()<CR>",
|
||||
desc = "update when vim writes to file",
|
||||
},
|
||||
["toggle_ignore_case"] = {
|
||||
map = "ti",
|
||||
cmd = "<cmd>lua require('spectre').change_options('ignore-case')<CR>",
|
||||
desc = "toggle ignore case",
|
||||
},
|
||||
["toggle_ignore_hidden"] = {
|
||||
map = "th",
|
||||
cmd = "<cmd>lua require('spectre').change_options('hidden')<CR>",
|
||||
desc = "toggle search hidden",
|
||||
},
|
||||
["resume_last_search"] = {
|
||||
map = "<leader>l",
|
||||
cmd = "<cmd>lua require('spectre').resume_last_search()<CR>",
|
||||
desc = "resume last search",
|
||||
},
|
||||
},
|
||||
find_engine = {
|
||||
["rg"] = {
|
||||
cmd = "rg",
|
||||
args = {
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
},
|
||||
options = {
|
||||
["ignore-case"] = {
|
||||
value = "--ignore-case",
|
||||
icon = "[I]",
|
||||
desc = "ignore case",
|
||||
},
|
||||
["hidden"] = {
|
||||
value = "--hidden",
|
||||
desc = "hidden file",
|
||||
icon = "[H]",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
replace_engine = {
|
||||
["sed"] = {
|
||||
cmd = "sed",
|
||||
args = nil,
|
||||
options = {
|
||||
["ignore-case"] = {
|
||||
value = "--ignore-case",
|
||||
icon = "[I]",
|
||||
desc = "ignore case",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
default = {
|
||||
find = {
|
||||
cmd = "rg",
|
||||
options = { "ignore-case" },
|
||||
},
|
||||
replace = {
|
||||
cmd = "sed",
|
||||
},
|
||||
},
|
||||
})
|
||||
{
|
||||
"nvim-pack/nvim-spectre",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("spectre").setup({
|
||||
-- Optional: customize colors
|
||||
color_devicons = true,
|
||||
open_cmd = "vnew",
|
||||
live_update = false, -- auto execute search again when you write any file
|
||||
line_sep_start = "┌-----------------------------------------",
|
||||
result_padding = "¦ ",
|
||||
line_sep = "└-----------------------------------------",
|
||||
highlight = {
|
||||
ui = "String",
|
||||
search = "DiffChange",
|
||||
replace = "DiffDelete",
|
||||
},
|
||||
mapping = {
|
||||
["toggle_line"] = {
|
||||
map = "dd",
|
||||
cmd = "<cmd>lua require('spectre').toggle_line()<CR>",
|
||||
desc = "toggle item",
|
||||
},
|
||||
["enter_file"] = {
|
||||
map = "<cr>",
|
||||
cmd = "<cmd>lua require('spectre.actions').select_entry()<CR>",
|
||||
desc = "open file",
|
||||
},
|
||||
["send_to_qf"] = {
|
||||
map = "<leader>q",
|
||||
cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
|
||||
desc = "send all items to quickfix",
|
||||
},
|
||||
["replace_cmd"] = {
|
||||
map = "<leader>c",
|
||||
cmd = "<cmd>lua require('spectre.actions').replace_cmd()<CR>",
|
||||
desc = "input replace command",
|
||||
},
|
||||
["show_option_menu"] = {
|
||||
map = "<leader>o",
|
||||
cmd = "<cmd>lua require('spectre').show_options()<CR>",
|
||||
desc = "show options",
|
||||
},
|
||||
["run_current_replace"] = {
|
||||
map = "<leader>rc",
|
||||
cmd = "<cmd>lua require('spectre.actions').run_current_replace()<CR>",
|
||||
desc = "replace current line",
|
||||
},
|
||||
["run_replace"] = {
|
||||
map = "<leader>R",
|
||||
cmd = "<cmd>lua require('spectre.actions').run_replace()<CR>",
|
||||
desc = "replace all",
|
||||
},
|
||||
["change_view_mode"] = {
|
||||
map = "<leader>v",
|
||||
cmd = "<cmd>lua require('spectre').change_view()<CR>",
|
||||
desc = "change result view mode",
|
||||
},
|
||||
["change_replace_sed"] = {
|
||||
map = "trs",
|
||||
cmd = "<cmd>lua require('spectre').change_engine_replace('sed')<CR>",
|
||||
desc = "use sed to replace",
|
||||
},
|
||||
["change_replace_oxi"] = {
|
||||
map = "tro",
|
||||
cmd = "<cmd>lua require('spectre').change_engine_replace('oxi')<CR>",
|
||||
desc = "use oxi to replace",
|
||||
},
|
||||
["toggle_live_update"] = {
|
||||
map = "tu",
|
||||
cmd = "<cmd>lua require('spectre').toggle_live_update()<CR>",
|
||||
desc = "update when vim writes to file",
|
||||
},
|
||||
["toggle_ignore_case"] = {
|
||||
map = "ti",
|
||||
cmd = "<cmd>lua require('spectre').change_options('ignore-case')<CR>",
|
||||
desc = "toggle ignore case",
|
||||
},
|
||||
["toggle_ignore_hidden"] = {
|
||||
map = "th",
|
||||
cmd = "<cmd>lua require('spectre').change_options('hidden')<CR>",
|
||||
desc = "toggle search hidden",
|
||||
},
|
||||
["resume_last_search"] = {
|
||||
map = "<leader>l",
|
||||
cmd = "<cmd>lua require('spectre').resume_last_search()<CR>",
|
||||
desc = "resume last search",
|
||||
},
|
||||
},
|
||||
find_engine = {
|
||||
["rg"] = {
|
||||
cmd = "rg",
|
||||
args = {
|
||||
"--color=never",
|
||||
"--no-heading",
|
||||
"--with-filename",
|
||||
"--line-number",
|
||||
"--column",
|
||||
},
|
||||
options = {
|
||||
["ignore-case"] = {
|
||||
value = "--ignore-case",
|
||||
icon = "[I]",
|
||||
desc = "ignore case",
|
||||
},
|
||||
["hidden"] = {
|
||||
value = "--hidden",
|
||||
desc = "hidden file",
|
||||
icon = "[H]",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
replace_engine = {
|
||||
["sed"] = {
|
||||
cmd = "sed",
|
||||
args = nil,
|
||||
options = {
|
||||
["ignore-case"] = {
|
||||
value = "--ignore-case",
|
||||
icon = "[I]",
|
||||
desc = "ignore case",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
default = {
|
||||
find = {
|
||||
cmd = "rg",
|
||||
options = { "ignore-case" },
|
||||
},
|
||||
replace = {
|
||||
cmd = "sed",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
-- Global keymaps
|
||||
vim.keymap.set("n", "<leader>S", '<cmd>lua require("spectre").toggle()<CR>', {
|
||||
desc = "Toggle Spectre",
|
||||
})
|
||||
-- Global keymaps
|
||||
vim.keymap.set("n", "<leader>S", '<cmd>lua require("spectre").toggle()<CR>', {
|
||||
desc = "Toggle Spectre",
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>sw", '<cmd>lua require("spectre").open_visual({select_word=true})<CR>', {
|
||||
desc = "Search current word",
|
||||
})
|
||||
vim.keymap.set("n", "<leader>sw", '<cmd>lua require("spectre").open_visual({select_word=true})<CR>', {
|
||||
desc = "Search current word",
|
||||
})
|
||||
|
||||
vim.keymap.set("v", "<leader>sw", '<esc><cmd>lua require("spectre").open_visual()<CR>', {
|
||||
desc = "Search current word",
|
||||
})
|
||||
vim.keymap.set("v", "<leader>sw", '<esc><cmd>lua require("spectre").open_visual()<CR>', {
|
||||
desc = "Search current word",
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>sp", '<cmd>lua require("spectre").open_file_search({select_word=true})<CR>', {
|
||||
desc = "Search in current file",
|
||||
})
|
||||
end,
|
||||
},
|
||||
vim.keymap.set("n", "<leader>sp", '<cmd>lua require("spectre").open_file_search({select_word=true})<CR>', {
|
||||
desc = "Search in current file",
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
-- nvim-surround.lua: Quickly add, delete, or change surrounding delimiters (e.g., brackets).
|
||||
|
||||
-- nvim-surround configuration with autopairs, treesitter, and comment integration
|
||||
-- Place this in ~/.config/nvim/lua/plugins/nvim-surround.lua (for lazy.nvim)
|
||||
|
||||
return {
|
||||
-- nvim-surround: manipulate surroundings
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
-- nvim-tmux-navigator.lua: Switch between Neovim and tmux panes using consistent keybindings.
|
||||
|
||||
return {
|
||||
"alexghergh/nvim-tmux-navigation",
|
||||
config = function()
|
||||
require('nvim-tmux-navigation').setup({})
|
||||
require("nvim-tmux-navigation").setup({})
|
||||
vim.keymap.set("n", "<C-h>", "<Cmd>NvimTmuxNavigateLeft<CR>", {})
|
||||
vim.keymap.set("n", "<C-j>", "<Cmd>NvimTmuxNavigateDown<CR>", {})
|
||||
vim.keymap.set("n", "<C-k>", "<Cmd>NvimTmuxNavigateUp<CR>", {})
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- nvim-web-devicons.lua: Adds icons for file types to improve visual navigation.
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-tree/nvim-web-devicons",
|
||||
@@ -11,23 +13,23 @@ return {
|
||||
icon = "",
|
||||
color = "#428850",
|
||||
cterm_color = "65",
|
||||
name = "Zsh"
|
||||
name = "Zsh",
|
||||
},
|
||||
-- Add custom icons
|
||||
["Dockerfile"] = {
|
||||
icon = "",
|
||||
color = "#384d54",
|
||||
name = "Dockerfile"
|
||||
name = "Dockerfile",
|
||||
},
|
||||
[".env"] = {
|
||||
icon = "",
|
||||
color = "#faf743",
|
||||
name = "Env"
|
||||
name = "Env",
|
||||
},
|
||||
[".gitignore"] = {
|
||||
icon = "",
|
||||
color = "#f1502f",
|
||||
name = "GitIgnore"
|
||||
name = "GitIgnore",
|
||||
},
|
||||
},
|
||||
-- Override by file extension
|
||||
@@ -35,17 +37,17 @@ return {
|
||||
["log"] = {
|
||||
icon = "",
|
||||
color = "#81e043",
|
||||
name = "Log"
|
||||
name = "Log",
|
||||
},
|
||||
["rs"] = {
|
||||
icon = "",
|
||||
color = "#dea584",
|
||||
name = "Rust"
|
||||
name = "Rust",
|
||||
},
|
||||
["md"] = {
|
||||
icon = "",
|
||||
color = "#519aba",
|
||||
name = "Markdown"
|
||||
name = "Markdown",
|
||||
},
|
||||
},
|
||||
-- Override by filename
|
||||
@@ -53,27 +55,27 @@ return {
|
||||
["makefile"] = {
|
||||
icon = "",
|
||||
color = "#6d8086",
|
||||
name = "Makefile"
|
||||
name = "Makefile",
|
||||
},
|
||||
["dockerfile"] = {
|
||||
icon = "",
|
||||
color = "#384d54",
|
||||
name = "Dockerfile"
|
||||
name = "Dockerfile",
|
||||
},
|
||||
[".dockerignore"] = {
|
||||
icon = "",
|
||||
color = "#384d54",
|
||||
name = "DockerIgnore"
|
||||
name = "DockerIgnore",
|
||||
},
|
||||
["package.json"] = {
|
||||
icon = "",
|
||||
color = "#e8274b",
|
||||
name = "PackageJson"
|
||||
name = "PackageJson",
|
||||
},
|
||||
["package-lock.json"] = {
|
||||
icon = "",
|
||||
color = "#7a0d21",
|
||||
name = "PackageLockJson"
|
||||
name = "PackageLockJson",
|
||||
},
|
||||
},
|
||||
-- Use colors by default
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- obsidian.lua: Integrates Obsidian note-taking workflow into Neovim.
|
||||
|
||||
return {
|
||||
{
|
||||
"epwalsh/obsidian.nvim",
|
||||
|
||||
@@ -1,72 +1,69 @@
|
||||
-- portal.lua: Saves and recalls cursor positions across files for efficient navigation.
|
||||
|
||||
return {
|
||||
{
|
||||
"cbochs/portal.nvim",
|
||||
dependencies = {
|
||||
"cbochs/grapple.nvim", -- Optional: for grapple integration
|
||||
"ThePrimeagen/harpoon", -- Optional: for harpoon integration
|
||||
},
|
||||
config = function()
|
||||
-- Setup portal
|
||||
require("portal").setup({
|
||||
labels = { "j", "k", "h", "l" },
|
||||
escape = {
|
||||
["<esc>"] = true,
|
||||
},
|
||||
})
|
||||
{
|
||||
"cbochs/portal.nvim",
|
||||
dependencies = {
|
||||
"cbochs/grapple.nvim", -- Optional: for grapple integration
|
||||
-- "ThePrimeagen/harpoon", -- Optional: for harpoon integration
|
||||
},
|
||||
config = function()
|
||||
-- Setup portal
|
||||
require("portal").setup({
|
||||
labels = { "j", "k", "h", "l" },
|
||||
escape = {
|
||||
["<esc>"] = true,
|
||||
},
|
||||
})
|
||||
|
||||
-- Basic navigation keymaps
|
||||
vim.keymap.set("n", "<leader>u", "<cmd>Portal jumplist backward<cr>", { desc = "Portal: Jump backward" })
|
||||
-- Basic navigation keymaps
|
||||
vim.keymap.set("n", "<leader>u", "<cmd>Portal jumplist backward<cr>", { desc = "Portal: Jump backward" })
|
||||
|
||||
vim.keymap.set("n", "<leader>i", "<cmd>Portal jumplist forward<cr>", { desc = "Portal: Jump forward" })
|
||||
vim.keymap.set("n", "<leader>i", "<cmd>Portal jumplist forward<cr>", { desc = "Portal: Jump forward" })
|
||||
|
||||
-- Changelist navigation
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>po",
|
||||
"<cmd>Portal changelist backward<cr>",
|
||||
{ desc = "Portal: Jump backward (changelist)" }
|
||||
)
|
||||
-- Changelist navigation
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>po",
|
||||
"<cmd>Portal changelist backward<cr>",
|
||||
{ desc = "Portal: Jump backward (changelist)" }
|
||||
)
|
||||
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>pi",
|
||||
"<cmd>Portal changelist forward<cr>",
|
||||
{ desc = "Portal: Jump forward (changelist)" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>pi",
|
||||
"<cmd>Portal changelist forward<cr>",
|
||||
{ desc = "Portal: Jump forward (changelist)" }
|
||||
)
|
||||
|
||||
-- Quickfix navigation
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>qo",
|
||||
"<cmd>Portal quickfix backward<cr>",
|
||||
{ desc = "Portal: Jump backward (quickfix)" }
|
||||
)
|
||||
-- Quickfix navigation
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>qo",
|
||||
"<cmd>Portal quickfix backward<cr>",
|
||||
{ desc = "Portal: Jump backward (quickfix)" }
|
||||
)
|
||||
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>qi",
|
||||
"<cmd>Portal quickfix forward<cr>",
|
||||
{ desc = "Portal: Jump forward (quickfix)" }
|
||||
)
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>qi",
|
||||
"<cmd>Portal quickfix forward<cr>",
|
||||
{ desc = "Portal: Jump forward (quickfix)" }
|
||||
)
|
||||
|
||||
-- Optional: Harpoon integration
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>ho",
|
||||
"<cmd>Portal harpoon backward<cr>",
|
||||
{ desc = "Portal: Jump backward (harpoon)" }
|
||||
)
|
||||
-- Optional: Harpoon integration
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>ho",
|
||||
"<cmd>Portal harpoon backward<cr>",
|
||||
{ desc = "Portal: Jump backward (harpoon)" }
|
||||
)
|
||||
|
||||
vim.keymap.set(
|
||||
"n",
|
||||
"<leader>hi",
|
||||
"<cmd>Portal harpoon forward<cr>",
|
||||
{ desc = "Portal: Jump forward (harpoon)" }
|
||||
)
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>u", desc = "Portal: Jump backward" },
|
||||
{ "<leader>i", desc = "Portal: Jump forward" },
|
||||
},
|
||||
},
|
||||
vim.keymap.set("n", "<leader>hi", "<cmd>Portal harpoon forward<cr>", { desc = "Portal: Jump forward (harpoon)" })
|
||||
end,
|
||||
keys = {
|
||||
{ "<leader>u", desc = "Portal: Jump backward" },
|
||||
{ "<leader>i", desc = "Portal: Jump forward" },
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- r-nvim.lua: Provides R language support (syntax, LSP, and tools) within Neovim.
|
||||
|
||||
return {
|
||||
"R-nvim/R.nvim",
|
||||
lazy = false, -- load immediately
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- rainbow.lua: Colors nested brackets/parentheses to visually distinguish levels.
|
||||
|
||||
return {
|
||||
{
|
||||
"HiPhish/rainbow-delimiters.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- render-markdown.lua: Live previews or syntax enhancements for Markdown files.
|
||||
|
||||
return {
|
||||
{
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
|
||||
99
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
99
nvim/.config/nvim/lua/plugins/snacks.lua
Normal file
@@ -0,0 +1,99 @@
|
||||
-- snacks.lua: Minimal UI notifications for background tasks (e.g., LSP, file ops).
|
||||
|
||||
return {
|
||||
"folke/snacks.nvim",
|
||||
priority = 1000,
|
||||
lazy = false,
|
||||
opts = {
|
||||
bigfile = { enabled = true },
|
||||
notifier = { enabled = true, timeout = 3000 },
|
||||
quickfile = { enabled = true },
|
||||
statuscolumn = { enabled = true },
|
||||
words = { enabled = true },
|
||||
scratch = { enabled = true, ft = "lua" },
|
||||
zen = { enabled = true },
|
||||
git = { enabled = true }, -- issue / PR / blame pickers
|
||||
},
|
||||
keys = {
|
||||
-- github
|
||||
{
|
||||
"<leader>gi",
|
||||
function()
|
||||
Snacks.picker.gh_issue({ state = "open" })
|
||||
end,
|
||||
desc = "GitHub issues (open)",
|
||||
},
|
||||
{
|
||||
"<leader>gI",
|
||||
function()
|
||||
Snacks.picker.gh_issue({ state = "all" })
|
||||
end,
|
||||
desc = "GitHub issues (all)",
|
||||
},
|
||||
{
|
||||
"<leader>gp",
|
||||
function()
|
||||
Snacks.picker.gh_pr({ state = "open" })
|
||||
end,
|
||||
desc = "GitHub PRs (open)",
|
||||
},
|
||||
{
|
||||
"<leader>gP",
|
||||
function()
|
||||
Snacks.picker.gh_pr({ state = "all" })
|
||||
end,
|
||||
desc = "GitHub PRs (all)",
|
||||
},
|
||||
-- grep / nav
|
||||
{
|
||||
"<leader>sb",
|
||||
function()
|
||||
Snacks.picker.lines()
|
||||
end,
|
||||
desc = "Buffer lines",
|
||||
},
|
||||
{
|
||||
"<leader>sB",
|
||||
function()
|
||||
Snacks.picker.grep_buffers()
|
||||
end,
|
||||
desc = "Grep open buffers",
|
||||
},
|
||||
{
|
||||
"<leader>sg",
|
||||
function()
|
||||
Snacks.picker.grep()
|
||||
end,
|
||||
desc = "Live grep",
|
||||
},
|
||||
{
|
||||
"<leader>sw",
|
||||
function()
|
||||
Snacks.picker.grep_word()
|
||||
end,
|
||||
desc = "Grep word",
|
||||
},
|
||||
{
|
||||
'<leader>s"',
|
||||
function()
|
||||
Snacks.picker.registers()
|
||||
end,
|
||||
desc = "Registers",
|
||||
},
|
||||
-- zen / scratch
|
||||
{
|
||||
"<leader>z",
|
||||
function()
|
||||
Snacks.zen()
|
||||
end,
|
||||
desc = "Zen mode",
|
||||
},
|
||||
{
|
||||
"<leader><leader>s",
|
||||
function()
|
||||
Snacks.scratch()
|
||||
end,
|
||||
desc = "Scratch buffer",
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
-- telescope.lua: Highly extensible fuzzy finder for files, code, and plugins.
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-telescope/telescope-ui-select.nvim",
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
return {
|
||||
{
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {},
|
||||
},
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
-- treesitter.lua: Enables syntax highlighting, code folding, and structural analysis.
|
||||
|
||||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- trouble.lua: Aggregates diagnostics, references, and code issues into a single panel.
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- vimtex.lua: Full LaTeX editing support (compiling, viewing, and syntax).
|
||||
|
||||
return {
|
||||
"lervag/vimtex",
|
||||
ft = "tex",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- which-key.lua: Displays keybinding hints for uncompleted commands to reduce memorization.
|
||||
|
||||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
-- yazi-nvim.lua: Bridges Neovim with Yazi file manager for fast directory navigation.
|
||||
|
||||
return {
|
||||
{
|
||||
"mikavilpas/yazi.nvim",
|
||||
|
||||
Reference in New Issue
Block a user