ELisp regexp: сопоставить группу, если за ней следует другое регулярное выражение - PullRequest
0 голосов
/ 04 декабря 2010

Я пишу основной режим Emacs для базового языка, который я внедряю. Я хочу выделить синтаксис для вызовов методов, где имя метода проверяется [a-z][^()]*, но только когда следует ([^)]). Как определить регулярное выражение, которое будет соответствовать первой части, если за ней следует вторая часть, но не будет выделять вторую часть?

1 Ответ

1 голос
/ 04 декабря 2010

Попробуйте это:

(font-lock-add-keywords 'my-mode
  '(("\\(\\b[a-z][^()]*\\)([^)]*)"
  1 font-lock-function-name-face t)))

1 говорит о применении выделения к первому подвыражению.

Примечание: я добавил \\b, чтобы он совпадал только тогда, когда [a-z] начинает слово (в противном случае Dude() выделил бы ude), и я добавил * в последний набор Parens B / C казалось, что он пропал без вести.

Я проверял это в режиме c ++ -

Документацию для font-lock-add-Keywords и других вещей, связанных с блокировкой шрифтов, можно найти здесь .

...