Подсветка синтаксиса vim для хеш-меток ColdFusion - PullRequest
6 голосов
/ 02 марта 2010

Я пытаюсь создать патч для cf.vim, чтобы решить проблему с хэшами. В ColdFusion знаки # используются для включения выражения в блок cfoutput.

<cfset x = 1 />
<cfoutput> x is now #x# </cfoutput>
<!--- outputs "x is now 1" --->

Проблема вступает в игру, когда есть одинокий #, а не внутри cfoutput блока:

<a href="#x">an anchored link</a>

Это заставит vim подсвечивать все после #, как если бы оно было в cfHashRegion.

syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contained containedin=cfOutputRegion contains=@cfExpressionCluster,cfScriptParenError

syn region cfOutputRegion matchgroup=NONE transparent start=+<cfoutput>+ end=+</cfoutput>+ contains=TOP

Есть ли что-то, что я могу добавить к cfHashRegion, чтобы сказать vim "Не вводите cfHashRegion, если не найдены оба свойства start и end?

Супер-бонус: cfoutput - это самый распространенный способ быть в "cfOutputRegion". Любой cffunction с output = "true" будет вести себя так, как если бы все внутри его блока было обернуто в cfoutput теги.

1 Ответ

2 голосов
/ 06 марта 2010

Вы пытались использовать syn match вместо syn region? Я не знаю синтаксис ColdFusion, поэтому я не буду знать, возможно ли это / правильно.

Что-то вроде:

syn region cfHashRegion "L\=#[^#]+#" containedin=cfOutputRegion  contains=@cfExpressionCluster,cfScriptParenError

Возможно, вы также захотите рассмотреть использование списка аргументов contains=ALLBUT,{group-name},.. в некоторых случаях.

...