Frage

Ich verwende seit einigen Tagen ein taglist-Plugin und habe es jetzt mit Javascript versucht, aber in Javascript werden nur teilweise oder keine Informationen angezeigt.Es scheint, dass das Problem bei Namespaces liegen könnte, da sich die Funktionen in befinden

var namespace_name = {

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

};

oder diese Art von Funktionen (anonym)

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

Wissen Sie, wie Sie dieses Problem beheben können?

danke

War es hilfreich?

Lösung

Haben Sie TagBar ausprobiert? Es ist eine modernere Version derselben Idee, die besser mit JavaScript funktioniert und sogar jsctags unterstützt.

Tagliste links, Tagleiste rechts

TagList links, TagBar rechts.

TagList funktioniert nicht, weil überschwängliche ctags (das von TagList zum Indizieren Ihres Codes verwendete Programm) mit JavaScript nicht sehr gut sind, insbesondere mit modernen Funktionen mit Rückrufen, Schließungen und selbstausführenden Funktionen.

Andererseits verwendet TagBar jsctags für JavaScript, sofern verfügbar. Jsctags wurde mit Blick auf modernes JavaScript erstellt und funktioniert daher viel besser.

Vergleichen Sie diese generierten Tag-Dateien mit dem folgenden Code (basierend auf Ihren Beispielen):

var namespace_name = {

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

Ausgabe des $ ctags .:

// empty file expect for the header

Ausgabe des $ 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

Es gibt eine Reihe von Fragen zu SO zum Anpassen üppiger ctags, damit es besser mit JavaScript funktioniert: hier und hier .

Grundsätzlich gibt es zwei Möglichkeiten, um Ihr Problem zu lösen: Passen Sie ctags an oder verwenden Sie tagbar + jsctags.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top