Dobragem de código JavaScript Vim

2

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:

  1. É possível corrigir o código dobrado ~/.gvimrc?
  2. Como faço para corrigir a dobragem de código?
  3. Como faço para o código dobrado assumir este formulário y = (function () { ... }());?
user76864
fonte

Respostas:

2

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

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

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

Scott Shattuck
fonte
11
@ScottShattuck atualiza isso? Existe uma boa dobragem de JS já?
MaiaVictor
2

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.

Philipp Kewisch
fonte
Forneça algum contexto para o artigo vinculado.
Bytebuster 12/12/12
2
@ Bytebuster, como é isso?
Philipp Kewisch 8/12/12