el carácter de describir la cara no está debajo / no se puede alcanzar con el cursor

15

Me gusta usar una combinación de describe-facey customize-faceajustar la apariencia de mi entorno de trabajo. En algún momento, este flujo de trabajo falla cuando quiero cambiar la cara de una ubicación que no puedo alcanzar con el cursor; mode-line, header-line, magit-culme headers, etc. La mayoría de las veces, puedo rastrear y equivocar mi camino hacia una solución, pero a veces me atoro (no sabía que la línea de encabezado existía hasta ayer, por ejemplo) .

¿Hay una manera conveniente de describir la cara de una ubicación en un marco al que no se puede acceder con el cursor? Por medio de un mouse, por ejemplo.

remvee
fuente

Respuestas:

7

No sé sobre el uso del mouse, pero a menudo he descubierto que es más fácil para mí ejecutar list-faces-displayy luego simplemente buscar lo que probablemente se llama la cara o escanear visualmente en busca de texto que se vea igual.

Jordon Biondo
fuente
1
Esta es la respuesta, en mi humilde opinión. La pantalla es WYSIWYG, y le brinda acceso directo al búfer Personalizar para una cara determinada y acceso directo a una descripción completa.
Drew
Estoy de acuerdo y cambié el estado. La otra solución es genial pero no conveniente.
Remvee
9

Hay 4 regiones donde se puede mostrar texto en Emacs, esto es lo que puede hacer para inspeccionar cada una de ellas.

  • La línea de modo : ver el valor de mode-line-format.
  • La línea de encabezado : ver el valor de header-line-format.
  • Buffer : si la cara está en una región del buffer que no puede alcanzar, vea el valor de (buffer-string).
  • Minibúfer : si el punto está actualmente en el minibúfer, puede hacerlo M-: (buffer-string), y eso describirá el contenido del minibúfer. Es posible que necesite (setq enable-recursive-minibuffers to t)primero.
  • Margen o margen : ninguno que yo sepa.

Estos métodos le proporcionarán el contenido completo de estas regiones, por lo que puede tomar un poco de lectura encontrar realmente la cara que está buscando, pero ciertamente estará allí. Lo más importante, describirá incluso las regiones que no puede alcanzar.
Por ejemplo, digamos que quiero saber qué cara se usa en el find-fileindicador.

  1. Invoque find-file con C-x C-f.
  2. Describa el minibúfer con M-: (buffer-string)

Eso dará algo como el siguiente resultado, y justo al final está la cara que estaba buscando.

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))
Malabarba
fuente
¡Interesante! No lo sabia (buffer-string). Pero, ¿cómo lo invoco mientras estoy en el minibúfer sin mostrar "El comando intentó usar el minibúfer mientras está en el minibúfer"?
remvee
@remvee Ah, establezca la variable enable-recursive-minibuffers en t
Malabarba
¿Qué hay de la franja?
Tikhon Jelvis
@TikhonJelvis oh, buen punto. Eso no lo se.
Malabarba
Creo que eso también deja los márgenes?
Sigma
3

Resulta que puedes usar el mouse (creo que esto puede ser exactamente lo que estabas buscando):

  ;; based on: /emacs//a/19585/13444
  (defun brds/describe-char-at-mouse-click (click-event)
    "`describe-char' at CLICK-EVENT's position.
CLICK-EVENT should be a mouse-click event."
    (interactive "e")
    (run-hooks 'mouse-leave-buffer-hook)
    (let ((pos (cadr (event-start click-event))))
      (describe-char pos)))

  ;; <d>escribe
  (global-set-key (kbd "C-c d <down-mouse-1>")
                  #'brds/describe-char-at-mouse-click)
braham-snyder
fuente
Esto no parece funcionar para mí en la línea de modelo. ¿Funciona para usted en los lugares mencionados en la pregunta?
zck
Funciona para mí en los magit-blameencabezados, así como, como mínimo, los candidatos de finalización de minibúfer, el aviso de minibúfer y las ventanas emergentes de la compañía. Dicho esto, tampoco funciona para mí cuando lo llamo en la línea de modo o encabezado: esos me dan (wrong-type-argument number-or-marker-p header-line)(o [...] mode-line, respectivamente). Creo que esos podrían ser casos especialmente especiales (junto con el margen y el margen).
braham-snyder