Ao definir uma função, é sempre recomendável usar o escopo s:
para torná-lo local para o script e evitar a substituição de uma função com o mesmo nome no espaço para nome global?
E é sempre recomendável usar o argumento abort
caso a função detecte um erro?
function! s:SomeFunction() abort
echo "hello world!"
endfunction
O escopo s:
parece uma coisa boa, mas torna o código um pouco mais detalhado, porque cada vez que quero chamar SomeFunction()
de um mapeamento, tenho que prefixá-lo com <SID>
:
nnoremap {lhs} :<c-u>call <SID>SomeFunction()<cr>
Ou mesmo para armazenar sua saída dentro de uma variável:
let myvar = <SID>SomeFunction()
Existem casos específicos em que você não deseja usar s:
e / ou abort
?
Se sim, por que razões?
abort
e usar umtry
/finally
para qualquer desmontagem necessária. Não é esse o caso?