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.nativeFilterfuncList.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"
}

使用此插件,您需要捕获整行,以便在单击功能列表时使导航正常工作。