sábado, 11 de abril de 2009

Criando uma script library

Certas funcionalidades serão necessárias em vários lugares.
Podemos coloca-las em um script e usa-las a partir de muitos outros scripts.
Esse script será chamado de script library (biblioteca).

Carregar manualmente uma script library é possível, desde que você evite de
carrega-la quando já estiver carregada. Você pode fazer isso com a função 'exists()':
if !exists('*MyLibFunction')
   runtime library/mylibscript.vim
endif
call MyLibFunction(arg)
Aqui você precisa saber que 'MyLibFunction()' está definido em um script
'library/mylibscript.vim' em um dos diretórios de 'runtimepath'.

Para fazer isso mais simples Vim oferece o mecanismo de autoload. Então o
exemplo se parecerá com isso:
call mylib#myfunction(arg)
Isto é muito mais simples. O Vim reconhecerá o nome da função e quando não
estiver definida procura pelo script 'autoload/mylib.vim' no 'runtimepath'.
Este script deve definir a função 'mylib#myfunction()'.

Você pode por muitas outras funções no script 'mylib.vim'. Mas você deve usar
nomes de função aonde a parte antes de '#' corresponde com o nome do script.
Caso contrário o Vim não saberá qual script carregar.

Se tiver muitas script libraries, você poderia querer usar subdiretórios:
call netlib#ftp#read('somefile')
No Unix, o script library usado para isto poderia ser:
~/.vim/autoload/netlib/ftp.vim
Aonde a função é definida assim:
function netlib#ftp#read(fname)
      " Read the file fname through ftp
endfunction

Note que o nome da função usado é o mesmo nome usada na chamada da função. E a
parte antes do último '#' corresponde exatamente ao subdiretório e ao nome do
script.

Você pode usar o mesmo mecanismo para variáveis:
let weekdays = dutch#weekdays
Isto carregará o script 'autoload/dutch.vim', o qual deveria conter algo como:
let dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag',
        \ 'donderdag', 'vrijdag',
'zaterdag']

0 comentários:

Postar um comentário