我想添加一些支持D编程语言到我的vim配置。为了自动完成,我需要检测包含的软件包。这不正是难以在简单的情况下,要做到:Vim设置检测包括在D源
import std.stdio;
import std.conv;
我的配置:
set include=^\\s*import
set includeexpr=substitute(v:fname,'\\.','/','g')
的伟大工程。
然而,进口可以有更复杂的格式,例如:
package import std.container, std.stdio = io, std.conv;
我没能找到一个简单的方法与include
和includeexpr
解析这个。
还有第二个问题:import
可以有不同的访问修饰符,如public
和private
。 VIM扫描递归包含文件,import
来自包含文件的语句也被解析。但是我需要区分我现在使用的文件和自动扫描的文件:在当前文件中应检测到所有导入,但在其他文件中,只有public import
语句应该向搜索添加更多文件。
感谢您的帮助。
更新
这是一种耻辱,如果这不能没有完整的解析器来完成。从本质上讲,我只需要两样东西:
- 从
includeexpr
,而不是一个文件名返回数组 - 包括当前和其他文件
只是在','简单的情况下分开 –
但是'includeexpr'可以返回多个文件名以包含单个字符串吗? – Korobochka