有所谓的严格格式,如pdb - 其中符号的含义由符号的colomn编号定义。例如,here是上述pdb格式的规范。
我可以根据色谱柱范围应用面色吗?
通常可以通过以下方式添加要突出显示的正则表达式,例如当前会话:
(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
那么有没有办法在列上指定面部,例如7-11 - 应该是,比方说 - 红色?
修改:
所以答案是:
(font-lock-add-keywords nil '(("^.\\{2\\}\\(.\\{2\\}\\)" 1 font-lock-warning-face)))
答案 0 :(得分:2)
定义一个将选择适当列的正则表达式。
例如,要选择第3列(假设列仅包含用于示例清晰的字母),您可以执行类似"\(?:[a-z]+ \)\{2\}\([a-z]+\)"
的操作,然后匹配第一个组。
当然,你可以使用format
创建这样一个字符串,并传递一些参数以获得更大的灵活性。
(font-lock-add-keywords nil '(("\\(?:[a-z]+ \\)\\{2\\}\\([a-z]+\\)" 1 font-lock-warning-face)))
作为另一个方向,在whitespace-mode中找到以下代码,突出显示某个数字上的字符:
;; Show "long" lines
(list
(let ((line-column (or whitespace-line-column fill-column)))
(format
"^\\([^\t\n]\\{%s\\}\\|[^\t\n]\\{0,%s\\}\t\\)\\{%d\\}%s\\(.+\\)$"
whitespace-tab-width
(1- whitespace-tab-width)
(/ line-column whitespace-tab-width)
(let ((rem (% line-column whitespace-tab-width)))
(if (zerop rem)
""
(format ".\\{%d\\}" rem)))))
(if (memq 'lines whitespace-active-style)
0 ; whole line
2) ; line tail
whitespace-line t)
答案 1 :(得分:0)
以下将着色最初应用于第7至第11列的文本:
(defun bk-pdb-color-ATOM-initially()
(interactive)
(save-excursion
(goto-char (point-min))
(while (search-forward-regexp "^ATOM \\(.\\{5\\}\\).\\(.\\{4\\}\\).\\(.\\{3\\}\\).\\(.\\{5\\}\\).\\{4\\}\\(.\\{24\\}\\)" nil t)
(progn
(overlay-put
(make-overlay (match-beginning 1) (match-end 1))
'face '(:foreground "blue"))
(overlay-put
(make-overlay (match-beginning 2) (match-end 2))
'face '(:foreground "red"))
(overlay-put
(make-overlay (match-beginning 3) (match-end 3))
'face '(:foreground "purple1"))
(overlay-put
(make-overlay (match-beginning 4) (match-end 4))
'face '(:foreground "orange"))
(overlay-put
(make-overlay (match-beginning 5) (match-end 5))
'face '(:foreground "green"))
t nil)
)))