From 97761acaff346bb7d2350ee0c6d42012fe5985b6 Mon Sep 17 00:00:00 2001 From: Munif Tanjim Date: Thu, 8 Jul 2021 23:08:06 +0600 Subject: Folds: support 'foldminlines' --- README.md | 2 +- doc/nvim-treesitter.txt | 2 +- lua/nvim-treesitter/fold.lua | 4 +++- 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 -- cgit v1.2.3-70-g09d2