> The MetaPost plugin in Vim contains the following definition to replace
> the n-th occurrence of `beginfig(...)` with `beginfig(n)`:
> 
>     function! s:fix_beginfigs()
>       let i = 1
>       g/^beginfig(\d*);$/s//\='beginfig('.i.');'/ | let i = i + 1
>     endfunction
> 
>     command -nargs=0 FixBeginfigs call s:fix_beginfigs()
> 
> On attempting to convert it to Vim9 script, I came up with this:
> 
>     def FixBeginfig()
>       i = 1
>       g/^beginfig(\d*);$/s//\='beginfig(' .. i .. ');'/ | i += 1
>     enddef
> 
>     command! -buffer -nargs=0 -bar FixBeginfigs call <sid>FixBeginfig()
> 
> But this results in 'Undefined variable: i', likely because the command
> is not evaluated in Vim9 script context.
> 
> Any idea what would be the best way to convert the snippet above?

Well, this works:

def Fix_beginfigs()
  g:index = 1
  g/^beginfig(\d*);$/s//\='beginfig(' .. g:index .. ');'/ | g:index = g:index + 
1
  unlet g:index
enddef

However, using a legacy function would not be worse.  The global command
does most of the work, what function it's in doesn't really matter.

-- 
>From "know your smileys":
 (:-#   Said something he shouldn't have

 /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
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 vim_use+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_use/202107042130.164LU1792626692%40masaka.moolenaar.net.

Reply via email to