funcList Visual Studio 自定义语言的代码正则表达式
funcList Visual Studio Code regex for custom language
我正在尝试让 funcList
visual studio 代码扩展插件与我使用的专有语言一起工作,但我在让正则表达式工作时遇到了问题。插件文档可在此处找到:https://marketplace.visualstudio.com/items?itemName=qrti.funclist 并描述了在项目的 .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+
部分。这似乎只匹配 characters/numbers 但不匹配任何特殊字符。这是我想使用此函数列表的一段代码片段:
Function Do.Something(paramOne, paramTwo)
'...
End Function
Method Do.Something_Else(paramOne, paramTwo)
'...
End Function
理想情况下,nativeFilter
会捕获 Function Do.Something(paramOne, paramTwo)
.. 直到 End Function
然后 displayFilter
只会捕获第一行(即 Do.Something(paramOne, paramTwo)
)
注意:根据文档,nativeFilter
不允许正则表达式组,但 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",
您显然需要担心大写字母、句点和下划线,但希望这能在一定程度上帮助您。 [我发现我不需要实际放入 function
关键字来使其工作...]
[编辑] 试试这个,它似乎有效:
"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
visual studio 代码扩展插件与我使用的专有语言一起工作,但我在让正则表达式工作时遇到了问题。插件文档可在此处找到:https://marketplace.visualstudio.com/items?itemName=qrti.funclist 并描述了在项目的 .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+
部分。这似乎只匹配 characters/numbers 但不匹配任何特殊字符。这是我想使用此函数列表的一段代码片段:
Function Do.Something(paramOne, paramTwo)
'...
End Function
Method Do.Something_Else(paramOne, paramTwo)
'...
End Function
理想情况下,nativeFilter
会捕获 Function Do.Something(paramOne, paramTwo)
.. 直到 End Function
然后 displayFilter
只会捕获第一行(即 Do.Something(paramOne, paramTwo)
)
注意:根据文档,nativeFilter
不允许正则表达式组,但 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",
您显然需要担心大写字母、句点和下划线,但希望这能在一定程度上帮助您。 [我发现我不需要实际放入 function
关键字来使其工作...]
[编辑] 试试这个,它似乎有效:
"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"
}
使用此插件,您需要捕获整行,以便在单击功能列表时使导航正常工作。