2015-01-15 1 views
0

Я ищу способ кодирования сценария синтаксиса .vim для гибкого сопоставления имен переменных внутри региона.Vim Синтаксис: соответствие регулярному выражению в области после AND и перед ключевым словом

Синтаксис части языка я пытаюсь подчеркнуть, как так:

Function(arg1, arg2, ... argn); 

где args имеют вид infoo=outfoo.

Пробел на этом языке игнорируется. код я до сих пор указывает на область parens

syn region parens start='(' end=')' 

Есть ли способ, чтобы соответствовать регулярное выражение выражения с помощью команды syn match 'regex' на до и после = характера в пределах только parens области?

Проблема гораздо сложнее, чем просто соответствие всех слов в parens регионе, потому что мне нужно, чтобы выделить infoo и outfoo, за исключением случаев, когда один из них уже что-то я реализовал подсветку синтаксиса для. С другой стороны, infoo и outfoo должны быть разных цветов в зависимости от того, объявлены ли они как имена переменных или жестко закодированы на языке.

Я слежу за the Vim wiki guide для большинства своих усилий, и мне трудно понять Vim documentation. Это моя первая попытка написать или отредактировать подсветку синтаксиса Vim.

ответ

2

Вы ищете сдерживание синтаксиса; через contains={group},..., вы скажете Vim проанализировать аргументы в пределах региона (иначе совпадение области предотвратит другие синтаксические совпадения там). Затем вы определяете совпадения синтаксиса для аргументов с параметром contained, так что Vim будет пытаться только сопоставить их внутри (область).

Вот пример, который анализирует в и детали раздельно; Вы можете приспособить это, и даже определить другое, вложенное сдерживание тоже:

syn region parens start='(' end=')' contains=inArgument,outArgument 
syn match inArgument "\w\+=\@=" contained 
syn match outArgument "=\@<=\w\+" contained 

Примечания: Имена синтаксиса должны лучше придерживаться {LANGUAGENAME} {} SyntaxElementName стиль видел в других сценариях синтаксиса.

Смежные вопросы