символ опису-обличчя, що не знаходиться під / недоступний курсором


15

Мені подобається використовувати комбінацію describe-faceта customize-faceкоригувати зовнішній вигляд мого робочого середовища. Колись цей робочий процес виходить з ладу, коли я хочу змінити обличчя місця, до якого не можу досягти курсору; рядки режиму, заголовки, заголовки магніт-звинувачення тощо. Більшу частину часу я можу відстежувати та помилятись своїм шляхом до рішення, але іноді я застрягаю (я не знав, що рядок заголовка існував до вчора, наприклад) .

Чи є зручний спосіб описати обличчя місця у кадрі, недоступному курсором? Наприклад, за допомогою миші.

Відповіді:


7

Я не знаю про використання миші, але я часто знаходив, що мені найлегше запустити, list-faces-displayа потім просто я шукаю те, що обличчя, ймовірно, називається, або візуально сканувати текст, який виглядає так само.


1
Це відповідь, ІМХО. Дисплей WYSIWYG, і він надає вам прямий доступ до буфера налаштування для заданого обличчя та прямий доступ до повного опису.
Дрю

Я згоден і змінив статус. Інше рішення - класне, але не зручне.
ремвай

9

Є 4 регіони, де текст може відображатися в Emacs, ось що ви можете зробити для огляду кожної з них.

  • Рядок режиму : див. Значення mode-line-format.
  • Рядок заголовка : див. Значення header-line-format.
  • Буфер : Якщо обличчя знаходиться в області буфера, до якого ви не можете досягти, перегляньте значення (buffer-string).
  • Мінібуфер : Якщо в мінібуфері зараз знаходиться точка, ви можете це зробити M-: (buffer-string), і це опише вміст мінібуфера. Вам може знадобитися (setq enable-recursive-minibuffers to t)спочатку.
  • Бахрома або маржа : Жодної, про яку я знаю.

Ці методи дадуть вам увесь вміст цих регіонів, тому може знадобитися деяке читання, щоб дійсно знайти обличчя, яке ви шукаєте, але воно, безумовно, буде там. Найголовніше, що він описує навіть регіони, до яких ви не можете дістатися.
Наприклад, скажімо, я хочу знати, яке обличчя використовується в find-fileпідказці.

  1. Викликати файл пошуку з C-x C-f.
  2. Опишіть мінібуфер с M-: (buffer-string)

Це дасть щось на кшталт наступного результату, і тут же в кінці - обличчя, яке я шукав.

#("Find file: ~/" 0 11 (front-sticky t rear-nonsticky t field t read-only t point-entered minibuffer-avoid-prompt face minibuffer-prompt))

Цікаво! Я не знав (buffer-string). Але як я можу викликати це, коли я перебуваю в мінібуфері, не поступаючись "Команда намагалася використовувати minibuffer під час minibuffer"?
remvee

@remvee Ах, встановіть змінну включення-рекурсивні-мінібуфери на t
Malabarba

Що з бахромою?
Тихон Єлвіс

@TikhonJelvis о, хороший момент. Що я не знаю.
Малабарба

Я думаю, що це також залишає поля?
Sigma

3

Виявляється, ви дійсно можете використовувати мишу (я думаю, це саме те, що ви шукали):

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

Це, здається, не працює для мене в моделі. Чи працює це на вас у будь-яких місцях, зазначених у питанні?
zck

Для мене працює над magit-blameзаголовками, а також, як мінімум, кандидатами на завершення мінібуфера, підказкою minibuffer та спливаючими компаніями. Це сказало, що це не працює для мене, коли я називаю це в режимі або в заголовку: вони дають мені (wrong-type-argument number-or-marker-p header-line)(або [...] mode-line, відповідно). Я думаю, що це можуть бути особливо особливі випадки (поряд з бахромою та запасом).
брахам-снайдер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.