Eu tenho tentado configurar a dobragem de código no Vim para JavaScript, mas o padrão não está funcionando corretamente. Tenho pouca experiência com o Vim e tenho dificuldade em entender os arquivos de ajuda (como comprovado pelas minhas tentativas fracassadas de fazer isso sozinho).
O código JavaScript que cria problemas mais ou menos se parece com isso:
var x = {};
x.prototype = (function () {
// Variable declarations...
var y;
// Other content...
y = (function () {
// Stuff...
}());
// Other content continues... eg:
return {
// Other stuff...
};
}());
Quando eu dobra y = (function () {}());
, fica assim:
var x = {};
x.prototype = (function () {
// Variable declarations...
var y;
// Other content...
y = (function () {----------------------------------...
Observe como o restante da função desaparece! Na verdade, deve ficar assim:
var x = {};
x.prototype = (function () {
// Variable declarations...
var y;
// Other content
y = (function () {----------------------------------...
// Other content continues... eg:
return {
// Other stuff...
};
}());
Como eu disse acima, tentei brincar com o arquivo de sintaxe, mas ele apenas quebrou a dobra.
Por conveniência, aqui está a seção de dobragem de código do arquivo de sintaxe JavaScript:
if exists("javaScript_fold")
syn match javaScriptFunction "\<function\>"
syn region javaScriptFunctionFold start="\<function\>.*[^};]$" end="^\z1}.*$" transparent fold keepend
syn sync match javaScriptSync grouphere javaScriptFunctionFold "\<function\>"
syn sync match javaScriptSync grouphere NONE "^}"
setlocal foldmethod=syntax
setlocal foldtext=getline(v:foldstart)
else
syn keyword javaScriptFunction function
syn match javaScriptBraces "[{}\[\]]"
syn match javaScriptParens "[()]"
endif
syn sync fromstart
syn sync maxlines=100
Tenho 3 perguntas:
- É possível corrigir o código dobrado
~/.gvimrc
? - Como faço para corrigir a dobragem de código?
- Como faço para o código dobrado assumir este formulário
y = (function () { ... }());
?
fonte
Descobri que esse arquivo de sintaxe de substituição funciona muito bem, dobra até objetos de protótipo complicados. Ele foi direcionado especificamente para o JS comumente usado nos projetos Mozilla e Dojo, que se parece muito com o que você está fazendo.
fonte