-*fold.txt* For Vim version 9.1. Last change: 2024 Dec 16
+*fold.txt* For Vim version 9.1. Last change: 2024 Dec 17
VIM REFERENCE MANUAL by Bram Moolenaar
"<1", "<2", .. a fold with this level ends at this line
">1", ">2", .. a fold with this level starts at this line
-The result values "=", "s" and "a" are more expensive, please see |fold-expr-slow|.
+The result values "=", "s" and "a" are more expensive, please see
+|fold-expr-slow|.
It is not required to mark the start (end) of a fold with ">1" ("<1"), a fold
will also start (end) when the fold level is higher (lower) than the fold
be visible then.
If the 'foldexpr' expression starts with s: or |<SID>|, then it is replaced
-with the script ID (|local-function|). Examples: >
+with the script ID (|local-function|). Examples: >
set foldexpr=s:MyFoldExpr()
set foldexpr=<SID>SomeFoldExpr()
<
It may happen that folds are not updated properly. You can use |zx| or |zX|
to force updating folds.
-Minimizing Computational Cost *fold-expr-slow*
+MINIMIZING COMPUTATIONAL COST *fold-expr-slow*
Due to its computational cost, this fold method can make Vim unresponsive,
especially when the fold level of all lines have to be initially computed.
to those lines whose fold level was affected by it (and reuses the known
foldlevels of all the others).
-The fold expression should therefore strive to minimize the number of dependent
-lines needed for the computation of a given line: For example, try to avoid the
-"=", "a" and "s" return values, because these will require the evaluation of the
-fold levels on previous lines until an independent fold level is found.
+The fold expression should therefore strive to minimize the number of
+dependent lines needed for the computation of a given line: For example, try
+to avoid the "=", "a" and "s" return values, because these will require the
+evaluation of the fold levels on previous lines until an independent fold
+level is found.
-If this proves difficult, the next best thing could be to cache all fold levels
-in a buffer-local variable (b:foldlevels) that is only updated on |b:changedtick|:
+If this proves difficult, the next best thing could be to cache all fold
+levels in a buffer-local variable (b:foldlevels) that is only updated on
+|b:changedtick|:
>vim
vim9script
def MyFoldFunc(): number
enddef
set foldexpr=s:MyFoldFunc()
<
-In above example further speedup was gained by using a precompiled Vim9script
-function without arguments (that must still use v:lnum). See |expr-option-function|.
+In above example further speedup was gained by using a precompiled Vim9 script
+function without arguments (that must still use v:lnum). See
+|expr-option-function|.
SYNTAX *fold-syntax*
Also forces recomputing folds, like |zx|.
*zm*
-zm Fold more: Subtract |v:count1| from 'foldlevel'. If 'foldlevel' was
- already zero nothing happens.
+zm Fold more: Subtract |v:count1| from 'foldlevel'. If
+ 'foldlevel' was already zero nothing happens.
'foldenable' will be set.
*zM*
EXECUTING COMMANDS ON FOLDS ~
-:[range]foldd[oopen] {cmd} *:foldd* *:folddo* *:folddoopen*
+:[range]foldd[oopen] {cmd} *:foldd* *:folddo* *:folddoopen*
Execute {cmd} on all lines that are not in a closed fold.
When [range] is given, only these lines are used.
Each time {cmd} is executed the cursor is positioned on the
by 'fillchars'.
If the 'foldtext' expression starts with s: or |<SID>|, then it is replaced
-with the script ID (|local-function|). Examples: >
+with the script ID (|local-function|). Examples: >
set foldtext=s:MyFoldText()
set foldtext=<SID>SomeFoldText()
<