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

È stato utile?

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 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top