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
试图匹配任何特殊字符,它将拒绝该字符,这一切都是我发现的。我非常感谢你的帮助,这确实帮助我找到了答案。