nvim: define variables in the narrowest possible scope

This commit is contained in:
Fernando Schauenburg 2024-07-23 23:09:06 +02:00
parent e1adca48e0
commit f6e6a319a5
19 changed files with 290 additions and 268 deletions

View file

@ -1,15 +1,16 @@
local icon = require("fschauen.util.icons").ui.Comment
return {
"tpope/vim-commentary",
cmd = "Commentary",
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Comment
return {
-- stylua: ignore start
{ "gc", "<Plug>Commentary", mode = {"n", "x", "o"}, desc = icon.." Comment in/out" },
{ "gcc", "<Plug>CommentaryLine", desc = icon.." Comment in/out line" },
{ "gcu", "<Plug>Commentary<Plug>Commentary", desc = icon.." Undo comment in/out" },
-- stylua: ignore end
},
}
end,
}

View file

@ -1,3 +1,7 @@
return {
"monaqa/dial.nvim",
keys = function()
---Create a right hand side for `dial` key maps.
---@param cmd string: name of a function from `dial.map`.
---@param suffix? string: keys to add after `dial`s mapping.
@ -7,10 +11,28 @@ local dial_cmd = function(cmd, suffix)
return function() return require("dial.map")[cmd]() .. suffix end
end
local icons = require("fschauen.util.icons")
local inc, dec = icons.ui.Increment, icons.ui.Decrement
return {
-- stylua: ignore start
{ "<c-a>", dial_cmd("inc_normal"), expr = true, desc = inc.." Increment" },
{ "<c-x>", dial_cmd("dec_normal"), expr = true, desc = dec.." Decrement" },
{ "<c-a>", dial_cmd("inc_visual", "gv"), expr = true, desc = inc.." Increment", mode = "v" },
{ "<c-x>", dial_cmd("dec_visual", "gv"), expr = true, desc = dec.." Decrement", mode = "v" },
{ "g<c-a>", dial_cmd("inc_gvisual", "gv"), expr = true, desc = inc.." Increment", mode = "v" },
{ "g<c-x>", dial_cmd("dec_gvisual", "gv"), expr = true, desc = dec.." Decrement", mode = "v" },
-- stylua: ignore end
}
end,
config = function()
---Make a new augend that cycles over the given elements.
---@param elements string[]: the elements to cycle.
---@return table: @see `dial.types.Augend`
local cyclic_augend = function(elements)
local cycle = function(elements)
return require("dial.augend").constant.new {
elements = elements,
word = true,
@ -30,26 +52,6 @@ local weekdays = {
local weekdays_short = vim.tbl_map(function(s) return s:sub(1, 3) end, weekdays)
local ui = require("fschauen.util.icons").ui
local inc, dec = ui.Increment, ui.Decrement
return {
"monaqa/dial.nvim",
keys = {
-- stylua: ignore start
{ "<c-a>", dial_cmd("inc_normal"), expr = true, desc = inc.." Increment" },
{ "<c-x>", dial_cmd("dec_normal"), expr = true, desc = dec.." Decrement" },
{ "<c-a>", dial_cmd("inc_visual", "gv"), expr = true, desc = inc.." Increment", mode = "v" },
{ "<c-x>", dial_cmd("dec_visual", "gv"), expr = true, desc = dec.." Decrement", mode = "v" },
{ "g<c-a>", dial_cmd("inc_gvisual", "gv"), expr = true, desc = inc.." Increment", mode = "v" },
{ "g<c-x>", dial_cmd("dec_gvisual", "gv"), expr = true, desc = dec.." Decrement", mode = "v" },
-- stylua: ignore end
},
config = function()
local augend = require("dial.augend")
require("dial.config").augends:register_group {
default = {
@ -61,8 +63,8 @@ return {
augend.date.alias["%Y-%m-%d"],
augend.date.alias["%d/%m/%Y"],
augend.date.alias["%d.%m.%Y"],
cyclic_augend(weekdays),
cyclic_augend(weekdays_short),
cycle(weekdays),
cycle(weekdays_short),
},
}
end,

View file

@ -1,14 +1,15 @@
local icon = require("fschauen.util.icons").ui.Git
return {
"tpope/vim-fugitive",
cmd = { "G", "Git" },
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Git
return {
-- stylua: ignore start
{ "<leader>gS", "<cmd>tab Git<cr>", desc = icon.." [S]status (fugitive)" },
{ "<leader>gb", "<cmd>Git blame<cr>", desc = icon.." [b]lame (fugitive)" },
-- stylua: ignore end
},
}
end,
}

View file

@ -1,14 +1,16 @@
local icon = require("fschauen.util.icons").ui.Git
return {
"rhysd/git-messenger.vim",
cmd = "GitMessenger",
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Git
return {
-- stylua: ignore start
{ "<leader>gm", "<cmd>GitMessenger<cr>", desc = icon.." [g]it [m]essenger" },
-- stylua: ignore end
},
}
end,
init = function()
-- Disable default mappings, as I have my own for lazy-loading.

View file

@ -1,3 +1,9 @@
return {
"ruifm/gitlinker.nvim",
dependencies = "nvim-lua/plenary.nvim",
keys = function()
local open_repo = function()
require("gitlinker").get_repo_url {
action_callback = require("gitlinker.actions").open_in_browser,
@ -21,13 +27,7 @@ local clipboard = function(mode)
end
local icon = require("fschauen.util.icons").ui.Git
return {
"ruifm/gitlinker.nvim",
dependencies = "nvim-lua/plenary.nvim",
keys = {
-- stylua: ignore start
{ "<leader>gr", open_repo, desc = icon.." open [r]epository in browser" },
{ "<leader>gl", clipboard("n"), desc = icon.." copy perma[l]ink to clipboard" },
@ -35,7 +35,8 @@ return {
{ "<leader>gL", browser("n"), desc = icon.." open perma[L]ink in browser" },
{ "<leader>gL", browser("v"), desc = icon.." open perma[L]ink in browser", mode = "v" },
-- stylua: ignore end
},
}
end,
-- This really does need to be a function, because we need to defer requiring
-- the `gitlinker.hosts` module until after the plugin is loaded.

View file

@ -1,6 +1,3 @@
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
"2kabhishek/nerdy.nvim",
@ -11,7 +8,11 @@ return {
"nvim-telescope/telescope.nvim",
},
keys = {
keys = function()
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
{ lhs("i"), "<cmd>Nerdy<cr>", desc = desc("Nerd [i]cons") },
},
}
end,
}

View file

@ -1,15 +1,15 @@
local icon = require("fschauen.util.icons").ui.Lint
return {
"mfussenegger/nvim-lint",
keys = {
keys = function()
return {
{
"<leader>L",
function() require("lint").try_lint() end,
desc = icon .. " [L]int file",
},
desc = require("fschauen.util.icons").ui.Lint .. " [L]int file",
},
}
end,
config = function()
require("lint").linters_by_ft = {

View file

@ -1,6 +1,7 @@
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
"rcarriga/nvim-notify",
keys = function()
local telescope_notifications = function()
local telescope = vim.F.npcall(require, "telescope")
if not telescope then
@ -17,16 +18,17 @@ end
local dismiss_notifications = function() require("notify").dismiss() end
return {
"rcarriga/nvim-notify",
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
keys = {
return {
-- stylua: ignore start
{ "<leader>n", "<cmd>Notifications<cr>", desc = "Display notification history" },
{ "<c-q>", dismiss_notifications, desc = "Dismiss notifications" },
{ lhs("n"), telescope_notifications, desc = desc("[n]otifications") },
-- stylua: ignore end
},
}
end,
lazy = false,

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Web
return {
"tyru/open-browser.vim",
@ -9,14 +7,17 @@ return {
"OpenBrowserSmartSearch",
},
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Web
return {
{
"<leader>o",
"<Plug>(openbrowser-smart-search)",
desc = icon .. " [o]pen URL under cursor or search the web",
mode = { "n", "v" },
},
},
}
end,
init = function() vim.g.openbrowser_default_search = "duckduckgo" end,
}

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Graph
return {
"weirongxu/plantuml-previewer.vim",
@ -25,6 +23,7 @@ return {
end,
config = function()
local icon = require("fschauen.util.icons").ui.Graph
local group = vim.api.nvim_create_augroup("fschauen.plantuml", { clear = true })
vim.api.nvim_create_autocmd("FileType", {
desc = "Create key map to toggle plantuml preview.",

View file

@ -1,18 +1,19 @@
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
"nvim-telescope/telescope-file-browser.nvim",
dependencies = "nvim-telescope/telescope.nvim",
keys = {
keys = function()
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
{
lhs("B"),
"<cmd>Telescope file_browser theme=ivy<cr>",
desc = desc("file [B]rowser"),
},
},
}
end,
config = function() require("telescope").load_extension("file_browser") end,
}

View file

@ -1,8 +1,3 @@
local icon = require("fschauen.util.icons").ui.Text
local description = icon .. " [c]hange text [c]ase"
local theme = function() return require("telescope.themes").get_cursor() end
return {
"johmsalas/text-case.nvim",
@ -15,7 +10,12 @@ return {
"TextCaseStartReplacingCommand",
},
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Text
local description = icon .. " [c]hange text [c]ase"
local theme = function() return require("telescope.themes").get_cursor() end
return {
{
"<leader>cc",
function() require("telescope").extensions.textcase.normal_mode(theme()) end,
@ -46,7 +46,8 @@ return {
mode = "v",
desc = description,
},
},
}
end,
config = function()
require("textcase").setup {

View file

@ -1,8 +1,3 @@
local ui = require("fschauen.util.icons").ui
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
"folke/todo-comments.nvim",
@ -13,11 +8,17 @@ return {
event = { "BufReadPost", "BufNewFile" },
keys = {
keys = function()
local helper = require("fschauen.plugins.telescope").keymap_helper
local lhs, desc = helper.lhs, helper.description
return {
{ lhs("t"), "<cmd>TodoTelescope<cr>", desc = desc("[t]odos") },
},
}
end,
opts = {
opts = function()
local ui = require("fschauen.util.icons").ui
return {
keywords = {
TODO = { icon = ui.Checkbox },
FIX = { icon = ui.Bug },
@ -33,5 +34,6 @@ return {
keyword = "wide_fg",
after = "",
},
},
}
end,
}

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Tree
return {
"nvim-treesitter/nvim-treesitter",
@ -15,13 +13,17 @@ return {
event = "VeryLazy",
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Tree
return {
-- stylua: ignore start
{ "<leader>Tp", "<cmd>TSPlaygroundToggle<cr>", desc = icon.." [T]reesitter [p]layground (toggle)" },
{ "<leader>Th", "<cmd>TSHighlightCapturesUnderCursor<cr>", desc = icon.." [T]reesitter [h]ighlights" },
{ "<leader>Tn", "<cmd>TSNodeUnderCursor<cr>", desc = icon.." [T]reesitter [n]ode under cursor" },
-- stylua: ignore end
},
}
end,
config = function()
require("nvim-treesitter.configs").setup {

View file

@ -1,16 +1,18 @@
local icon = require("fschauen.util.icons").ui.TrafficLight
return {
"folke/trouble.nvim",
dependencies = "nvim-tree/nvim-web-devicons",
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.TrafficLight
return {
-- stylua: ignore start
{ "<leader>lt", "<cmd>TroubleToggle<cr>", desc = icon.." trouble [t]toggle" },
{ "<leader>lw", "<cmd>TroubleToggle workspace_diagnostics<cr>", desc = icon.." trouble [w]orkspace" },
{ "<leader>ld", "<cmd>TroubleToggle document_diagnostics<cr>", desc = icon.." trouble [d]ocument" },
-- stylua: ignore end
},
}
end,
opts = {
padding = false, -- don't add an extra new line of top of the list

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Undo
return {
"mbbill/undotree",
@ -13,7 +11,10 @@ return {
vim.g.undotree_TreeReturnShape = ""
end,
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Undo
return {
{ "<leader>u", "<cmd>UndotreeToggle<cr>", desc = icon .. " toggle [u]ndo tree" },
},
}
end,
}

View file

@ -1,3 +1,11 @@
local ui = require("fschauen.util.icons").ui
return {
"lukas-reineke/virt-column.nvim",
event = { "BufReadPost", "BufNewFile" },
keys = function()
local toggle_colorcolumn = function()
if vim.o.colorcolumn == "" then
vim.o.colorcolumn = "+1" -- one after 'textwidth'
@ -6,16 +14,10 @@ local toggle_colorcolumn = function()
end
end
local ui = require("fschauen.util.icons").ui
return {
"lukas-reineke/virt-column.nvim",
event = { "BufReadPost", "BufNewFile" },
keys = {
{ "<leader>sc", toggle_colorcolumn, desc = ui.Toggle .. " toggle virtual colunn" },
},
}
end,
opts = {
char = ui.LineMiddle,

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Whitespace
return {
"ntpeters/vim-better-whitespace",
@ -15,12 +13,15 @@ return {
}
end,
keys = {
keys = function()
local icon = require("fschauen.util.icons").ui.Whitespace
return {
-- stylua: ignore start
{ "<leader>ww", "<cmd>ToggleWhitespace<cr>", desc = icon.." toggle whitespace" },
{ "<leader>wj", "<cmd>NextTrailingWhitespace<cr>", desc = icon.." next whitespace" },
{ "<leader>wk", "<cmd>PrevTrailingWhitespace<cr>", desc = icon.." previous whitespace" },
{ "<leader>W", "<cmd>StripWhitespace<cr>", desc = icon.." strip whitespace" },
-- stylua: ignore end
},
}
end,
}

View file

@ -88,7 +88,7 @@ M.ui = {
Circle = "",
Comment = "",
Comments = "",
Decrement = "",
Decrement = "", -- 
Diagnostic = "",
EmptyFolder = "",
EmptyFolderOpen = "",
@ -104,7 +104,7 @@ M.ui = {
Gauge = "󰓅", -- 
Git = "",
Graph = "󱁊",
Increment = "",
Increment = "", -- 
LineLeft = "",
LineLeftBold = "",
LineMiddle = "",