Question

Il existe des formats dits stricts, comme pdb - où la signification du symbole est définie par le numéro de colonne du symbole.Par exemple ici est une spécification du format pdb mentionné ci-dessus.

Existe-t-il un moyen d'appliquer la couleur du visage en fonction de la plage de colonnes ?

On peut normalement ajouter une expression rationnelle à mettre en évidence, par exemple pour la session en cours de la manière suivante :

(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face)))

Alors, existe-t-il un moyen de spécifier que la face des colonnes, disons 7 à 11, devrait être, disons, rouge ?

Modifier:

La réponse est donc :

(font-lock-add-keywords nil '(("^.\\{2\\}\\(.\\{2\\}\\)" 1 font-lock-warning-face)))
Était-ce utile?

La solution

Définissez une expression rationnelle qui sélectionnera la colonne appropriée.Par exemple, pour sélectionner la 3ème colonne (en supposant que les colonnes ne contiennent que des lettres pour la clarté de l'exemple), vous pouvez faire quelque chose comme "\(?:[a-z]+ \)\{2\}\([a-z]+\)" puis faites correspondre le premier groupe.

Bien sûr, vous pouvez créer une telle chaîne en utilisant format et lui faire passer quelques arguments pour plus de flexibilité.

(font-lock-add-keywords nil '(("\\(?:[a-z]+ \\)\\{2\\}\\([a-z]+\\)" 1 font-lock-warning-face)))

Dans une autre direction, le code suivant a été trouvé en mode espace, qui met en évidence les caractères au-dessus d'un certain nombre :

;; 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)

Autres conseils

Les éléments suivants s'appliquent à la coloration initialement au texte de la 7ème à la 11ème colonne:

(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)
)))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top