Получить шрифт под курсором в Emacs

Я разрабатывал свою собственную тему цвета, и было бы очень полезно, если бы я мог получить список шрифтов, влияющих на текст под курсором.

Что-то вроде Textmate отображает текущую команду области.

Это избавит меня от необходимости делать M-x customize-face и просматривать доступные параметры, угадывая, на какой из них влияет текущее слово, на котором я нахожусь.

Любые идеи?

Ответ 1

Вы можете определить what-face с помощью этого кода:

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

После этого

M-x what-face

напечатает лицо, найденное в текущей точке.

(Благодаря thedz для указания, что what-face не был встроен.)

Ответ 2

what-cursor-position с аргументом префикса показывает лицо под точкой, между прочей информацией.

Комбинация клавиш C-u C-x =

Пример вывода (свойство лица отображается в последнем абзаце):

             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]

Ответ 3

M-x описание-лицо

Ответ 4

Какое лицо находится на правильном пути. Это привело меня к электронному письму в списке рассылки, который имел это:

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

Ответ 5

В коде `what-face 'есть ошибка: функция принимает "pos" в качестве аргумента, но затем не использует ее при получении лица - вместо этого она использует "(точку)", хотя сообщение позже претензии pos в случае "Нет лица в% d".