Taglist插件不显示Javascript函数

xra*_*alf 2 javascript vim taglist

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

var namespace_name = {

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

};
Run Code Online (Sandbox Code Playgroud)

或者这种功能(匿名)

var something = (function f() {
   }
   ...
})();
Run Code Online (Sandbox Code Playgroud)

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

谢谢

rom*_*inl 5

你试过TagBar吗?这是一个更现代的相同想法,它可以更好地使用JavaScript,甚至支持jsctags.

左边的标签列表,右边的标签栏

左边是TagList,右边是TagBar.

TagList不起作用,因为Exuberant ctags(TagList用来索引代码的程序)对JavaScript不是很好,尤其是具有回调,闭包和自执行功能的现代东西.

另一方面,TagBar使用jsctags作为JavaScript,如果可用的话.Jsctags是用现代JavaScript制作的,因此工作得更好.

比较根据以下代码生成的这些标记文件(基于您的示例):

var namespace_name = {

    f1: function() {
        window.alert("f1");
    },
    f2: function() {
        window.alert("f2");
    }
};
var something = (function f() {
    window.alert("something");
})();
Run Code Online (Sandbox Code Playgroud)

产量$ ctags .:

// empty file expect for the header
Run Code Online (Sandbox Code Playgroud)

产量$ 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
Run Code Online (Sandbox Code Playgroud)

关于自定义丰富的ctags以使其在JavaScript中更好地工作有很多问题:在这里这里.

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