Tuesday, April 8, 2014

Re: lockvar: what is the purpose?

On 08/04/14 22:54, Justin M. Keyes wrote:
>
> On Apr 8, 2014 4:36 PM, "Nikolay Pavlov" <zyx.vim@gmail.com
> <mailto:zyx.vim@gmail.com>> wrote:
> >
> >
> > On Apr 8, 2014 11:53 PM, "Justin M. Keyes" <justinkz@gmail.com
> <mailto:justinkz@gmail.com>> wrote:
> > >
> > > Hi,
> > >
> > > It seems any plugin can :unlockvar any global variable that was
> locked by another plugin. So, is the purpose of lockvar simply a
> friendly warning/sanity check?
> > >
> > > Also, is there a speedup gained by using lockvar? (Maybe it helps
> the vimscript optimizer to know that variable cannot be modified?) If
> so, should I use lockvar whenever possible in my plugins?
> >
> > There is no such a thing as "vimscript optimizer". There is even no
> separate parser: commands (and expressions) are executed as they are
> parsed, so even
> >
> > echo (system('touch abc')
> >
> > will create file 'abc' even though there is missing closing
> parenthesis. AST is never created.
>
> Thanks Nikolay. I was thinking that might be the response.
>
> So can anyone comment on the utility of lockvar? It must have been added
> for a reason.
>
> Justin M. Keyes

Another script may unlock the variable, yes, but that requires awareness
that the variable may have been locked in the first place. Many scripts use

let foo = "bar"

but how many do you think use

try
let foo = "bar"
catch /^Vim\%((\a\+)\)\=:E471/
unlockvar foo
let foo = "bar"
endtry

or even

try
let foo = "bar"
catch
unlet foo
let foo = "bar"
endtry

,especially if the variable foo was defined in a different script?


Best regards,
Tony.
--
Little Johnny with a grin,
Drank up all of daddy's gin,
Mother said, when he was plastered,
Go to bed, you little ... love-child.

--
--
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+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: