sexta-feira, 10 de abril de 2009

Mapeamentos no filetype plugin

Certifique que os mapeamentos somente funcionarão no buffer corrente. Para isto use:
:map <buffer>
Isso tem que ser combinado com o mapeamento em dois passos explicado abaixo:
if !hasmapto('<Plug>JavaImport')
    map <buffer> <unique> <LocalLeader>i <Plug>JavaImport
endif
noremap <buffer> <unique> <Plug>JavaImport oimport ""<Left><Esc>
A função interna 'hasmapto()' é usada para verificar se o usuário já definiu o
mapeamento para '<Plug>JavaImport'. Se não definiu, o filetype plugin define o
mapeamento default.

Isso começa com um <LocalLeader>. Ele será substituído pelo valor que o usuário puser na variável 'maplocalleader'. Isso permitirá que o usuário selecione as teclas que ele quer que comece o mapeamento do filetype plugin. O default é o backslash
('\').

'<unique>' é usado para dar uma mensagem de erro se o mapeamento já existe ou
sobrepõe um mapeamento existente.

':noremap' é usado para evitar que outros mapeamentos que o usuário definiu
interfiram. Poderia também usar ':noremap <script>' para permitir somente
remapeamentos de mapeamentos definidos dentro do script e que comecem com '<SID>'.

O usuário deveria ter a chance de desabilitar os mapeamentos dentro do filetype
plugin sem desabilitar tudo. Eis um exemplo de um filetype plugin para email:
" Add mappings, unless the user didn't want this.
if !exists("no_plugin_maps") && !exists("no_mail_maps")
" Quote text by inserting "> "
if !hasmapto('<Plug>MailQuote')
    vmap <buffer> <LocalLeader>q <Plug>MailQuote
    nmap <buffer> <LocalLeader>q <Plug>MailQuote
endif
vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>
nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>
endif
Duas variáveis globais são usadas:
'no_plugin_maps' que desabilita mapeamentos para todos filetype plugins.
'no_mail_maps' que desabilita mapeamentos para um tipo de arquivo específico.

0 comentários:

Postar um comentário