FuncList Visual Studio Код регулярного выражения для пользовательского языка - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь заставить плагин для расширения кода Visual Studio funcList работать с проприетарным языком, который я использую, и у меня возникла проблема с получением регулярного выражения.Документацию по плагину можно найти здесь: https://marketplace.visualstudio.com/items?itemName=qrti.funclist и описывает создание файла settings.json внутри папки .vscode вашего проекта.Мои проблемы возникают при попытке изменить выражения regex для значений конфигурации funcList.nativeFilter и funcList.displayFilter.Вот мой текущий settings.json файл:

{
    "funcList.nativeFilter": "/(?:^|\\s)Function\\s+\\w+\\(/mg",
    "funcList.displayFilter": "/\\s*Function\\s+(.*)/1",
    "funcList.sortList": 1,
    "funcList.doubleSpacing": false
}

Я считаю, что главная проблема - это часть \\w+ в свойстве nativeFilter.Похоже, это соответствует только символам / цифрам, но не специальным символам.Вот фрагмент кода, который я хотел бы работать с этим списком функций:

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.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Кажется, это работает для моих нужд:

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

С этим плагином вам нужно захватить всю строку, чтобы заставить работать навигацию при нажатии на список функций.

0 голосов
/ 29 мая 2018

Я использую это для 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

...