【问题标题】:funcList Visual Studio Code regex for custom languagefuncList 自定义语言的 Visual Studio 代码正则表达式
【发布时间】:2018-05-29 06:18:14
【问题描述】:

我正在尝试让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
}

我认为主要问题是\\w+nativeFilter 属性中的部分。这似乎只匹配字符/数字,而不匹配任何特殊字符。这是我想使用此函数列表的一段代码的 sn-p:

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。

【问题讨论】:

    标签: visual-studio-code vscode-extensions vscode-settings


    【解决方案1】:

    我将它用于 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

    【讨论】:

    • 感谢您的回复,但不幸的是,这并没有解决我的问题。我相信\\w+ 又是问题所在。
    【解决方案2】:

    这似乎满足我的需要:

    {
        "funcList.nativeFilter": "/^(Function|Method|Macro)\\s+[a-zA-Z0-9.+(){}\\/\\\\[\\],_\\-=:;!@#$%^&*|,.<>? ]*\\).*$/mg",
        "funcList.displayFilter": "/\\s*((Function|Method|Macro)\\s+[a-zA-Z0-9.+(){}\\/\\\\[\\],_\\-=:;!@#$%^&*|,.<>? ]+)/1"
    }
    

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

    【讨论】:

    • 你试过我编辑的版本了吗?只需将方法和宏添加到 nativeFilter (Function|Method|Macro) 的开头,它就可以正常工作。它比你的简单得多。您能否举一个示例,其中在参数列表之后 nativeFilter 停止并且导航不起作用的情况下,导航不起作用。我的印象是 displayFilter 是从 nativeFilter 结果开始的,所以不需要在开头重复 (Function|Method|Macro) 的东西,但我可能错了。
    • 我没有尝试您编辑的版本,但我不认为使用\\w+ 对我来说是一个选项。我尝试了不同的选项,但是因为\\w 只匹配数字和字母,所以对于名为Do.Something_Test 的函数,没有任何匹配项,甚至“Do”也不匹配。如果\\w 试图匹配任何特殊字符,它会拒绝这一切都是我发现的。不过,我非常感谢您的帮助,它确实帮助我找到了答案。
    猜你喜欢
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多