1
0
mirror of https://github.com/tiyn/dotfiles.git synced 2026-03-28 10:24:47 +01:00

NVIM: Keymap layout is now Lazy-centric

This commit is contained in:
2026-03-26 07:01:33 +01:00
parent 0f06cc10c8
commit 3c3cfd333d
43 changed files with 886 additions and 934 deletions

View File

@@ -2,7 +2,6 @@ return {
-- session management with git support
"rmagatti/auto-session",
lazy = false,
---enables autocomplete for opts
---@module "auto-session"
---@type AutoSession.Config

View File

@@ -1,15 +1,15 @@
return {
-- vs code like topbar
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency
},
opts = {
theme = {
normal = { bg = "#272727" },
},
"utilyre/barbecue.nvim",
name = "barbecue",
version = "*",
dependencies = {
"SmiteshP/nvim-navic",
"nvim-tree/nvim-web-devicons", -- optional dependency
},
opts = {
theme = {
normal = { bg = "#272727" },
},
},
}

View File

@@ -2,8 +2,7 @@ return {
-- rainbow auto-pairs
"saghen/blink.pairs",
version = "*", -- (recommended) only required with prebuilt binaries
-- download prebuilt binaries from github releases
dependencies = "saghen/blink.download",
dependencies = "saghen/blink.download", -- download prebuilt binaries from github releases
--- @module 'blink.pairs'
--- @type blink.pairs.Config
opts = {

View File

@@ -1,6 +1,15 @@
return {
-- improved refactoring
"stevearc/conform.nvim",
keys = {
{
"<F8>",
function()
require("conform").format({ async = true, lsp_fallback = true })
end,
desc = "LSP: format",
},
},
config = function()
require("conform").setup({
formatters_by_ft = {

View File

@@ -1,16 +1,20 @@
return {
-- improved csv handling
"hat0uma/csvview.nvim",
opts = {
parser = { comments = { "#", "//" } },
keymaps = {
textobject_field_inner = { "if", mode = { "o", "x" } },
textobject_field_outer = { "af", mode = { "o", "x" } },
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
jump_next_row = { "<Enter>", mode = { "n", "v" } },
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
},
},
ft = "csv",
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
config = function()
require("csvview").setup({
parser = { comments = { "#", "//" } },
keymaps = {
textobject_field_inner = { "if", mode = { "o", "x" } },
textobject_field_outer = { "af", mode = { "o", "x" } },
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
jump_next_row = { "<Enter>", mode = { "n", "v" } },
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
},
})
require("csvview").enable()
end,
}

View File

@@ -1,9 +1,27 @@
return {
-- improves vims increment and decrement functions
"monaqa/dial.nvim",
keys = {
{
"<C-a>",
function()
require("dial.map").manipulate("increment", "normal")
end,
silent = true,
desc = "Increment value",
},
{
"<C-x>",
function()
require("dial.map").manipulate("decrement", "normal")
end,
silent = true,
desc = "Decrement value",
},
},
config = function()
local augend = require("dial.augend")
require("dial.config").augends:register_group{
require("dial.config").augends:register_group({
default = {
augend.integer.alias.decimal,
augend.integer.alias.hex,
@@ -19,6 +37,6 @@ return {
augend.constant.alias.en_weekday,
augend.constant.alias.en_weekday_full,
},
}
end
})
end,
}

View File

@@ -1,5 +1,19 @@
return {
-- side by side git diff mode coloring
"sindrets/diffview.nvim",
keys = {
{
"<leader>gdo",
"<cmd>DiffviewOpen<CR>",
mode = "n",
desc = "Git: open diff",
},
{
"<leader>gdc",
"<cmd>DiffviewClose<CR>",
mode = "n",
desc = "Git: close diff",
},
},
opts = {},
}

View File

@@ -1,5 +1,31 @@
return {
-- floating terminal to toggle
"numtostr/fterm.nvim",
keys = {
{
"<leader>tt",
function()
require("FTerm").toggle()
end,
mode = "n",
desc = "Terminal: open",
},
{
"<leader>gt",
function()
require("FTerm"):new({ cmd = "lazygit" }):toggle()
end,
mode = "n",
desc = "Git: open lazygit",
},
{
"<leader>tg",
function()
require("FTerm"):new({ cmd = "lazygit" }):toggle()
end,
mode = "n",
desc = "Terminal: open lazygit",
},
},
opts = {},
}

View File

@@ -2,6 +2,50 @@ return {
-- preview definitions using floating windows
"rmagatti/goto-preview",
dependencies = "rmagatti/logger.nvim",
keys = {
{
"gpd",
function()
require("goto-preview").goto_preview_definition()
end,
desc = "LSP: preview definition",
},
{
"gpy",
function()
require("goto-preview").goto_preview_type_definition()
end,
desc = "LSP: preview type definition",
},
{
"gpi",
function()
require("goto-preview").goto_preview_implementation()
end,
desc = "LSP: list preview implementation",
},
{
"gpD",
function()
require("goto-preview").goto_preview_declaration()
end,
desc = "LSP: preview declaration",
},
{
"gpr",
function()
require("goto-preview").goto_preview_references()
end,
desc = "LSP: list preview references",
},
{
"gpc",
function()
require("goto-preview").close_all_win()
end,
desc = "LSP: close all preview windows",
},
},
config = function()
require("goto-preview").setup({
border = "rounded",
@@ -12,8 +56,8 @@ return {
require("goto-preview").close_all_win()
end
vim.keymap.set("n", "<c-h>", close, { buffer = bufnr, silent = true })
vim.keymap.set("n", "q", close, { buffer = bufnr, silent = true })
vim.keymap.set("n", "<c-h>", close, { buffer = bufnr, silent = true })
vim.keymap.set("n", "q", close, { buffer = bufnr, silent = true })
end,
})
end,

View File

@@ -1,50 +1,67 @@
return {
{
"frabjous/knap",
ft = { "tex" },
config = function()
local function detect_engine()
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
if first_line:match("^%%%s*xelatex") then
return "xelatex"
else
return "pdflatex"
end
end
local function set_engine()
local engine = detect_engine()
if engine == "xelatex" then
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
else
vim.g.knap_settings.textopdf = "pdflatex -synctex=1 -interaction=batchmode %docroot%"
end
end
vim.g.knap_settings = {
delay = 100,
texoutputext = "pdf",
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
textopdfviewerrefresh = "reload",
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
}
vim.api.nvim_create_autocmd("User", {
pattern = "KnapShowView",
callback = set_engine,
})
vim.api.nvim_create_autocmd("User", {
pattern = "KnapCompile",
callback = set_engine,
})
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.tex",
callback = set_engine,
})
end,
"frabjous/knap",
ft = { "tex", "markdown" },
keys = {
{
"<leader>p",
function()
require("knap").toggle_autopreviewing()
end,
desc = "Knap: toggle autopreview",
},
},
config = function()
local knap = require("knap")
local function detect_engine()
local first_line = vim.api.nvim_buf_get_lines(0, 0, 1, false)[1] or ""
if first_line:match("^%%%s*xelatex") then
return "xelatex"
else
return "pdflatex"
end
end
local function set_engine()
local engine = detect_engine()
if engine == "xelatex" then
vim.g.knap_settings.textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%"
else
vim.g.knap_settings.textopdf = "pdflatex -synctex=1 -interaction=batchmode %docroot%"
end
end
vim.g.knap_settings = {
delay = 100,
texoutputext = "pdf",
textopdf = "xelatex -synctex=1 -interaction=batchmode %docroot%",
textopdfviewerlaunch = "zathura --synctex-editor-command 'nvim --headless -es --cmd \"lua require('\"'\"'knaphelper'\"'\"').relayjump('\"'\"'%servername%'\"'\"','\"'\"'%{input}'\"'\"',%{line},0)\"' ./%outputfile%",
textopdfviewerrefresh = "reload",
textopdfforwardjump = "zathura --synctex-forward=%line%:%column%:%srcfile% %outputfile%",
}
vim.api.nvim_create_autocmd("User", {
pattern = "KnapShowView",
callback = set_engine,
})
vim.api.nvim_create_autocmd("User", {
pattern = "KnapCompile",
callback = set_engine,
})
vim.api.nvim_create_autocmd("BufWritePost", {
pattern = "*.tex",
callback = set_engine,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "tex", "markdown" },
callback = function(args)
local bufnr = args.buf
vim.keymap.set({ "n", "v", "i" }, "<F7>", function()
knap.forward_jump()
end, {
buffer = bufnr,
desc = "Knap: jump to cursor",
})
if vim.bo[bufnr].filetype == "tex" then
knap.toggle_autopreviewing()
end
end,
})
end,
}

View File

@@ -1,11 +1,32 @@
return {
-- improved movement
url = "https://codeberg.org/andyg/leap.nvim",
"ggandor/leap.nvim",
keys = {
{
"f",
"<Plug>(leap-forward)",
mode = "n",
desc = "Navigation: enter leap mode for forward movement",
},
{
"F",
"<Plug>(leap-backward)",
mode = "n",
desc = "Navigation: enter leap mode for backwards movement",
},
{
"gf",
"<Plug>(leap-from-window)",
mode = "n",
desc = "Navigation: enter leap mode for other windows",
},
},
config = function()
require("leap").opts.highlight_unlabeled_phase_one_targets = true
require("leap").opts.equivalence_classes = { " \t\r\n", "([{", ")]}", "'\"`" }
require("leap").opts.special_keys.prev_target = "<backspace>"
require("leap").opts.special_keys.prev_group = "<backspace>"
require("leap.user").set_repeat_keys("<enter>", "<backspace>")
require("leap").opts.safe_labels = "sfnut/SFNLHMUGTZ?"
require("leap").opts.labels = "sfnjklhodweimbuyvrgtaqpcxz/SFNJKLHODWEIMBUYVRGTAQPCXZ?"
end,

View File

@@ -21,23 +21,75 @@ return {
"jmbuhr/otter.nvim",
"nvim-treesitter/nvim-treesitter",
},
opts = {
lspFeatures = {
languages = { "python" },
chunks = "all",
diagnostics = {
enabled = true,
triggers = { "BufWritePost" },
},
completion = {
enabled = true,
},
keys = {
{
"<leader>rc",
function()
require("quarto.runner").run_cell()
end,
desc = "Quarto: Run cell",
},
codeRunner = {
enabled = true,
default_method = "molten",
{
"<leader>ra",
function()
require("quarto.runner").run_above()
end,
desc = "Quarto: Run cell and above",
},
{
"<leader>rA",
function()
require("quarto.runner").run_all()
end,
desc = "Quarto: Run all cells",
},
{
"<leader>rl",
function()
require("quarto.runner").run_line()
end,
desc = "Quarto: Run line",
},
{
"<leader>rr",
function()
require("quarto.runner").run_range()
end,
desc = "Quarto: Run visual range",
},
{
"<leader>rL",
function()
require("quarto.runner").run_all(true)
end,
desc = "Quarto: Run all cells of all languages",
},
},
config = function()
require("quarto").setup({
lspFeatures = {
languages = { "python" },
chunks = "all",
diagnostics = {
enabled = true,
triggers = { "BufWritePost" },
},
completion = {
enabled = true,
},
},
codeRunner = {
enabled = true,
default_method = "molten",
},
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function()
require("quarto").activate()
end,
})
end,
},
{
"GCBallesteros/jupytext.nvim",

View File

@@ -1,8 +1,14 @@
return {
-- hover documentation
"tiyn/nvim-docs-view",
lazy = true,
cmd = "DocsViewToggle",
keys = {
{
"go",
"<cmd>DocsViewToggle<CR>",
mode = "n",
desc = "LSP: toggle documentation window",
},
},
opts = {
position = "bottom",
},

View File

@@ -1,6 +1,18 @@
return {
-- improved virtual text
"kevinhwang91/nvim-hlslens",
keys = {
{
"n",
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search forward",
},
{
"N",
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
desc = "Search: search backwards",
},
},
opts = {
calm_down = true,
},

View File

@@ -28,7 +28,6 @@ return {
},
},
})
local lily_dicts = {
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/keywords",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/musicCommands",
@@ -36,7 +35,6 @@ return {
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/articulations",
"~/.local/share/nvim/lazy/nvim-lilypond-suite/lilywords/dynamics",
}
vim.api.nvim_create_autocmd("FileType", {
pattern = "lilypond",
callback = function()
@@ -45,5 +43,53 @@ return {
})
end,
})
local fluidsynth_job = nil
vim.keymap.set("n", "<leader>pm", function()
local midi = vim.fn.expand("%:r") .. ".midi"
if fluidsynth_job then
vim.fn.jobstop(fluidsynth_job)
fluidsynth_job = nil
print("fluidsynth stopped")
return
end
fluidsynth_job = vim.fn.jobstart({ "fluidsynth", "-i", midi })
print("fluidsynth playing (Ctrl-C to stop)")
end, {
buffer = bufnr,
desc = "Lilypond: output MIDI",
})
vim.keymap.set("n", "<leader>pp", "<cmd>Viewer<CR>", {
buffer = bufnr,
desc = "Lilypond: open PDF",
})
vim.keymap.set("n", "<C-c>", function()
if fluidsynth_job then
vim.fn.jobstop(fluidsynth_job)
fluidsynth_job = nil
print("fluidsynth stopped")
else
vim.cmd("normal! <C-c>")
end
end, {
buffer = bufnr,
desc = "Stop MIDI playback",
})
if vim.b.first_start_lilypond then
return
end
vim.b.first_start_lilypond = true
vim.schedule(function()
if vim.fn.exists(":Viewer") == 2 then
vim.cmd.Viewer()
end
end)
end,
}

View File

@@ -95,5 +95,10 @@ return {
})
)
end
vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts)
vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts)
vim.keymap.set("n", "gT", vim.lsp.buf.type_definition, opts)
vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts)
vim.keymap.set("n", "gr", vim.lsp.buf.references, opts)
end,
}

View File

@@ -8,21 +8,30 @@ return {
lazy = true,
},
},
opts = {
sort_by = "case_sensitive",
view = {
width = 30,
},
filters = {
dotfiles = true,
},
renderer = {
group_empty = true,
icons = {
glyphs = {
git = Git_signs,
},
},
keys = {
{
"<F2>",
"<cmd>NvimTreeToggle<CR>",
desc = "File tree: toggle",
},
},
config = function()
require("nvim-tree").setup({
sort_by = "case_sensitive",
view = {
width = 30,
},
filters = {
dotfiles = true,
},
renderer = {
group_empty = true,
icons = {
glyphs = {
git = Git_signs,
},
},
},
})
end,
}

View File

@@ -30,13 +30,5 @@ return {
enable_rename = true,
},
})
-- WARN: not directly compatible anymore
-- highlight = { enable = true },
-- rainbow = {
-- enable = true,
-- extended_mode = true,
-- max_file_lines = nil,
-- -- colors = {},
-- -- termcolors = {}
end,
}

View File

@@ -2,6 +2,23 @@ return {
-- folding improvements
"kevinhwang91/nvim-ufo",
dependencies = { "kevinhwang91/promise-async" },
keys = {
{
"K",
function()
local winid = require("ufo").peekFoldedLinesUnderCursor()
if not winid then
vim.lsp.buf.hover({
border = "rounded",
focusable = false,
max_width = 100,
})
end
end,
mode = "n",
desc = "LSP: show documentation / peek folded section",
},
},
config = function()
require("ufo").setup()
vim.api.nvim_create_autocmd({ "BufEnter", "FileType" }, {

View File

@@ -1,139 +1,147 @@
return {
-- ollama llm integration
{
"huynle/ogpt.nvim",
event = "VeryLazy",
opts = {
default_provider = "ollama",
edgy = true, -- enable this!
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
providers = {
ollama = {
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
api_key = "",
model = "deepseek-r1:7b",
"huynle/ogpt.nvim",
event = "VeryLazy",
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
{
"folke/edgy.nvim",
event = "VeryLazy",
init = function()
vim.opt.laststatus = 3
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
end,
opts = {
exit_when_last = false,
animate = {
enabled = false,
},
wo = {
winbar = true,
winfixwidth = true,
winfixheight = false,
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
spell = false,
signcolumn = "no",
},
keys = {
-- -- close window
["q"] = function(win)
win:close()
end,
-- close sidebar
["Q"] = function(win)
win.view.edgebar:close()
end,
-- increase width
["<S-Right>"] = function(win)
win:resize("width", 3)
end,
-- decrease width
["<S-Left>"] = function(win)
win:resize("width", -3)
end,
-- increase height
["<S-Up>"] = function(win)
win:resize("height", 3)
end,
-- decrease height
["<S-Down>"] = function(win)
win:resize("height", -3)
end,
},
right = {
{
title = "OGPT Popup",
ft = "ogpt-popup",
size = { width = 0.2 },
wo = {
wrap = true,
},
},
{
title = "OGPT Parameters",
ft = "ogpt-parameters-window",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT Template",
ft = "ogpt-template",
size = { height = 6 },
},
{
title = "OGPT Sessions",
ft = "ogpt-sessions",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT System Input",
ft = "ogpt-system-window",
size = { height = 6 },
},
{
title = "OGPT",
ft = "ogpt-window",
size = { height = 0.5 },
wo = {
wrap = true,
},
},
{
title = "OGPT {{{selection}}}",
ft = "ogpt-selection",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPt {{{instruction}}}",
ft = "ogpt-instruction",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPT Chat",
ft = "ogpt-input",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
},
},
},
dependencies = {
"MunifTanjim/nui.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope.nvim",
},
},
{
"folke/edgy.nvim",
event = "VeryLazy",
init = function()
vim.opt.laststatus = 3
vim.opt.splitkeep = "screen" -- or "topline" or "screen"
end,
opts = {
exit_when_last = false,
animate = {
enabled = false,
},
wo = {
winbar = true,
winfixwidth = true,
winfixheight = false,
winhighlight = "WinBar:EdgyWinBar,Normal:EdgyNormal",
spell = false,
signcolumn = "no",
},
keys = {
-- -- close window
["q"] = function(win)
win:close()
end,
-- close sidebar
["Q"] = function(win)
win.view.edgebar:close()
end,
-- increase width
["<S-Right>"] = function(win)
win:resize("width", 3)
end,
-- decrease width
["<S-Left>"] = function(win)
win:resize("width", -3)
end,
-- increase height
["<S-Up>"] = function(win)
win:resize("height", 3)
end,
-- decrease height
["<S-Down>"] = function(win)
win:resize("height", -3)
end,
},
right = {
{
title = "OGPT Popup",
ft = "ogpt-popup",
size = { width = 0.2 },
wo = {
wrap = true,
},
},
{
title = "OGPT Parameters",
ft = "ogpt-parameters-window",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT Template",
ft = "ogpt-template",
size = { height = 6 },
},
{
title = "OGPT Sessions",
ft = "ogpt-sessions",
size = { height = 6 },
wo = {
wrap = true,
},
},
{
title = "OGPT System Input",
ft = "ogpt-system-window",
size = { height = 6 },
},
{
title = "OGPT",
ft = "ogpt-window",
size = { height = 0.5 },
wo = {
wrap = true,
},
},
{
title = "OGPT {{{selection}}}",
ft = "ogpt-selection",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPt {{{instruction}}}",
ft = "ogpt-instruction",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
{
title = "OGPT Chat",
ft = "ogpt-input",
size = { width = 80, height = 4 },
wo = {
wrap = true,
},
},
keys = {
{
"<leader>ai",
"<cmd>OGPT<CR>",
desc = "OGPT: Open AI View",
},
},
opts = {
default_provider = "ollama",
edgy = true, -- enable this!
single_window = false, -- set this to true if you want only one OGPT window to appear at a time
providers = {
ollama = {
api_host = "http://localhost:11434", -- free resources: https://github.com/cheahjs/free-llm-api-resources
api_key = "",
model = "deepseek-r1:7b",
},
},
},

View File

@@ -1,12 +1,20 @@
return {
-- outline for code
"hedyhli/outline.nvim",
opts = {
outline_window = {
width = 25,
},
symbols = {
icon_source = "lspkind",
keys = {
{
"<F3>",
"<cmd>Outline<CR>",
desc = "CTags: toggle",
},
},
config = function()
require("outline").setup({
outline_window = {
width = 25,
},
symbols = {
icon_source = "lspkind",
},
})
end,
}

View File

@@ -1,6 +1,14 @@
return {
-- translator
"potamides/pantran.nvim",
keys = {
{
"<leader>tr",
"<cmd>Pantran<CR>",
mode = { "n", "v" },
desc = "Pantran: translate",
},
},
opts = {
default_engine = "google",
-- default_engine = "deepl",

View File

@@ -1,8 +1,19 @@
return {
-- navigate between projects using telescope
"gnikdroy/projections.nvim",
dependencies = { "nvim-telescope/telescope.nvim" },
dependencies = {
"nvim-telescope/telescope.nvim",
},
branch = "pre_release",
keys = {
{
"<leader>fp",
function()
vim.cmd("Telescope projections")
end,
desc = "Telescope: find projects",
},
},
config = function()
require("projections").setup({
workspaces = { -- Default workspaces to search for
@@ -19,7 +30,6 @@ return {
end,
},
})
require("telescope").load_extension("projections")
end,
}

View File

@@ -3,5 +3,14 @@ return {
"filipdutescu/renamer.nvim",
branch = "master",
dependencies = { "nvim-lua/plenary.nvim" },
keys = {
{
"<F5>",
function()
require("renamer").rename()
end,
desc = "LSP: rename",
},
},
opts = {},
}

View File

@@ -3,6 +3,18 @@ return {
{
"kamykn/spelunker.vim",
dependencies = { "kamykn/popup-menu.nvim" },
keys = {
{
"<F10>t",
"<cmd>call spelunker#toggle()<CR>",
desc = "Spelunker: toggle spell check",
},
{
"<F10>s",
"z=",
desc = "Spell: display suggestions",
},
},
config = function()
-- vim.o.nospell = true
vim.g.enable_spelunker_vim = 0

View File

@@ -1,13 +1,11 @@
return {
-- colorscheme
{
"tiyn/tccs.nvim",
lazy = false,
priority = 1000,
config = function()
require("tccs").setup({
require("tccs").load(),
})
end,
},
"tiyn/tccs.nvim",
lazy = false,
priority = 1000,
config = function()
require("tccs").setup({
require("tccs").load(),
})
end,
}

View File

@@ -1,12 +1,31 @@
return {
-- fuzzy finder
{
"nvim-telescope/telescope.nvim",
version = "0.1.2",
dependencies = {
"nvim-lua/plenary.nvim",
"archie-judd/telescope-words.nvim",
},
opts = {},
"nvim-telescope/telescope.nvim",
version = "0.1.2",
dependencies = {
"nvim-lua/plenary.nvim",
"archie-judd/telescope-words.nvim",
},
keys = {
{
"<leader>ff",
"<cmd>Telescope find_files<CR>",
desc = "Telescope: find files",
},
{
"<leader>wd",
function()
require("telescope").extensions.telescope_words.search_dictionary()
end,
desc = "Telescope: search dictionary",
},
{
"<leader>wt",
function()
require("telescope").extensions.telescope_words.search_thesaurus()
end,
desc = "Telescope: search thesaurus",
},
},
opts = {},
}

View File

@@ -1,10 +1,21 @@
return {
-- clean up white spaces and empty lines before writing
{
"mcauley-penney/tidy.nvim",
branch = "main",
opts = {
"mcauley-penney/tidy.nvim",
branch = "main",
ft = { "markdown", "tex" },
config = function()
local tidy = require("tidy")
tidy.setup({
filetype_exclude = { "diff" },
},
},
})
tidy.opts.enabled_on_save = false
vim.api.nvim_create_autocmd("BufLeave", {
pattern = { "*.md", "*.tex" },
callback = function()
if vim.bo.modifiable then
tidy.run()
end
end,
})
end,
}

View File

@@ -1,22 +1,20 @@
return {
-- todo symbols and highlighting
{
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
keywords = {
ERRO = { icon = Error_sign, color = "error" },
WARN = { icon = Warn_sign, color = "warning" },
HACK = { icon = Hack_sign, color = "warning" },
HINT = { icon = Hint_sign, color = "hint" },
TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" },
},
colors = {
default = { "Operator" },
},
"folke/todo-comments.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
opts = {
keywords = {
ERRO = { icon = Error_sign, color = "error" },
WARN = { icon = Warn_sign, color = "warning" },
HACK = { icon = Hack_sign, color = "warning" },
HINT = { icon = Hint_sign, color = "hint" },
TODO = { icon = Todo_sign, color = "info" },
INFO = { icon = Info_sign, color = "hint", alt = { "NOTE" } },
PERF = { icon = Perfect_sign, color = "default" },
TEST = { icon = Test_sign, color = "test" },
},
colors = {
default = { "Operator" },
},
},
}

View File

@@ -1,8 +1,16 @@
return {
-- improves splitting and joining blocks
'Wansmer/treesj',
dependencies = { 'nvim-treesitter/nvim-treesitter' },
"Wansmer/treesj",
dependencies = { "nvim-treesitter/nvim-treesitter" },
keys = {
{
"<leader>m",
function()
require("treesj").toggle()
end,
},
},
config = function()
require('treesj').setup()
require("treesj").setup()
end,
}

View File

@@ -1,4 +1,54 @@
return {
-- improved movement for code
"aaronik/treewalker.nvim",
keys = {
{
"<leader><C-k>",
"<cmd>Treewalker Up<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-j>",
"<cmd>Treewalker Down<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-h>",
"<cmd>Treewalker Left<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-l>",
"<cmd>Treewalker Right<CR>",
mode = { "n", "v" },
silent = true,
},
{
"<leader><C-S-k>",
"<cmd>Treewalker SwapUp<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-j>",
"<cmd>Treewalker SwapDown<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-h>",
"<cmd>Treewalker SwapLeft<CR>",
mode = "n",
silent = true,
},
{
"<leader><C-S-l>",
"<cmd>Treewalker SwapRight<CR>",
mode = "n",
silent = true,
},
},
}

View File

@@ -7,5 +7,13 @@ return {
lazy = true,
},
},
keys = {
{
"<F4>",
"<cmd>Trouble diagnostics toggle<CR>",
mode = "n",
desc = "LSP: toggle error list",
},
},
opts = {},
}

View File

@@ -1,4 +1,12 @@
return {
-- tree style undo visualizer
"mbbill/undotree",
keys = {
{
"<F1>",
"<cmd>UndotreeToggle<CR>",
mode = "n",
desc = "Undo tree: toggle",
},
},
}

View File

@@ -1,5 +1,18 @@
return {
-- better substitutions
"tpope/vim-abolish",
config = function() end,
keys = {
{
"<leader>sa",
":%s//g<Left><Left>",
mode = "n",
desc = "Substitute: free form",
},
{
"<leader>ss",
":%s/\\<<C-r><C-w>\\>//g<Left><Left>",
mode = "n",
desc = "Substitute: word under cursor",
},
},
}

View File

@@ -1,4 +1,21 @@
return {
-- improved keybindings, previewing them
"folke/which-key.nvim",
config = function()
require("which-key").add({
{ mode = "n", "g", desc = "LSP: goto" },
{ mode = "n", "gp", desc = "LSP: preview" },
{ mode = "c", "w", desc = "Write" },
{ mode = "c", "w!", desc = "Write: overwrite" },
{ mode = "n", "<leader>a", desc = "AI" },
{ mode = "n", "<leader>g", desc = "Git" },
{ mode = "n", "<leader>f", desc = "Telescope: find" },
{ mode = "n", "<leader>gd", desc = "Git: diff" },
{ mode = "n", "<leader>s", desc = "Substitute" },
{ mode = "n", "<leader>t", desc = "Terminal" },
{ mode = "n", "<leader>r", desc = "Quarto" },
{ mode = "n", "<C-W>", desc = "Navigation" },
{ mode = "n", "<leader>p", desc = "Lilypond" },
})
end,
}

View File

@@ -1,74 +1,72 @@
return {
-- improved wild menu
{
"gelguy/wilder.nvim",
dependencies = {
{
"nvim-tree/nvim-web-devicons",
lazy = true,
},
"roxma/nvim-yarp",
"roxma/vim-hug-neovim-rpc",
"romgrk/fzy-lua-native",
"nixprime/cpsm",
"gelguy/wilder.nvim",
dependencies = {
{
"nvim-tree/nvim-web-devicons",
lazy = true,
},
config = function()
local wilder = require("wilder")
wilder.setup({
modes = { ":", "/", "?" },
accept_key = "<CR>",
reject_key = "<C-e>",
})
wilder.set_option("pipeline", {
wilder.branch(
wilder.python_file_finder_pipeline({
file_command = function(ctx, arg)
if string.find(arg, ".") ~= nil then
return { "fd", "-tf", "-H" }
else
return { "fd", "-tf" }
end
end,
dir_command = { "fd", "-td" },
filters = { "cpsm_filter" },
}),
wilder.substitute_pipeline({
pipeline = wilder.python_search_pipeline({
skip_cmdtype_check = 1,
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
}),
}),
wilder.cmdline_pipeline({
fuzzy = 2,
fuzzy_filter = wilder.lua_fzy_filter(),
}),
{
wilder.check(function(ctx, x)
return x == ""
end),
wilder.history(),
},
wilder.python_search_pipeline({
"roxma/nvim-yarp",
"roxma/vim-hug-neovim-rpc",
"romgrk/fzy-lua-native",
"nixprime/cpsm",
},
config = function()
local wilder = require("wilder")
wilder.setup({
modes = { ":", "/", "?" },
accept_key = "<CR>",
reject_key = "<C-e>",
})
wilder.set_option("pipeline", {
wilder.branch(
wilder.python_file_finder_pipeline({
file_command = function(ctx, arg)
if string.find(arg, ".") ~= nil then
return { "fd", "-tf", "-H" }
else
return { "fd", "-tf" }
end
end,
dir_command = { "fd", "-td" },
filters = { "cpsm_filter" },
}),
wilder.substitute_pipeline({
pipeline = wilder.python_search_pipeline({
skip_cmdtype_check = 1,
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
})
),
})
local highlighters = {
wilder.pcre2_highlighter(),
wilder.lua_fzy_highlighter(),
}
wilder.set_option(
"renderer",
wilder.popupmenu_renderer({
highlighter = highlighters,
left = { " ", wilder.popupmenu_devicons() },
right = { " ", wilder.popupmenu_scrollbar() },
}),
}),
wilder.cmdline_pipeline({
fuzzy = 2,
fuzzy_filter = wilder.lua_fzy_filter(),
}),
{
wilder.check(function(ctx, x)
return x == ""
end),
wilder.history(),
},
wilder.python_search_pipeline({
pattern = wilder.python_fuzzy_pattern({
start_at_boundary = 0,
}),
})
)
end,
},
),
})
local highlighters = {
wilder.pcre2_highlighter(),
wilder.lua_fzy_highlighter(),
}
wilder.set_option(
"renderer",
wilder.popupmenu_renderer({
highlighter = highlighters,
left = { " ", wilder.popupmenu_devicons() },
right = { " ", wilder.popupmenu_scrollbar() },
})
)
end,
}

View File

@@ -1,5 +1,12 @@
return {
-- improved movement of windows
"sindrets/winshift.nvim",
keys = {
{
"<C-W>m",
"<cmd>WinShift<CR>",
desc = "Navigation: enter window shift mode",
},
},
opts = {},
}