I am writing a Vimscript function in which I need to find the line number of the first line of the current fold. So far I have been using this:
function! GetFoldStart()
let l:current_line=line('.')
normal [z
let l:current_fold_start=line('.')
execute 'normal ' . l:current_line . 'g'
endfunction
Which works fine, but seems unnecessarily expensive. Is there a cheaper way of achieving it? Basically I need to borrow the functionality of the [z command, without actually moving to the line.
I was hoping that the variable v:foldstart would come to my rescue, but it seems only to work correctly for closed folds (for use in foldtext).
Thanks in advance for your Vim wisdom!
Jonathan.
First, use
normal!(with bang) in scripts, it is safer. Second,holds more cases then
let l:current_line=line('.')…execute "normal! ".l:current_line."gg".I don’t know a way to obtain information you want without
normal! [z, but the following code should not modify jumplist: