Visual studio code 自定义语言的funcList Visual Studio代码正则表达式
我正试图让Visual studio code 自定义语言的funcList Visual Studio代码正则表达式,visual-studio-code,vscode-extensions,vscode-settings,Visual Studio Code,Vscode Extensions,Vscode Settings,我正试图让funcListVisualStudio代码扩展插件与我使用的专有语言一起工作,但我在让正则表达式工作时遇到了问题。插件文档可以在这里找到:并描述如何在项目的.vscode文件夹中创建settings.json文件。尝试修改funcList.nativeFilter和funcList.displayFilter配置值的regex表达式时出现问题。这是我当前的settings.json文件: { "funcList.nativeFilter": "/(?:^|\\s)Functi
funcList
VisualStudio代码扩展插件与我使用的专有语言一起工作,但我在让正则表达式工作时遇到了问题。插件文档可以在这里找到:并描述如何在项目的.vscode
文件夹中创建settings.json
文件。尝试修改funcList.nativeFilter
和funcList.displayFilter
配置值的regex
表达式时出现问题。这是我当前的settings.json
文件:
{
"funcList.nativeFilter": "/(?:^|\\s)Function\\s+\\w+\\(/mg",
"funcList.displayFilter": "/\\s*Function\\s+(.*)/1",
"funcList.sortList": 1,
"funcList.doubleSpacing": false
}
我认为主要问题是nativeFilter
属性中的\\w+
部分。这似乎只匹配字符/数字,而不匹配任何特殊字符。下面是我希望使用此函数列表的一段代码片段:
Function Do.Something(paramOne, paramTwo)
'...
End Function
Method Do.Something_Else(paramOne, paramTwo)
'...
End Function
理想情况下,nativeFilter
将捕获函数Do.Something(paramOne,paramtoo)
。。直到结束函数
,然后显示过滤器
将只捕获第一行(即Do.Something(paramOne,paramtoo)
)
注意:根据文档,
nativeFilter
不允许regex组,但displayFilter
允许组0-9。我将其用于javascript和funcList扩展。这与您尝试执行的操作类似:
// so that "function someName(arg1, arg2) is captured
"funcList.nativeFilter": "/^[a-z]+\\s+\\w+\\s*\\(.*\\)/mgi",
// now display "someName(arg1, arg2)"
"funcList.displayFilter": "/\\S* +(\\w+\\s*\\(.*\\))/1",
很明显,你需要担心大写字母、句点和下划线,但希望这能在一定程度上帮助你。[我知道我实际上不需要输入函数
关键字来让它工作…]
[编辑]试试这个,它似乎有效:
"funcList.nativeFilter": "/^Function \\w+.\\w+\\(.*\\)?/mg",
"funcList.displayFilter": "/\\S* +(\\w+.\\w+\\(.*\\))/1",
你只是需要这个。由于它未包含在\w中,因此它似乎满足了我的需要:
{
"funcList.nativeFilter": "/^(Function|Method|Macro)\\s+[a-zA-Z0-9.+(){}\\/\\\\[\\],_\\-=:;!@#$%^&*|,.<>? ]*\\).*$/mg",
"funcList.displayFilter": "/\\s*((Function|Method|Macro)\\s+[a-zA-Z0-9.+(){}\\/\\\\[\\],_\\-=:;!@#$%^&*|,.<>? ]+)/1"
}
{
“funcList.nativeFilter”:“/^(函数方法宏)\\s+[a-zA-Z0-9.+(){\\\/\\\\\[\\],_\\-=:;!@$%^&*.?]*\\).$/mg”,
“funcList.displayFilter”:“/\\s*((函数|方法|宏)\\s+[a-zA-Z0-9.+(){}\\\/\\\\\\[\\\],\\\-=:;!@$%^&*.?]+)/1”
}
使用此插件,您需要捕获整行内容,以便在单击功能列表时使导航正常工作。我感谢您的回复,但不幸的是,这并没有纠正我的问题。我相信
\\w+
又是问题所在。您是否尝试过我编辑的版本?只需将方法和宏添加到nativeFilter(函数|方法|宏)的开头,它就可以正常工作。它比你的要简单得多。你能举个例子吗,导航不起作用,nativeFilter在参数列表后停止,导航不起作用。我的印象是,displayFilter是从nativeFilter结果开始的,因此不需要在开始时重复(函数|方法|宏)内容,但我可能错了。我没有尝试过您编辑的版本,但我不认为使用\\w+
是我的选择。我用它尝试了不同的选项,但是因为\\w
只匹配数字和字母,所以对于名为Do.Something\u Test
的函数,没有任何匹配,甚至“Do”也不匹配。如果\\w
试图匹配任何特殊字符,它将拒绝该字符,这一切都是我发现的。我非常感谢你的帮助,这确实帮助我找到了答案。