描述面部字符不在光标下方/光标无法访问


15

我喜欢结合使用describe-facecustomize-face来调整工作环境的外观。有时,当我想更改用光标无法到达的位置的面时,此工作流程会失败;在大多数情况下,我可以跟踪并出错找到解决方案的方式,但有时我会卡住(例如,直到昨天我才知道标题行存在) 。

有没有便捷的方法来描述光标无法到达的帧中某个位置的面孔?例如通过鼠标。

Answers:


7

我不知道如何使用鼠标,但是我经常发现它对我来说是最容易运行的 list-faces-display,然后我就搜索可能被称为面部的东西或在视觉上扫描看起来相同的文本。


1
答案是,恕我直言。显示为“所见即所得”,它使您可以直接访问给定面孔的“定制”缓冲区,也可以直接访问完整的说明。
Drew

我同意并更改了身份。另一种解决方案很酷,但不方便。
remvee 2014年

9

Emacs可以在4个区域中显示文本,您可以按照以下步骤检查每个区域。

  • 模式行:请参阅的值mode-line-format
  • 标题行:请参阅的值header-line-format
  • 缓冲区:如果脸部在您无法到达的缓冲区中,请参阅的值(buffer-string)
  • Minibuffer:如果point当前在minibuffer中,则可以这样做M-: (buffer-string),这将描述minibuffer的内容。您可能需要(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)。但是,当我在迷你缓冲区中时如何调用它而不产生“命令在迷你缓冲区中时尝试使用迷你缓冲区”呢?
remvee 2014年

@remvee啊,将变量enable-recursive-minibuffers设置为t
Malabarba

边缘呢?
Tikhon Jelvis

@TikhonJelvis哦,好点。我不知道
马拉巴巴2014年

我认为那还会留下利润吗?
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)

这对于我的Modeline似乎不起作用。它在问题中提到的任何地方都对您有用吗?
zck

适用于我的magit-blame标头,以及最低限度的小型缓冲完成候选对象,小型缓冲提示和公司弹出窗口。就是说,当我在模式行或标题行上调用它时,它对我也不起作用:它们分别给我(wrong-type-argument number-or-marker-p header-line)(或[...] mode-line)。我认为这些可能是特别特殊的情况(以及边缘和边缘)。
braham-snyder
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.