Pregunta

Hay llamados formatos estrictos, como pdb - donde el significadodel símbolo se define por el número de Colomn del símbolo.Por ejemplo, aquí es una especificación del formato PDB mencionado anteriormente.

¿Hay alguna forma en que puedo aplicar el basado en color de la cara en el rango de columna?

Normalmente se puede agregar una regulación para resaltar, por ejemplo, para la sesión actual de la siguiente manera:

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

¿Hay alguna manera de especificar esa cara en las columnas, digamos 7-11 - debe ser, digamos - rojo?

editar :

Entonces la respuesta es:

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

¿Fue útil?

Solución

Defina una regla de referencia que seleccionará la columna correspondiente. Por ejemplo, para seleccionar la 3ª columna (suponiendo que las columnas contengan solo una letra para la claridad del ejemplo) puede hacer algo como "\(?:[a-z]+ \)\{2\}\([a-z]+\)" y luego coincidir con el primer grupo.

Por supuesto, puede crear tal cadena usando format y pasándola algunos argumentos para más flexibilidad.

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

Como otra dirección, se encontró el siguiente código en modo de espacio en blanco, lo que resalta los caracteres sobre un número determinado:

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

Otros consejos

Los siguientes aplican el colorante inicialmente al texto de la columna 7 a 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)
)))

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top