aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--doc/nvim-treesitter.txt2
-rw-r--r--lua/nvim-treesitter/fold.lua4
3 files changed, 5 insertions, 3 deletions
diff --git a/README.md b/README.md
index 3e3100113..c8c9fc8c0 100644
--- a/README.md
+++ b/README.md
@@ -274,7 +274,7 @@ set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()
```
-This will respect your `foldnestmax` setting.
+This will respect your `foldminlines` and `foldnestmax` settings.
# Advanced setup
diff --git a/doc/nvim-treesitter.txt b/doc/nvim-treesitter.txt
index 07b9cd10d..493761d86 100644
--- a/doc/nvim-treesitter.txt
+++ b/doc/nvim-treesitter.txt
@@ -438,7 +438,7 @@ To use it: >
set foldexpr=nvim_treesitter#foldexpr()
<
-This will respect your 'foldnestmax' setting.
+This will respect your 'foldminlines' and 'foldnestmax' settings.
Note: This is highly experimental, and folding can break on some types of
edits. If you encounter such breakage, hiting `zx` should fix folding.
diff --git a/lua/nvim-treesitter/fold.lua b/lua/nvim-treesitter/fold.lua
index 1d635bfd2..2502f717d 100644
--- a/lua/nvim-treesitter/fold.lua
+++ b/lua/nvim-treesitter/fold.lua
@@ -37,6 +37,8 @@ local folds_levels = tsutils.memoize_by_buf_tick(function(bufnr)
local prev_start = -1
local prev_stop = -1
+ local min_fold_lines = api.nvim_win_get_option(0, "foldminlines")
+
for _, node in ipairs(matches) do
local start, _, stop, stop_col = node.node:range()
@@ -45,7 +47,7 @@ local folds_levels = tsutils.memoize_by_buf_tick(function(bufnr)
end
local fold_length = stop - start + 1
- local should_fold = fold_length >= 2
+ local should_fold = fold_length > min_fold_lines
-- Fold only multiline nodes that are not exactly the same as previously met folds
-- Checking against just the previously found fold is sufficient if nodes