From 28d9258344193ed6a32fa3618bbed4f4a70e2cbf Mon Sep 17 00:00:00 2001 From: moons-14 Date: Wed, 11 Mar 2026 19:23:13 +0900 Subject: [PATCH] nixvim: add nvim-ufo for LSP/treesitter folding Co-Authored-By: Claude Sonnet 4.6 --- modules/home/nixvim/keymaps.nix | 4 ++++ modules/home/nixvim/plugins/ui/default.nix | 1 + modules/home/nixvim/plugins/ui/ufo.nix | 23 ++++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 modules/home/nixvim/plugins/ui/ufo.nix 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, + }) + ''; + }; +}