Beschreibungszeichen nicht unter / nicht erreichbar mit dem Cursor

15

Ich verwende gerne eine Kombination aus describe-faceund customize-face, um das Erscheinungsbild meiner Arbeitsumgebung anzupassen. Manchmal schlägt dieser Workflow fehl, wenn ich das Gesicht eines Ortes ändern möchte, den ich mit dem Cursor nicht erreichen kann. Mode-Line, Header-Line, Magit-Blame-Header usw. Die meiste Zeit kann ich meinen Weg zu einer Lösung verfolgen und mich irren, aber manchmal stecke ich fest (ich wusste zum Beispiel nicht, dass die Header-Line bis gestern existiert) .

Gibt es eine bequeme Möglichkeit, das Gesicht einer Position in einem Frame zu beschreiben, der nicht mit dem Cursor erreichbar ist? Zum Beispiel mit einer Maus.

ablösen
quelle

Antworten:

7

Ich weiß nicht, wie man mit der Maus umgeht, aber ich habe oft festgestellt, dass es für mich am einfachsten ist, zu rennen list-faces-displayund dann nur noch zu suchen, wie das Gesicht wahrscheinlich heißt, oder visuell nach Text zu suchen, der gleich aussieht.

Jordon Biondo
quelle
1
Dies ist die Antwort, IMHO. Die Anzeige ist WYSIWYG und gibt Ihnen direkten Zugriff auf den Puffer zum Anpassen eines bestimmten Gesichts und direkten Zugriff auf eine vollständige Beschreibung.
Drew
Ich stimme zu und habe den Status geändert. Die andere Lösung ist cool, aber nicht praktisch.
27.
9

Es gibt 4 Regionen, in denen Text in Emacs angezeigt werden kann. Hier erfahren Sie, wie Sie die einzelnen Regionen überprüfen können.

  • Die Mode-Zeile : Siehe den Wert von mode-line-format.
  • Die Kopfzeile : Siehe den Wert von header-line-format.
  • Puffer : Wenn sich das Gesicht in einem Bereich des Puffers befindet, den Sie nicht erreichen können, sehen Sie den Wert von (buffer-string).
  • Minipuffer : Befindet sich ein Punkt im Minipuffer, können Sie dies tun M-: (buffer-string), und dies beschreibt den Inhalt des Minipuffers. Möglicherweise müssen Sie (setq enable-recursive-minibuffers to t)zuerst.
  • Rand oder Rand : Keine, die ich kenne.

Mit diesen Methoden erhalten Sie den gesamten Inhalt dieser Regionen. Es kann also einige Zeit dauern, bis Sie das gesuchte Gesicht gefunden haben, aber es wird auf jeden Fall vorhanden sein. Am wichtigsten ist, dass es sogar Regionen beschreibt, die Sie nicht erreichen können.
Angenommen, ich möchte wissen, welches Gesicht in der find-fileEingabeaufforderung verwendet wird.

  1. Mit find-file aufrufen C-x C-f.
  2. Beschreiben Sie den Minibuffer mit M-: (buffer-string)

Das ergibt so etwas wie die folgende Ausgabe, und genau dort am Ende ist das Gesicht, nach dem ich gesucht habe.

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))
Malabarba
quelle
Interessant! Ich wusste es nicht (buffer-string). Aber wie kann ich es aufrufen, während ich mich im Minipuffer befinde, ohne "Befehl hat versucht, Minipuffer zu verwenden, während er sich im Minipuffer befindet" zu ergeben?
26.
@remvee Ah, setze die Variable enable-recursive-minibuffers auf t
Malabarba
Was ist mit dem Rand?
Tikhon Jelvis
@TikhonJelvis oh, guter Punkt. Das weiß ich nicht.
Malabarba
Ich denke, das lässt auch die Ränder offen?
Sigma
3

Es stellte sich heraus, dass Sie in der Tat die Maus benutzen können (ich denke, das könnte genau das sein, wonach Sie gesucht haben):

  ;; 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
quelle
Dies scheint bei mir in der Modeline nicht zu funktionieren. Funktioniert es an den in der Frage genannten Stellen für Sie?
zck
Funktioniert für mich sowohl mit magit-blameHeadern als auch mit Kandidaten für die Minibuffer-Vervollständigung, der Minibuffer-Eingabeaufforderung und Firmen-Popups. Das heißt, es funktioniert bei mir auch nicht, wenn ich es in der Mode- oder Header-Zeile aufrufe: Diese geben mir (wrong-type-argument number-or-marker-p header-line)(bzw. [...] mode-line). Ich denke, das könnten besondere Fälle sein (zusammen mit Rand und Rand).
Braham-Snyder