On 20/06/08 01:23PM, Chris Jones wrote:
> I imagine someone familiar with foldexpr's would see at a glance what's
> wrong with the fold expression when the number of lines in the file runs
> in the thousands...

Fold expressions are powerful, but they are evaluated for every line,
and can be slow because of that. It's slow because of the expensive
regex, equivalent to: https://regex101.com/r/fx4iPC/2.

You can simplify it to just match several equal signs at the beginning
of the line:

setlocal 
foldexpr=getline(v:lnum)=~'^=\\+'?\">\".(len(matchstr(getline(v:lnum),'^=\\+'))-1):\"=\"

It should be much faster.

What it does:

getline(v:lnum) - get text of the current line
=~              - check if string matches a regex
'^=\\+'         - one or more = at the beginning of line; this is my
                  simplification, might give you false positives, but
                  if you have correct mediawiki file it should be ok
?               - part of ternary operator, like in C, check :h expr1
\">\"           - literal string ">", part fold level indication,
                  check :h fold-expr
.               - string concatenation :h expr-.
len(...)-1      - counts how many = are at the beginning of the line
                  and subtracts 1, so top level headings are
                  not folded. With previous ">" it will evaluate
                  to e.g. ">1" and set fold level.
:               - separation in ternary operator
\"=\"           - literal "=" string; If there is no match it
                  will use fold level from previous line,
                  extending the fold to what's under the header.

Regards,
Matt

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/20200609120408.efyyoibepfe6lirq%40arch.

Attachment: signature.asc
Description: PGP signature

Reply via email to