Pergunta

Estou usando um plugin taglist por alguns dias e agora tentei com Javascript, mas em Javascript ele mostra apenas informações parciais ou nenhuma informação.Parece que o problema pode ser com namespaces, porque as funções estão em

var namespace_name = {

f1: function() {
},
f2: function() {
},
.
.
.

};

ou este tipo de funções (anônimas)

var something = (function f() {
   }
   ...
})();

Você sabe como corrigir este problema?

obrigado

Foi útil?

Solução

Você tentou TagBar ? É uma abordagem mais moderna da mesma ideia, que funciona melhor com JavaScript e até suporta jsctags.

taglist à esquerda, tagbar à direita

TagList à esquerda, TagBar à direita.

TagList não funciona porque exuberant ctags (o programa usado por TagList para indexar seu código) não é muito bom com JavaScript, especialmente as coisas modernas com callbacks, encerramentos e funções autoexecutáveis.

Por outro lado, TagBar usa jsctags para JavaScript, se estiver disponível. Jsctags é feito com o JavaScript moderno em mente e, como tal, funciona muito melhor.

Compare esses arquivos de tag gerados com o código a seguir (com base em seus exemplos):

var namespace_name = {

    f1: function() {
        window.alert("f1");
    },
    f2: function() {
        window.alert("f2");
    }
};
var something = (function f() {
    window.alert("something");
})();

Saída de $ ctags .:

// empty file expect for the header

Saída de $ jsctags .:

// skipped header
namespace_name  test.js /^var namespace_name = {$/;"    v   lineno:1    type:Object
f1  test.js /^\tf1: function() {$/;"    f   lineno:3    type:void function()
f2  test.js /^\tf2: function() {$/;"    f   lineno:6    type:void function()
f   test.js /^var something = (function f() {$/;"   f   lineno:11   type:void function()
something   test.js /^var something = (function f() {$/;"   v   lineno:11   type:undefined

Há um monte de perguntas no SO sobre a personalização de ctags exuberantes para fazê-lo funcionar melhor com JavaScript: aqui e aqui .

Então, basicamente, existem duas maneiras de resolver seu problema: personalize ctags ou use tagbar + jsctags.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top