Domanda

Ci sono i cosiddetti formati rigorosi, come PDB - Dove il significatodel simbolo è definito dal numero di Colomn del simbolo.Ad esempio qui è una specifica del formato PDB sopra menzionato.

.

C'è un modo in cui posso applicare il colore del colore basandosi sull'intervallo di colonna?

Si può normalmente aggiungere un regexp da evidenziare, ad esempio per la sessione corrente nel modo seguente:

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

Quindi c'è un modo per specificare quella faccia alle colonne, dire 7-11 - dovrebbe essere, dire - rosso?

Modifica :

Quindi la risposta è:

(font-lock-add-keywords nil '(("^.\\{2\\}\\(.\\{2\\}\\)" 1 font-lock-warning-face)))
.

È stato utile?

Soluzione

Definisci un regexp che selezionerà la colonna appropriata. Ad esempio per selezionare la terza colonna (supponendo che le colonne contenga solo la lettera per la chiarezza dell'esempio) è possibile eseguire qualcosa come "\(?:[a-z]+ \)\{2\}\([a-z]+\)" e quindi corrispondere al primo gruppo.

Ovviamente è possibile creare una tale stringa utilizzando format e passandolo alcuni argomenti per maggiore flessibilità.

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

Come un'altra direzione, il seguente codice è stato trovato in modalità whitespace che evidenzia i caratteri su un determinato numero:

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

Altri suggerimenti

Le seguenti applicano la colorazione inizialmente al testo dalla 7a a 11 ° colonna:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top