Kamaraju Kusumanchi wrote:
On Friday 06 October 2006 08:24, Andy Wokula wrote:
Kamaraju Kusumanchi schrieb:
I use two mappings for my Fortran (.f90) files
map <F5> <Home>v%zf
map <F6> <Home>zDv%zf
The idea is to create folds for code blocks which are of the form
subroutine some_name_here
statements_here
end subroutine some_name_here
Here F5 folds the subroutine block irrespective of whether there are any
folds within it. F6 folds the subroutine block after deleting the
existing folds.
However, if there are no folds and if I press F6, I get an error saying
that
E490: No fold found
Is it possible to combine these two maps into a single map such that
1) If there are no existing folds, create a fold (i.e. perform <F5>)
2) If there are already some folds defined, then delete them and define a
new fold (i.e. perform <F6>)
Any ideas?
thanks
raju
Some time ago I saw this:
http://vim.sourceforge.net/tips/tip.php?tip_id=1330
Andy
Thanks for the pointer. I tried
nnoremap <F5> @=((foldclosed(line('.')) <
0) ? '<Home>v%zfjj' : '<Home>zDv%zfjj')<CR>
but it did not work due to <Home>. Dont know how to escape it properly. Any
ideas? For now I am using
nnoremap <F5> @=((foldclosed(line('.')) < 0) ? '1\|v%zfjj' : '1\|
zDv%zfjj')<CR>
but would like to use <Home> instead of 1\| since that would make the map more
readable.
thanks
raju
To use the <Home> key in an expression (as here), use a double-quoted string
and a backslash-escape: "\<Home>"
See the last item under ":help expr-quote".
Best regards,
Tony.