열 번호를 기반으로 얼굴을 적용하십시오
-
11-12-2019 - |
문제
PDB - 의미있는 곳기호의 기호의 콜롬 숫자에 의해 정의됩니다.예를 들어 여기에 위에서 언급 한 PDB 형식의 사양입니다.
열 범위에 얼굴 색상을 가리키는 방법이 있습니까?
은 일반적으로 다음과 같은 방법으로 현재 세션을 위해 Regexp를 강조 표시 할 정규식을 추가 할 수 있습니다.
(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))
.
열에서 얼굴을 지정할 수있는 방법이 있으며, 7-11이어야합니다. - Red?
편집 :
답은 다음과 같습니다 :
.(font-lock-add-keywords nil '(("^.\\{2\\}\\(.\\{2\\}\\)" 1 font-lock-warning-face)))
해결책
적절한 열을 선택하는 regexp를 정의합니다.
예를 들어 3 컬럼을 선택하는 것 (예를 선명하게하기위한 문자 만 포함됨에 따라) "\(?:[a-z]+ \)\{2\}\([a-z]+\)"
와 같은 작업을 수행 한 다음 첫 번째 그룹에서 일치시킬 수 있습니다.
물론 format
를 사용하여 이러한 문자열을 만들고 더 많은 유연성을 위해 일부 인수를 전달할 수 있습니다.
(font-lock-add-keywords nil '(("\\(?:[a-z]+ \\)\\{2\\}\\([a-z]+\\)" 1 font-lock-warning-face)))
다른 방향으로, 특정 숫자를 통해 문자를 강조 표시하는 공백 모드에서 다음 코드가 발견되었습니다.
;; 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)
. 다른 팁
다음은 처음에는 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)
)))
.