caractère de description-face non sous / inaccessible par le curseur

15

J'aime utiliser une combinaison de describe-faceet customize-facepour ajuster l'apparence de mon environnement de travail. Parfois, ce flux de travail échoue lorsque je veux changer la face d'un endroit que je ne peux pas atteindre avec le curseur; mode-line, header-line, en-têtes magit-blame etc. La plupart du temps, je peux traquer et me tromper vers une solution mais parfois je suis coincé (je ne savais pas que la ligne d'en-tête existait jusqu'à hier par exemple) .

Existe-t-il un moyen pratique de décrire le visage d'un emplacement dans un cadre qui n'est pas accessible par le curseur? Au moyen d'une souris par exemple.

remvee
la source

Réponses:

7

Je ne sais pas comment utiliser la souris, mais j'ai souvent trouvé qu'il était plus facile pour moi de courir list-faces-display, puis de simplement rechercher ce que le visage est probablement appelé ou de rechercher visuellement un texte qui a la même apparence.

Jordon Biondo
la source
1
Telle est la réponse, à mon humble avis. L'affichage est WYSIWYG, et il vous donne un accès direct au tampon de personnalisation pour un visage donné et un accès direct à une description complète.
Drew
J'accepte et change le statut. L'autre solution est cool mais pas pratique.
remvee
9

Il y a 4 régions où le texte peut être affiché dans Emacs, voici ce que vous pouvez faire pour inspecter chacune d'elles.

  • La ligne de mode : Voir la valeur de mode-line-format.
  • La ligne d'en-tête : Voir la valeur de header-line-format.
  • Tampon : Si le visage se trouve dans une zone du tampon que vous ne pouvez pas atteindre, voyez la valeur de (buffer-string).
  • Mini - tampon : Si le point est actuellement dans le mini - tampon , vous pouvez le faire M-: (buffer-string), et cela décrira le contenu du mini-tampon. Vous devrez peut-être d' (setq enable-recursive-minibuffers to t)abord.
  • Frange ou marge : Aucune à ma connaissance.

Ces méthodes vous donneront l'intégralité du contenu de ces régions, il peut donc prendre un peu de lecture pour trouver réellement le visage que vous recherchez, mais il sera certainement là. Plus important encore, il décrira même les régions que vous ne pouvez pas atteindre.
Par exemple, disons que je veux savoir quel visage est utilisé dans l' find-fileinvite.

  1. Appelez find-file avec C-x C-f.
  2. Décrivez le mini-tampon avec M-: (buffer-string)

Cela donnera quelque chose comme la sortie suivante, et juste à la fin se trouve le visage que je cherchais.

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))
Malabarba
la source
Intéressant! Je ne le savais pas (buffer-string). Mais comment puis-je l'invoquer pendant que je suis dans le mini-tampon sans céder "La commande a tenté d'utiliser le mini-tampon dans le mini-tampon"?
remvee
@remvee Ah, définissez la variable enable-recursive-minibuffers sur t
Malabarba
Et la frange?
Tikhon Jelvis
@TikhonJelvis oh, bon point. Ça je ne sais pas.
Malabarba
Je pense que cela laisse aussi des marges?
Sigma
3

Il s'avère que vous pouvez en effet utiliser la souris (je pense que cela peut être exactement ce que vous cherchiez):

  ;; 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
la source
Cela ne semble pas fonctionner pour moi dans la modeline. Cela fonctionne-t-il pour vous dans les endroits mentionnés dans la question?
zck
Fonctionne pour moi sur les en- magit-blametêtes, ainsi que, au minimum, les candidats à l'achèvement du mini-tampon, l'invite du mini-tampon et les fenêtres contextuelles de l'entreprise. Cela dit, cela ne fonctionne pas pour moi non plus lorsque je l'appelle sur la ligne de mode ou d'en-tête: ceux-ci me donnent (wrong-type-argument number-or-marker-p header-line)(ou [...] mode-line, respectivement). Je pense que cela pourrait être des cas particulièrement spéciaux (avec la frange et la marge).
braham-snyder