Подсветка синтаксиса Emacs для вложенных регулярных выражений

Я пытаюсь написать основной режим Emacs для работы с данными биологических последовательностей (, т. е. ДНК и пептидов ), и я хочу реализовать подсветку синтаксиса, когда разные буквы окрашены по-разному. Поскольку режим должен иметь возможность различать последовательности ДНК и аминокислотные последовательности и окрашивать их по-разному, я помещаю каждую последовательность в файлы в одну строку с одним символьным префиксом -(+ или #), который должен указать, как должна быть выделена следующая строка.

Так, например, если файл содержит строку, которая гласит::

+AAGATCCCAGATT

Все буквы «А» должны быть одного цвета, отличного от остальной части строки.

В качестве теста я пробовал следующее.:

(setq dna-keyword
 '(("^\+\\([GCT\-]*\\(A\\)\\)*" (2 font-lock-function-name-face))
  )
)

(define-derived-mode bioseq-mode fundamental-mode
  (setq font-lock-defaults '(dna-keyword))
  (setq mode-name "bioseq mode")
)

Но это соответствует только последнему A, а не всем им.

Моей первой мыслью было попытаться сопоставить всю строку с одним регулярным выражением, а затем использовать другое регулярное выражение для сопоставления только букв A в этой строке, но я понятия не имею, возможно ли это в контексте блокировки шрифта --. ] режим или как это будет выполнено. Любые идеи о том, как сделать что-то подобное, или как сделать это по-другому?

5
задан Jon O. 29 April 2012 в 00:21
поделиться