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.

Reply via email to