Я пытаюсь написать основной режим 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 в этой строке, но я понятия не имею, возможно ли это в контексте блокировки шрифта --. ] режим или как это будет выполнено. Любые идеи о том, как сделать что-то подобное, или как сделать это по-другому?