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 { return {
"tpope/vim-commentary", "tpope/vim-commentary",
cmd = "Commentary", cmd = "Commentary",
keys = { keys = function()
local icon = require("fschauen.util.icons").ui.Comment
return {
-- stylua: ignore start -- stylua: ignore start
{ "gc", "<Plug>Commentary", mode = {"n", "x", "o"}, desc = icon.." Comment in/out" }, { "gc", "<Plug>Commentary", mode = {"n", "x", "o"}, desc = icon.." Comment in/out" },
{ "gcc", "<Plug>CommentaryLine", desc = icon.." Comment in/out line" }, { "gcc", "<Plug>CommentaryLine", desc = icon.." Comment in/out line" },
{ "gcu", "<Plug>Commentary<Plug>Commentary", desc = icon.." Undo comment in/out" }, { "gcu", "<Plug>Commentary<Plug>Commentary", desc = icon.." Undo comment in/out" },
-- stylua: ignore end -- 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. ---Create a right hand side for `dial` key maps.
---@param cmd string: name of a function from `dial.map`. ---@param cmd string: name of a function from `dial.map`.
---@param suffix? string: keys to add after `dial`s mapping. ---@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 return function() return require("dial.map")[cmd]() .. suffix end
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. ---Make a new augend that cycles over the given elements.
---@param elements string[]: the elements to cycle. ---@param elements string[]: the elements to cycle.
---@return table: @see `dial.types.Augend` ---@return table: @see `dial.types.Augend`
local cyclic_augend = function(elements) local cycle = function(elements)
return require("dial.augend").constant.new { return require("dial.augend").constant.new {
elements = elements, elements = elements,
word = true, word = true,
@ -30,26 +52,6 @@ local weekdays = {
local weekdays_short = vim.tbl_map(function(s) return s:sub(1, 3) end, 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") local augend = require("dial.augend")
require("dial.config").augends:register_group { require("dial.config").augends:register_group {
default = { default = {
@ -61,8 +63,8 @@ return {
augend.date.alias["%Y-%m-%d"], augend.date.alias["%Y-%m-%d"],
augend.date.alias["%d/%m/%Y"], augend.date.alias["%d/%m/%Y"],
augend.date.alias["%d.%m.%Y"], augend.date.alias["%d.%m.%Y"],
cyclic_augend(weekdays), cycle(weekdays),
cyclic_augend(weekdays_short), cycle(weekdays_short),
}, },
} }
end, end,

View file

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

View file

@ -1,14 +1,16 @@
local icon = require("fschauen.util.icons").ui.Git
return { return {
"rhysd/git-messenger.vim", "rhysd/git-messenger.vim",
cmd = "GitMessenger", cmd = "GitMessenger",
keys = { keys = function()
local icon = require("fschauen.util.icons").ui.Git
return {
-- stylua: ignore start -- stylua: ignore start
{ "<leader>gm", "<cmd>GitMessenger<cr>", desc = icon.." [g]it [m]essenger" }, { "<leader>gm", "<cmd>GitMessenger<cr>", desc = icon.." [g]it [m]essenger" },
-- stylua: ignore end -- stylua: ignore end
}, }
end,
init = function() init = function()
-- Disable default mappings, as I have my own for lazy-loading. -- 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() local open_repo = function()
require("gitlinker").get_repo_url { require("gitlinker").get_repo_url {
action_callback = require("gitlinker.actions").open_in_browser, action_callback = require("gitlinker.actions").open_in_browser,
@ -21,13 +27,7 @@ local clipboard = function(mode)
end end
local icon = require("fschauen.util.icons").ui.Git local icon = require("fschauen.util.icons").ui.Git
return { return {
"ruifm/gitlinker.nvim",
dependencies = "nvim-lua/plenary.nvim",
keys = {
-- stylua: ignore start -- stylua: ignore start
{ "<leader>gr", open_repo, desc = icon.." open [r]epository in browser" }, { "<leader>gr", open_repo, desc = icon.." open [r]epository in browser" },
{ "<leader>gl", clipboard("n"), desc = icon.." copy perma[l]ink to clipboard" }, { "<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("n"), desc = icon.." open perma[L]ink in browser" },
{ "<leader>gL", browser("v"), desc = icon.." open perma[L]ink in browser", mode = "v" }, { "<leader>gL", browser("v"), desc = icon.." open perma[L]ink in browser", mode = "v" },
-- stylua: ignore end -- stylua: ignore end
}, }
end,
-- This really does need to be a function, because we need to defer requiring -- This really does need to be a function, because we need to defer requiring
-- the `gitlinker.hosts` module until after the plugin is loaded. -- 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 { return {
"2kabhishek/nerdy.nvim", "2kabhishek/nerdy.nvim",
@ -11,7 +8,11 @@ return {
"nvim-telescope/telescope.nvim", "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") }, { 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 { return {
"mfussenegger/nvim-lint", "mfussenegger/nvim-lint",
keys = { keys = function()
return {
{ {
"<leader>L", "<leader>L",
function() require("lint").try_lint() end, function() require("lint").try_lint() end,
desc = icon .. " [L]int file", desc = require("fschauen.util.icons").ui.Lint .. " [L]int file",
},
}, },
}
end,
config = function() config = function()
require("lint").linters_by_ft = { require("lint").linters_by_ft = {

View file

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

View file

@ -1,5 +1,3 @@
local icon = require("fschauen.util.icons").ui.Web
return { return {
"tyru/open-browser.vim", "tyru/open-browser.vim",
@ -9,14 +7,17 @@ return {
"OpenBrowserSmartSearch", "OpenBrowserSmartSearch",
}, },
keys = { keys = function()
local icon = require("fschauen.util.icons").ui.Web
return {
{ {
"<leader>o", "<leader>o",
"<Plug>(openbrowser-smart-search)", "<Plug>(openbrowser-smart-search)",
desc = icon .. " [o]pen URL under cursor or search the web", desc = icon .. " [o]pen URL under cursor or search the web",
mode = { "n", "v" }, mode = { "n", "v" },
}, },
}, }
end,
init = function() vim.g.openbrowser_default_search = "duckduckgo" 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 { return {
"weirongxu/plantuml-previewer.vim", "weirongxu/plantuml-previewer.vim",
@ -25,6 +23,7 @@ return {
end, end,
config = function() config = function()
local icon = require("fschauen.util.icons").ui.Graph
local group = vim.api.nvim_create_augroup("fschauen.plantuml", { clear = true }) local group = vim.api.nvim_create_augroup("fschauen.plantuml", { clear = true })
vim.api.nvim_create_autocmd("FileType", { vim.api.nvim_create_autocmd("FileType", {
desc = "Create key map to toggle plantuml preview.", 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 { return {
"nvim-telescope/telescope-file-browser.nvim", "nvim-telescope/telescope-file-browser.nvim",
dependencies = "nvim-telescope/telescope.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"), lhs("B"),
"<cmd>Telescope file_browser theme=ivy<cr>", "<cmd>Telescope file_browser theme=ivy<cr>",
desc = desc("file [B]rowser"), desc = desc("file [B]rowser"),
}, },
}, }
end,
config = function() require("telescope").load_extension("file_browser") 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 { return {
"johmsalas/text-case.nvim", "johmsalas/text-case.nvim",
@ -15,7 +10,12 @@ return {
"TextCaseStartReplacingCommand", "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", "<leader>cc",
function() require("telescope").extensions.textcase.normal_mode(theme()) end, function() require("telescope").extensions.textcase.normal_mode(theme()) end,
@ -46,7 +46,8 @@ return {
mode = "v", mode = "v",
desc = description, desc = description,
}, },
}, }
end,
config = function() config = function()
require("textcase").setup { 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 { return {
"folke/todo-comments.nvim", "folke/todo-comments.nvim",
@ -13,11 +8,17 @@ return {
event = { "BufReadPost", "BufNewFile" }, 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") }, { lhs("t"), "<cmd>TodoTelescope<cr>", desc = desc("[t]odos") },
}, }
end,
opts = { opts = function()
local ui = require("fschauen.util.icons").ui
return {
keywords = { keywords = {
TODO = { icon = ui.Checkbox }, TODO = { icon = ui.Checkbox },
FIX = { icon = ui.Bug }, FIX = { icon = ui.Bug },
@ -33,5 +34,6 @@ return {
keyword = "wide_fg", keyword = "wide_fg",
after = "", after = "",
}, },
}, }
end,
} }

View file

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

View file

@ -1,16 +1,18 @@
local icon = require("fschauen.util.icons").ui.TrafficLight
return { return {
"folke/trouble.nvim", "folke/trouble.nvim",
dependencies = "nvim-tree/nvim-web-devicons", dependencies = "nvim-tree/nvim-web-devicons",
keys = { keys = function()
local icon = require("fschauen.util.icons").ui.TrafficLight
return {
-- stylua: ignore start -- stylua: ignore start
{ "<leader>lt", "<cmd>TroubleToggle<cr>", desc = icon.." trouble [t]toggle" }, { "<leader>lt", "<cmd>TroubleToggle<cr>", desc = icon.." trouble [t]toggle" },
{ "<leader>lw", "<cmd>TroubleToggle workspace_diagnostics<cr>", desc = icon.." trouble [w]orkspace" }, { "<leader>lw", "<cmd>TroubleToggle workspace_diagnostics<cr>", desc = icon.." trouble [w]orkspace" },
{ "<leader>ld", "<cmd>TroubleToggle document_diagnostics<cr>", desc = icon.." trouble [d]ocument" }, { "<leader>ld", "<cmd>TroubleToggle document_diagnostics<cr>", desc = icon.." trouble [d]ocument" },
-- stylua: ignore end -- stylua: ignore end
}, }
end,
opts = { opts = {
padding = false, -- don't add an extra new line of top of the list 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 { return {
"mbbill/undotree", "mbbill/undotree",
@ -13,7 +11,10 @@ return {
vim.g.undotree_TreeReturnShape = "" vim.g.undotree_TreeReturnShape = ""
end, end,
keys = { keys = function()
local icon = require("fschauen.util.icons").ui.Undo
return {
{ "<leader>u", "<cmd>UndotreeToggle<cr>", desc = icon .. " toggle [u]ndo tree" }, { "<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() local toggle_colorcolumn = function()
if vim.o.colorcolumn == "" then if vim.o.colorcolumn == "" then
vim.o.colorcolumn = "+1" -- one after 'textwidth' vim.o.colorcolumn = "+1" -- one after 'textwidth'
@ -6,16 +14,10 @@ local toggle_colorcolumn = function()
end end
end end
local ui = require("fschauen.util.icons").ui
return { return {
"lukas-reineke/virt-column.nvim",
event = { "BufReadPost", "BufNewFile" },
keys = {
{ "<leader>sc", toggle_colorcolumn, desc = ui.Toggle .. " toggle virtual colunn" }, { "<leader>sc", toggle_colorcolumn, desc = ui.Toggle .. " toggle virtual colunn" },
}, }
end,
opts = { opts = {
char = ui.LineMiddle, char = ui.LineMiddle,

View file

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

View file

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