我正在使用taglist
插件几天,现在我尝试使用Javascript,但在Javascript中它只显示部分信息或没有信息。似乎问题可能出在命名空间上,因为函数在
var namespace_name = {
f1: function() {
},
f2: function() {
},
.
.
.
};
或此类功能(匿名)
var something = (function f() {
}
...
})();
你知道如何纠正这个问题吗?
谢谢
答案 0 :(得分:5)
你试过TagBar吗?对于同样的想法,这是一个更现代的看法,它可以更好地使用JavaScript,甚至支持jsctags。
左边的TagList,右边的TagBar。
TagList不起作用,因为Exuberant ctags(TagList用来索引你的代码的程序)对JavaScript不是很好,尤其是具有回调,闭包和自执行功能的现代东西。
另一方面,如果可用,TagBar会使用JavaScript的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,有很多问题:here和here。
所以,基本上,有两种方法可以解决您的问题:自定义ctags或使用tagbar + jsctags。