nvim: Refactor plugin mappings to loading code

This commit is contained in:
Marty Oehme 2023-12-12 23:24:16 +01:00
parent 8aec761a20
commit 49f6a0ef58
Signed by: Marty
GPG key ID: EDBF2ED917B2EF6A
9 changed files with 273 additions and 177 deletions

View file

@ -5,6 +5,43 @@ return {
branch = "master",
config = true,
event = "VeryLazy",
keys = {
{
"<c-w>h",
function()
require("Navigator").left()
end,
{ silent = true },
},
{
"<c-w>k",
function()
require("Navigator").up()
end,
{ silent = true },
},
{
"<c-w>l",
function()
require("Navigator").right()
end,
{ silent = true },
},
{
"<c-w>j",
function()
require("Navigator").down()
end,
{ silent = true },
},
{
"<c-w>p",
function()
require("Navigator").previous()
end,
{ silent = true },
},
},
},
-- jump between letters with improved fFtT quicksearch, mimics sneak
{ "ggandor/lightspeed.nvim", event = "BufEnter" },
@ -24,6 +61,16 @@ return {
require("plugins.config.mini")
end,
event = "VimEnter", -- need to load pretty soon for Starter screen
keys = {
{ "<leader>sm", ":lua MiniMap.toggle()<cr>", { silent = true, desc = "minimap" } },
{ "<leader>ss", ":lua MiniStarter.open()<cr>", { desc = "startpage" } },
{
"<localleader>w",
function()
require("mini.trailspace").trim()
end,
},
},
},
-- simpler, programmable and multiple terminal toggling for nvim
{
@ -32,6 +79,12 @@ return {
require("plugins.config.toggleterm")
end,
cmd = { "ToggleTerm", "TermExec", "Lazygit", "Pythonterm" },
keys = {
{ "<leader>sg", ":Lazygit<cr>" },
{ "<leader>sG", ":Lazygit!<cr>" },
{ "<leader>sp", ":Pythonterm<cr>" },
{ "<leader>sP", ":Pythonterm!<cr>" },
},
},
-- colorschemes
{

View file

@ -7,7 +7,11 @@ return {
-- Align tables and other alignable things
{
"junegunn/vim-easy-align",
event = "VeryLazy",
event = "InsertEnter",
keys = {
{ "ga", "<Plug>(EasyAlign)", mode = "n" },
{ "ga", "<Plug>(EasyAlign)", mode = "x" },
},
},
-- surround things with other things using ys/cs/ds
{ "kylechui/nvim-surround", version = "*", config = true, event = "VeryLazy" },
@ -48,5 +52,13 @@ return {
})
end,
event = "InsertEnter",
keys = {
{ "<C-a>", "<Plug>(dial-increment)", mode = "n" },
{ "<C-x>", "<Plug>(dial-decrement)", mode = "n" },
{ "<C-a>", "<Plug>(dial-increment)", mode = "v" },
{ "<C-x>", "<Plug>(dial-increment)", mode = "v" },
{ "g<C-a>", "g<Plug>(dial-increment)", mode = "v" },
{ "g<C-x>", "g<Plug>(dial-increment)", mode = "v" },
},
},
}

View file

@ -8,11 +8,20 @@ return {
vim.g.vifm_exec_args = '-c "set vifminfo=" -c "set statusline=" -c "only"'
end,
cmd = "Vifm",
keys = {
{ "<leader>e", "<cmd>Vifm<cr>", desc = "browse files" },
{ "<leader>E", ":Vifm getcwd()<cr>", desc = "browse project" },
{ "<leader>vc", ":Vifm " .. vim.fn.stdpath("config") .. "/lua<cr>", desc = "open config" },
},
event = { "BufEnter" },
}, -- integrate file manager
{
"nvim-tree/nvim-tree.lua", -- integrate file tree
config = true,
dependencies = { "nvim-tree/nvim-web-devicons", config = true },
cmd = "NvimTreeToggle",
keys = {
{ "<leader>se", "<cmd>NvimTreeToggle<cr>", desc = "filetree", silent = true },
},
},
}

View file

@ -25,6 +25,10 @@ return {
opts = {
backends = { "treesitter", "lsp", "markdown", "man" },
},
keys = {
{ "<leader>so", "<cmd>AerialNavToggle<cr>", silent = true, desc = "symbol navigator" },
{ "<leader>sO", "<cmd>AerialToggle<cr>", silent = true, desc = "symbol outline" },
},
},
-- lsp setup
@ -247,6 +251,10 @@ return {
"TroubleToggle",
"TroubleClose",
},
keys = {
{ "<leader>sd", "<cmd>Trouble workspace_diagnostics<cr>", silent = true, desc = "diagnostics workspace" },
{ "<leader>sD", "<cmd>Trouble document_diagnostics<cr>", silent = true, desc = "diagnostics document" },
},
},
-- testing setup
@ -268,9 +276,8 @@ return {
}),
},
})
local status, wk = pcall(require, "which-key")
if status then
wk.register({ ["<localleader>t"] = { name = "+test" } })
if require("util").is_available("which-key") then
require("which-key").register({ ["<localleader>t"] = { name = "+test" } })
end
end,
ft = { "python" },

View file

@ -3,17 +3,42 @@ local writing_ft = { "quarto", "pandoc", "markdown", "text", "tex" }
local prose_plugs = {
-- UI improvements
-- provide distraction free writing
{ "folke/zen-mode.nvim", config = true, cmd = { "ZenMode" }, dependencies = { "folke/twilight.nvim" } },
{
"folke/zen-mode.nvim",
config = true,
cmd = { "ZenMode" },
dependencies = { "folke/twilight.nvim" },
keys = { { "<leader>sz", ":ZenMode<cr>", { silent = true } } },
},
{
"andrewferrier/wrapping.nvim",
config = function()
require("wrapping").setup({
create_keymappings = false,
notify_on_switch = false,
softener = { markdown = true, text = true, asciidoc = true },
})
end,
lazy = false,
opts = {
create_keymappings = false,
notify_on_switch = false,
softener = { quarto = true, markdown = true, text = true, asciidoc = true },
auto_set_mode_filetype_allowlist = {
"asciidoc",
"gitcommit",
"latex",
"mail",
"markdown",
"rst",
"tex",
"text",
"quarto",
},
},
event = { "BufReadPre", "BufNewFile" },
keys = {
{
"<localleader>sw",
function()
require("wrapping").toggle_wrap_mode()
end,
silent = true,
desc = "toggle wrap mode",
},
},
},
-- displays prettier headlines mimicking the ones in emacs orgmode
{
@ -35,6 +60,12 @@ local prose_plugs = {
{
"mickael-menu/zk-nvim",
config = function()
if require("util").is_available("which-key") then
local prefix = require("which-key").register
prefix({ ["<leader>n"] = { name = "+notes" } })
prefix({ ["<localleader>n"] = { name = "+note" } })
prefix({ ["<localleader>n"] = { name = "+note", mode = "v" } })
end
require("zk").setup({ picker = "telescope" })
end,
ft = writing_ft,
@ -52,9 +83,51 @@ local prose_plugs = {
"ZkNotes",
"ZkTags",
},
keys = {
{ "<leader>nn", "<cmd>ZkNotes { sort = { 'modified' } }<cr>", desc = "note list" },
{
"<leader>nf",
"<Cmd>ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }<CR>",
desc = "note search",
},
{ "<leader>nt", "<cmd>ZkTags<cr>", desc = "note tags" },
{ "<leader>nc", "<cmd>ZkCd<cr>", desc = "notes directory" },
{ "<localleader>nl", "<cmd>ZkLinks<cr>", desc = "note links" },
{ "<localleader>nb", "<cmd>ZkLinks<cr>", desc = "note backlinks" },
{ "<localleader>nn", "<cmd>ZkNew { title = vim.fn.input('Title: ') }<cr>", desc = "new note" },
{ "<localleader>nn", ":ZkNewFromTitleSelection<cr>", desc = "title from selection", mode = "v" },
{ "<localleader>nN", ":ZkNewFromContentSelection<cr>", desc = "content from selection", mode = "v" },
{ "<localleader>nf", ":ZkMatch<cr>", desc = "find note from selection", mode = "v" },
},
},
-- simple static markdown linking and link following using zettel IDs
{ "marty-oehme/zettelkasten.nvim", ft = writing_ft, event = "VeryLazy" },
{
"marty-oehme/zettelkasten.nvim",
ft = writing_ft,
keys = {
{
"<cr>",
function()
require("zettelkasten").link_follow()
end,
silent = true,
},
{
"<cr>",
function()
require("zettelkasten").link_follow(true)
end,
mode = "v",
},
{
"<leader>ni",
function()
require("zettelkasten").index_open()
end,
desc = "index page",
},
},
},
-- syntax highlighting for markdown criticmarkup (comments, additions, ...)
{ "vim-pandoc/vim-criticmarkup", ft = writing_ft },

View file

@ -7,9 +7,11 @@ return {
"nvim-lua/plenary.nvim",
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
},
event = "VeryLazy",
cmd = "Telescope",
config = function()
if require("util").is_available("which-key") then
require("which-key").register({ ["<leader>f"] = { name = "+find" } })
end
-- Setup up telescope fuzzy finding settings
--
-- Makes use of optionally installed external programs to work fully:
@ -44,26 +46,8 @@ return {
borderchars = {
{ "", "", "", "", "", "", "", "" },
prompt = { "", "", " ", "", "", "", "", "" },
results = {
"",
"",
"",
"",
"",
"",
"",
"",
},
preview = {
"",
"",
"",
"",
"",
"",
"",
"",
},
results = { "", "", "", "", "", "", "", "" },
preview = { "", "", "", "", "", "", "", "" },
},
width = 0.8,
previewer = false,
@ -73,5 +57,92 @@ return {
})
require("telescope").load_extension("fzf")
end,
keys = {
{
"<leader>vh",
function()
require("telescope.builtin").help_tags()
end,
desc = "help tags",
},
{
"<leader>vH",
function()
require("telescope.builtin").man_pages()
end,
desc = "man pages",
},
{
"<leader>vC",
function()
require("telescope.builtin").colorscheme(require("telescope.themes").get_ivy())
end,
desc = "colorschemes" ,
},
{
"<leader>fb",
function()
require("telescope.builtin").buffers(require("telescope.themes").get_ivy())
end,
desc = "list buffers",
},
{
"<leader>fo",
function()
require("telescope.builtin").oldfiles(require("telescope.themes").get_ivy())
end,
desc = "list old files",
},
{
"<leader>ff",
function()
require("telescope.builtin").find_files()
end,
desc = "find files",
},
{
"<leader>fh",
function()
require("telescope.builtin").find_files({ hidden = true })
end,
desc = "find hidden files",
},
{
"<leader>fw",
function()
require("telescope.builtin").live_grep()
end,
desc = "grep search",
},
{
"<leader>fg",
function()
require("telescope.builtin").git_status()
end,
desc = "git status",
},
{
"<leader>fc",
function()
require("telescope.builtin").git_bcommits()
end,
desc = "git buffer commits",
},
{
"<leader>fl",
function()
require("telescope.builtin").git_commits()
end,
desc = "git commit log",
},
{
"z=",
function()
require("telescope.builtin").spell_suggest(require("telescope.themes").get_ivy())
end,
desc = "spell suggest",
},
},
},
}