Das Taglist-Plugin zeigt keine Javascript-Funktionen an
-
27-10-2019 - |
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
Lösung
Haben Sie TagBar ausprobiert? Es ist eine modernere Version derselben Idee, die besser mit JavaScript funktioniert und sogar jsctags unterstützt.
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.