3

我使用了taglist几天的插件,现在我用 Javascript 尝试了它,但在 Javascript 中它只显示部分信息或没有信息。似乎问题可能出在名称空间上,因为函数位于

var namespace_name = {

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

};

或此类功能(匿名)

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

你知道如何纠正这个问题吗?

谢谢你

4

1 回答 1

5

你试过TagBar吗?这是对相同想法的更现代的看法,它更适用于 JavaScript,甚至支持 jsctags。

左边是taglist,右边是tagbar

左边是 TagList,右边是 TagBar。

TagList 不起作用,因为 Exuberant ctags(TagList 用来索引您的代码的程序)对 JavaScript 不是很好,尤其是带有回调、闭包和自执行函数的现代东西。

另一方面,如果 JavaScript 可用,TagBar 使用 jsctags。Jsctags 是在考虑现代 JavaScript 的情况下制作的,因此效果更好。

将生成的这些标记文件与以下代码(基于您的示例)进行比较:

var namespace_name = {

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

输出$ ctags .

// empty file expect for the header

输出$ 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

关于自定义丰富的 ctags 以使其更好地与 JavaScript 一起工作的 SO 上有很多问题:herehere

所以,基本上,有两种方法可以解决你的问题:自定义 ctags 或使用 tagbar+jsctags。

于 2011-10-20T12:04:42.803 回答