ctags中嵌套lua模块的定义

我有一个关于嵌套lua模块的问题,让我解释一下:

假设我有一个名为myscript.lua的lua脚本,它有一行像这样的代码:

local foo = require('foo')

这就是foo/的样子:

foo
├── baz
│   ├── bar.lua
│   └── init.lua
└── init.lua

解释器在上面的代码行中加载foo/init.lua。此外, foo/init.lua 本身加载了很多其他文件,如 foo/bla.luafoo/baz/init.lua 以及 foo/baz/bar.lua。因此,在myscript.lua中调用foo/baz/init.luafoo/baz/bar.lua内的函数(例如baz.example_function()bar.other_function())是这样的:

foo.baz.example_function()
foo.baz.bar.other_function()

问题是当我运行ctags .时,我可以在生成的tags文件中看到像这样的条目:

baz.example_function    foo/baz/init.lua    /^function baz.example_function()$/;"   f
bar.other_function  foo/baz/bar.lua /^function bar.other_function()$/;" f

当我编辑myscript.lua并且光标停留在foo.baz.example_function()时,我希望能跳转到位于文件foo/baz/init.lua中的baz.example_function()的定义,但我的文本编辑器告诉我找不到它。

我知道为什么找不到定义 - 因为tags文件中正确的定义是baz.example_function,没有前面的foo.。如果我手动将前面的foo.添加到定义中,我可以轻松地跳转到foo/baz/init.lua

我的问题是:我如何告诉ctags自动在tags文件中写入这个前导的foo.? 我有很多这样的函数,我希望能够以这种方式跳转到它们的定义。

非常感谢您的帮助,谢谢。

点赞