Get font face unter Cursor in Emacs
-
12-09-2019 - |
Frage
Ich habe mein eigenes benutzerdefiniertes Farbthema entwickelt, und es wäre wirklich nützlich sein, wenn ich eine Liste der font-Gesichter bekommen konnte den Text unter dem Cursor zu beeinflussen.
So etwas wie Textmate Show aktuelle Bereich Befehl.
Das würde mich retten die Mühe der M-x customize-face tun und Optionen der Suche durch, bei denen erraten man das aktuelle Wort wirkt sich auf ich bin.
Irgendwelche Ideen?
Lösung
Sie können what-face
mit diesem Code definieren:
(defun what-face (pos)
(interactive "d")
(let ((face (or (get-char-property (pos) 'read-face-name)
(get-char-property (pos) 'face))))
(if face (message "Face: %s" face) (message "No face at %d" pos))))
Danach
M-x what-face
wird das Gesicht am aktuellen Punkt gefunden drucken.
(Danke an thedz für den Hinweis auf, dass what-face
nicht gebaut wurde.)
Andere Tipps
what-cursor-position
mit einem Präfix Argumente zeigt das Gesicht unter Punkt neben anderen Informationen.
Tastaturkürzel sind C-u C-x =
Beispiel Ausgabe (das Gesicht Eigenschaft wird im letzten Absatz dargestellt):
position: 5356 of 25376 (21%), column: 4
character: r (displayed as r) (codepoint 114, #o162, #x72)
preferred charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x72
syntax: w which means: word
category: .:Base, L:Left-to-right (strong), a:ASCII, l:Latin, r:Roman
buffer code: #x72
file code: #x72 (encoded by coding system undecided-unix)
display: by this font (glyph code)
nil:-apple-Monaco-medium-normal-normal-*-12-*-*-*-m-0-iso10646-1 (#x55)
Character code properties: customize what to show
name: LATIN SMALL LETTER R
general-category: Ll (Letter, Lowercase)
decomposition: (114) ('r')
There are text properties here:
face org-level-2
fontified t
[back]
M-x beschreibt Gesicht
Trey ist, was Gesicht auf dem richtigen Weg ist. Es führte mich zu einer E-Mail auf einer Mailingliste, die dies hatte:
(defun what-face (pos)
(interactive "d")
(let ((face (or (get-char-property (point) 'read-face-name)
(get-char-property (point) 'face))))
(if face (message "Face: %s" face) (message "No face at %d" pos))))
Es gibt einen Fehler in der `Was-sei-face‘ Code: Die Funktion übernimmt ‚po‘ als Argument aber dann es nicht verwenden, wenn das Gesicht bekommen - stattdessen verwendet es ‚(Punkt)‘, auch wenn die Nachricht später Ansprüche pos in dem "No Gesicht in% d" Fall.