Получить шрифт под курсором в Emacs - PullRequest
91 голосов
/ 07 августа 2009

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

Что-то вроде команды show current в Textmate.

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

Есть идеи?

Ответы [ 5 ]

161 голосов
/ 07 августа 2009

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

Сочетание клавиш C-u C-x =

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

             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]
62 голосов
/ 08 августа 2009

М-х описать лицо

41 голосов
/ 07 августа 2009

Вы можете определить 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 не был встроен.)

8 голосов
/ 07 августа 2009

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

(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))))
2 голосов
/ 30 декабря 2013

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

...