web-dev-qa-db-fra.com

Obtenez le visage de la police sous le curseur dans Emacs

J'ai développé mon propre thème de couleur personnalisé, et ce serait vraiment utile si je pouvais obtenir une liste des polices de caractères affectant le texte sous le curseur.

Quelque chose comme la commande show current scope de Textmate.

Cela me sauverait la peine de faire M-x personnaliser le visage et de regarder à travers les options disponibles, deviner lequel affecte le Word actuel sur lequel je suis.

Des idées?

92
thedz

Vous pouvez définir what-face avec ce code:

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

Après ça,

M-x what-face

imprimera le visage trouvé au point actuel.

(Merci à thedz d'avoir souligné que what-face n'a pas été intégré.)

41
Trey Jackson

what-cursor-position avec un argument préfixe montre le visage sous le point, entre autres informations.

Le raccourci clavier est C-u C-x =

Exemple de sortie (la propriété face est indiquée dans le dernier paragraphe):

             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]
164
jlf

M-x décrire-face

63
Yoo

Le visage de Trey est sur la bonne voie. Cela m'a conduit à un e-mail sur une liste de diffusion qui avait ceci:

(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))))
8
thedz

Il y a un bug dans le code `what-face ': la fonction prend" pos "comme argument mais ne l'utilise pas lors de l'obtention du visage - à la place elle utilise" (point) ", même si le message plus tard - revendications pos dans le cas "No face at% d".

2
Karl Fogel