Edit : Eu transformei isso em um pequeno plugin. Esta é a minha primeira tentativa de escrever uma e não tenho idéia do que estou fazendo, portanto qualquer ajuda é muito apreciada. :)
Aqui está: https://github.com/danielbmarques/vim-dialect
----------
Quero continuar usando zg
e zw
adicionando palavras aos vim globais spellfile
, mas quero usar zG
e zW
adicionar palavras a um spellfile
específico do arquivo que estou editando . Em outras palavras, eu quero zG
e zW
seja persistente para cada arquivo.
Definir as spellfile
mudanças nos comandos zg
e zw
, enquanto o que eu quero é mudar apenas os comandos zG
e zW
.
Então, eu fiz isso:
:au BufNewFile,BufRead * let &l:spellfile = expand('%:p:h') . '/.' .
\ substitute(expand('%:t'), '\(.*\)\..*', '\1', '') . '.utf-8.add'
nnoremap zG :call LocalSpell("zG")<cr>
nnoremap zW :call LocalSpell("zW")<cr>
nnoremap zuG :call LocalSpell("zuG")<cr>
nnoremap zuW :call LocalSpell("zuW")<cr>
nnoremap zg :call GlobalSpell("zg")<cr>
nnoremap zw :call GlobalSpell("zw")<cr>
nnoremap zug :call GlobalSpell("zug")<cr>
nnoremap zuw :call GlobalSpell("zuw")<cr>
vnoremap zG :call LocalSpell("gvzG")<cr>
vnoremap zW :call LocalSpell("gvzW")<cr>
vnoremap zuG :call LocalSpell("gvzuG")<cr>
vnoremap zuW :call LocalSpell("gvzuW")<cr>
vnoremap zg :call GlobalSpell("gvzg")<cr>
vnoremap zw :call GlobalSpell("gvzw")<cr>
vnoremap zug :call GlobalSpell("gvzug")<cr>
vnoremap zuw :call GlobalSpell("gvzuw")<cr>
function! LocalSpell(cmd)
if &l:spellfile == ""
execute "normal! " . a:cmd
else
execute "normal! " . tolower(a:cmd)
endif
endfunction
function! GlobalSpell(cmd)
let b:spellfile = &l:spellfile
setlocal spellfile=
execute "normal! " . a:cmd
let &l:spellfile = b:spellfile
endfunction
E funciona ... mas não parece uma boa solução para mim (editar: já está ficando melhor :)). Por isso, pensei em publicá-lo aqui, caso alguém tenha idéias ou melhorias melhores para sugerir. O que você acha?
spellfile
só é criada quando a primeira zG
é executada.
a spellfile specific to the file I'm editing
, pensei que estava usando vários arquivos de ortografia para zG
; como o nome do arquivo ortográfico é derivado do nome do arquivo ( let &l:spellfile = expand('%:p:h')...
), você pode conseguir isso para um tipo de arquivo específico, definindo o nome do arquivo e os mapeamentos ao abrir esse arquivo (você precisará incluir <buffer>
nos mapeamentos). Também assumi que você desejava essa alteração zG
apenas para alguns arquivos específicos.
spellfile
para tipos de arquivos específicos , mas um spellfile
para cada arquivo . Para adicionar palavras, e quando eu abrir esse arquivo novamente, elas ainda serão adicionadas, mas apenas para esse arquivo específico e não para outros. Também é uma ideia interessante. Infelizmente, parece que não é uma maneira de obter mais de um arquivo ortográfico; caso contrário, eu poderia fazer os dois e ter um comando para adicionar palavras ao arquivo atual e outro para adicionar palavras ao tipo de arquivo atual.
one spellfile for each file
. Talvez eu tenha esquecido alguma coisa, mas se você adicionou o código ao seu, .vimrc
não poderia ter mais de um arquivo ortográfico, a menos que explicitamente :source
novamente para reavaliar o arquivo %
.