Hari Krishna Dara wrote:
I just want to thank Bram specially for all the scripting related
improvements that were done in Vim7. After converting most of my plugins
to use Lists instead of multvals plugin, other than having a cleaner and
more compact code, my productivity has improved significantly (and using
multvals itself was very productive over using simple
curly-braces-names, which means for those not using multvals before, it
will be a tremendous change). If you just compare my 4.0 version of
perforce plugin with that of previous, you would see what I am talking
about. Also, I have been making a few additional changes today and got
some features done very easily, and previously I kept pushing them
because it would have been very complex/time-consuming. E.g., as part of
one feature, I had to determine what files need their status refreshed
after updating a changelist, and I could do it in just 3 lines (to
determine the outersection of prior and new filelist that the changelist
contained).

The Lists, Hashes (and their constructs such as :for, map(), filter()),
and a few other changes such as, <buffer> autocommands and <expr>
maps/abbreviations etc. avoided a lot of complexity in my plugins.
These features will go a long way in bringing more value to Vim, as
more complex plugins can be written with less effort and more people
will be willing to contribute plugins.

I recently observed (from a Tony's post, I think) that you can now use
+= and -=, and this is a very nice addition to avoid some repetition.

I think I noticed it in one of Bram's posts, but I'm not sure.


I still miss pre and post increment and decrement operators (avoids a
separate :let command by itself), and indexed for loops.

I'm not sure what you call indexed for loops, but Vim 7 now has two looping structures. In addition to the time-honored "while": incremental

        let i=initial
        while i <= final
                " do something
                i = i + 1
        endwhile

or yes/no on a criterion set inside the (potentially infinite) loop

        let done = 0
        while ! done
                " do something; set done to nonzero if finished
        endwhile

there is now also

        for i in List
                " do something
        endfor

where List can be the result of the range() function, so that now the first-type "while" can be replaced by a "for" if compatibility with earlier versions is not important. (I noticed this ":for" command in Bram's example in the help about the 'tabline' option.)

For the later,
I get around using the below construct:

let loop_index = <initial value>
while <condition>
  try
    <body>
  finally
    let loop_index = <new value>
  endtry
endwhile

This takes care of any :continue that you use inside, but this is
clumsy.


Best regards,
Tony.

Reply via email to