On Tue 5-Dec-06 12:56pm -0600, Alan G Isaac wrote:

> On Mon, 4 Dec 2006, Bill McCarthy apparently wrote:
>> Instead of using an autocmd, you could place those maps in a 
>> file called tex.vim in your local ftplugin directory.  Place 
>> this single line in such a file: 
>>     map <buffer> <c-a> :echo 'It worked!'<CR> 
>
> OK, I did this.
> But there is still a problem.
>
> Suppose I have defined::
>
>     imap <buffer> <unique> ;fn
> %<cr>\footnote{%<cr>}<cr>%<esc>-i
>
> in my tex_ai.vim file in my local ftplugin directory.
> I create the buffer ``:e c:\temp.tex``
> then I leave the buffer by deleting it ``:bd``
> and then later I decide to reopen it ``:e c:\temp.tex``.
> Now I get a bunch of E227 errors, saying the mapping already
> exists.  This must mean that there Vim tries to redefine the
> mapping.

Interesting.  I changed my simply test to

     map <buffer> <unique> <c-a> :echo 'It worked!'<CR>

and had no problem.  My first thought was that you may be
sourcing twice (such as an autocmd performing 'setl ft=tex',
but then I read on.

> BUT I had tried to rule this out: at the top of my plugin
> I have::
>
>     if exists("b:loaded_tex_ai")
>             finish
>     endif
>     let b:loaded_tex_ai=1
>
> But of course ``b:loaded_tex_ai`` is gone once I use ``:bd``.
> But the mappings are apparently still around!
> I do not really understand the variable convetions.
> Should I have created ``s:loaded_tex_ai`` instead?
> Might that work?

I don't see that behavior.  The :bd appears to clear both
buffer local mappings and variables - as it appears to say
in the docs.

-- 
Best regards,
Bill

Reply via email to