On 06/23/2010 01:47 PM, Ben Fritz wrote:
>
>
> On Jun 23, 11:30 am, AK <andrei....@gmail.com> wrote:
>>
>> It does work here, vim7.2, ubuntu 9.10. If I add the inputdialog after
>> the if block, and source the file, it doesn't show up. If I do :unlet
>> b:script_loaded and then source again, it does show up. If I source yet
>> again, it stops showing up.
>
> Yes, but if you just enter the ":new" command to open a new buffer,
> your script will load.
That's the thing that I didn't realize. I thought plugins only load on
startup of vim.
>
> b:... variables are local to the buffer. Creating a new buffer will
> mean that the b:... variable you defined will not exist in the new
> buffer and your script will potentially load again.
>
> I'm a little worried that you're developing a plugin without basic
> knowledge of variable scope in Vim.
I'm using g: vars everywhere myself, that bit of code I got from a well
known plugin (I don't remember which), so I just put it in since it
seemed clear what it does.
You're right though that there's still a lot I don't know and I should
probably have read up on variable scope..
> I highly suggest reading through :help internal-variables before you
> go any further in your plugin development.
Will do!
>
> Unless, of course, you're intentionally defining a buch of BUFFER-
> LOCAL mappings, commands, etc. in which case you would want to use a
> buffer-local variable to determine whether the script is loaded.
I am defining some buffer mappings using :nnoremap <buffer> ... and that
seems to work as expected so far.
-ak
--
Python plugins for vim: outliner, todo list, project manager, calendar,
expenses tracker, sortable table, and more |
http://lightbird.net/pysuite/
Wednesday, June 23, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment