diff --git a/lua/keymaps.lua b/lua/keymaps.lua index 6dc84c0..5f6d7ee 100644 --- a/lua/keymaps.lua +++ b/lua/keymaps.lua @@ -40,6 +40,16 @@ map("n", "", "Pick help", { desc = "Find: help tags" }) map("n", "", "Oil", { desc = "File explorer (Oil)" }) map("n", "", "Pick keymaps", { desc = "Find: keymaps" }) +-- Folding (stock Vim fold keys, remapped to themselves just so they show up +-- with descriptions in the keymap picker ) +map("n", "za", "za", { desc = "Fold: toggle under cursor" }) +map("n", "zc", "zc", { desc = "Fold: close under cursor" }) +map("n", "zo", "zo", { desc = "Fold: open under cursor" }) +map("n", "zR", "zR", { desc = "Fold: open all" }) +map("n", "zM", "zM", { desc = "Fold: close all" }) +map("n", "zj", "zj", { desc = "Fold: move to next fold start" }) +map("n", "zk", "zk", { desc = "Fold: move to previous fold end" }) + -- Spell map("n", "sc", function() vim.wo.spell = not vim.wo.spell diff --git a/lua/options.lua b/lua/options.lua index 5efe8a3..1d1357d 100644 --- a/lua/options.lua +++ b/lua/options.lua @@ -12,6 +12,14 @@ o.winborder = "single" o.termguicolors = true o.autoread = true +-- Folding: native treesitter folds (function/class/block-aware), no plugin needed. +-- `foldmethod=diff` (used automatically in :diffthis / fugitive / diffview windows) +-- takes over on its own and isn't affected by this. +o.foldmethod = "expr" +o.foldexpr = "v:lua.vim.treesitter.foldexpr()" +o.foldlevel = 99 -- start with everything open +o.foldlevelstart = 99 + vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, { command = "if mode() != 'c' | checktime | endif", })