Il plugin taglist non mostra le funzioni Javascript
-
27-10-2019 - |
Domanda
Sto usando un plugin taglist
da qualche giorno e ora l'ho provato con Javascript, ma in Javascript mostra solo informazioni parziali o nessuna informazione.Sembra che il problema potrebbe essere con i namespace, perché le funzioni sono in
var namespace_name = {
f1: function() {
},
f2: function() {
},
.
.
.
};
o questo tipo di funzioni (anonime)
var something = (function f() {
}
...
})();
Sai come correggere questo problema?
grazie
Soluzione
Hai provato TagBar ? È una versione più moderna della stessa idea che funziona meglio con JavaScript e supporta anche jsctag.
TagList a sinistra, TagBar a destra.
TagList non funziona perché Exuberant ctags (il programma utilizzato da TagList per indicizzare il tuo codice) non è molto buono con JavaScript, specialmente le cose moderne con callback, chiusure e funzioni autoeseguite.
D'altra parte, TagBar utilizza jsctags per JavaScript, se disponibile. Jsctags è stato creato pensando al moderno JavaScript e come tale funziona molto meglio.
Confronta questi file di tag generati con il codice seguente (in base ai tuoi esempi):
var namespace_name = {
f1: function() {
window.alert("f1");
},
f2: function() {
window.alert("f2");
}
};
var something = (function f() {
window.alert("something");
})();
Output di $ ctags .
:
// empty file expect for the header
Output di $ 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
Ci sono un sacco di domande su SO sulla personalizzazione di ctag esuberanti per farlo funzionare meglio con JavaScript: qui e qui .
Quindi, fondamentalmente, ci sono due modi per risolvere il tuo problema: personalizzare ctags o utilizzare tagbar + jsctags.