Question

J'utilise un plugin taglist pendant quelques jours et maintenant je l'ai essayé avec JavaScript, mais il ne montre que Javascript informations ou aucune information partielle. Il semble que le problème pourrait être avec namespaces, car les fonctions sont

var namespace_name = {

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

};

ou ce genre de fonctions (anonyme)

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

Savez-vous comment corriger ce problème?

Merci

Était-ce utile?

La solution

Avez-vous essayé Tagbar ? Il est une prise plus moderne sur la même idée qui fonctionne mieux avec JavaScript et supporte même jsctags.

taglist à gauche, à droite Tagbar

TagList à gauche, Tagbar à droite.

TagList ne fonctionne pas parce que exubérants ctags (le programme utilisé par TagList pour indexer votre code) n'est pas très bon avec JavaScript, surtout les choses modernes avec callbacks, les fermetures et l'exécution des fonctions auto.

Par contre, Tagbar utilise jsctags pour JavaScript si elle est disponible. Jsctags est fait avec JavaScript moderne à l'esprit et que ces œuvres beaucoup mieux.

Comparez ces fichiers de balises générés contre le code suivant (en fonction de vos échantillons):

var namespace_name = {

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

Sortie de $ ctags .:

// empty file expect for the header

Sortie 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

Il y a un tas de questions sur le SO sur la personnalisation ctags exubérante pour le faire fonctionner mieux avec JavaScript: ici et .

Donc, en gros, il y a deux façons de résoudre votre problème. Ctags customize ou utilisation Tagbar + jsctags

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top