Vim código JavaScript dobrável

2

Eu tenho tentado configurar a dobra 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 por minhas tentativas frustradas 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 dobrei y = (function () {}()); , é 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 estar 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 dobra 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

Eu tenho 3 perguntas:

  1. É possível corrigir o código dobrando ~/.gvimrc ?
  2. Como corrijo o código?
  3. Como faço o código dobrado assumir este formato y = (function () { ... }()); ?
por user76864 16.04.2011 / 15:38

2 respostas

1

Para tornar as coisas simples, uma solução rápida é alterar a linha do seu arquivo javascript.vim para a dobra para:

syn region javaScriptFunctionFold  start="{" end="}" transparent fold

Nas próximas semanas, tentarei fazer uma revisão geral do arquivo para garantir que ele esteja atualizado com as alterações mais recentes do ECMA5 e das várias APIs e atualizações do HTML5, mas esse patch deve corrigir as coisas no ínterim.

    
por 25.05.2011 / 18:28
2

Eu encontrei este arquivo de sintaxe de substituição para funcionar muito bem, ele se dobra até mesmo complicado objetos protótipos. Ele foi especificamente direcionado ao JS normalmente usado nos projetos Mozilla e Dojo, que se parece muito com o que você está fazendo.

    
por 18.01.2012 / 11:09