diff --git a/modules/home/nixvim/keymaps.nix b/modules/home/nixvim/keymaps.nix index 9a7e674..bb22030 100644 --- a/modules/home/nixvim/keymaps.nix +++ b/modules/home/nixvim/keymaps.nix @@ -59,6 +59,10 @@ in { (mk "gh" "DiffviewFileHistory %" "ファイル履歴") (mk "gq" "DiffviewClose" "差分を閉じる") + # UFO (folding) + (mkRaw "zR" "require('ufo').openAllFolds" "全て展開") + (mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ") + # Dropbar (mkRaw "dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート") diff --git a/modules/home/nixvim/plugins/ui/default.nix b/modules/home/nixvim/plugins/ui/default.nix index 6b6d594..f6dbf9e 100644 --- a/modules/home/nixvim/plugins/ui/default.nix +++ b/modules/home/nixvim/plugins/ui/default.nix @@ -12,5 +12,6 @@ ./colorizer.nix ./dropbar.nix ./scrollbar.nix + ./ufo.nix ]; } diff --git a/modules/home/nixvim/plugins/ui/ufo.nix b/modules/home/nixvim/plugins/ui/ufo.nix new file mode 100644 index 0000000..91319d4 --- /dev/null +++ b/modules/home/nixvim/plugins/ui/ufo.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: { + programs.nixvim = { + opts = { + foldcolumn = "1"; + foldlevel = 99; + foldlevelstart = 99; + foldenable = true; + }; + + extraPlugins = [ + pkgs.vimPlugins.nvim-ufo + pkgs.vimPlugins.promise-async + ]; + + extraConfigLua = '' + require("ufo").setup({ + provider_selector = function() + return { "treesitter", "indent" } + end, + }) + ''; + }; +}