On Wed, 17 May 2006 at 10:58pm, A.J.Mechelynck wrote:

> Steve Hall wrote:
> > Is there a way to construct the code below to avoid the "E193
> > :endfunction not inside a function" error in Vim 6.4 when loading a
> > Vim 7.0 script?
> >
> > This for-endfor construct produces the error:
> >
> >   function! MyFunct()
> >       if v:version < 700
> >           return
> >       endif
> >       ...
> >       for i in range(tabpagenr('$'))
> >          ...
> >       endfor
> >   endfunction
> >
> > The runtime condition is fine, earlier versions avoid the problem.
> >
> > I know I can avoid it by silencing :source call but I'd rather not do
> > that if there's some other trick.
> >
> > Thanks.
> >
> >
> >
> It might be a bug in v6, but are those still being fixed? Anyway, until
> Bram comes back from holiday, I guess one possibility would be to
> replace the for/endfor by a "v6-compatible" construct like
>
> let i = 0
> while i < tabpagenr('$')
> ...
> let i = i+1
> endwhile
>
> Or does that choke on the "unknown" tabpagenr() function?
>
>
> Best regards,
> Tony.

Yes, this might be a bug, as I observed that you can put any gibberish
in a function and still have it sourced (I put vbscript in a couple of
plugins).

As a trick, how about enclosing :endfor inside an exec?

exec "endfor"

This seems to take the error message away, though I don't know if it
actually works (don't see any reason why it shouldn't).

-- 
Thanks,
Hari

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Reply via email to