カーソルの下にない/到達不能な記述文字


15

組み合わせを使用してのようなI describe-facecustomize-face私の作業環境の外観を調整します。カーソルで到達できない場所の顔を変更したいときに、このワークフローが失敗することがあります。mode-line、header-line、magit-blame headersなど。ほとんどの場合、解決策をたどってエラーになりますが、時々行き詰まります(たとえば、昨日までヘッダー行が存在することを知りませんでした) 。

カーソルで到達できないフレーム内の場所の顔を記述する便利な方法はありますか?たとえば、マウスを使用します。

回答:


7

私はマウスの使用については知りませんが、実行するのが最も簡単でlist-faces-display、顔と呼ばれる可能性のあるものをi検索するか、同じように見えるテキストを視覚的にスキャンすることが最も簡単であることがしばしばわかりました 。


1
これが答えです、私見。表示はWYSIWYGであり、特定の顔のカスタマイズバッファへの直接アクセスと完全な説明への直接アクセスを提供します。
ドリュー14

同意してステータスを変更しました。他の解決策はクールですが、便利ではありません。
14

9

Emacsでテキストが表示される可能性のある領域は4つあります。ここでは、それぞれを検査するためにできることを示します。

  • モードライン:の値を参照してくださいmode-line-format
  • ヘッダー行:の値を参照してくださいheader-line-format
  • バッファー:顔が到達できないバッファーの領域にある場合は、の値を参照してください(buffer-string)
  • ミニバッファー:ポイントが現在ミニバッファー内にある場合、を実行できますM-: (buffer-string)。これにより、ミニバッファーの内容が記述されます。(setq enable-recursive-minibuffers to t)最初に必要になる場合があります。
  • フリンジまたはマージン:私が知っていることはありません。

これらのメソッドは、これらの領域のコンテンツ全体を提供するので、探している顔を実際に見つけるには多少の読書が必要かもしれませんが、確かにそこにあります。最も重要なのは、到達できない地域でさえも説明することです。
たとえば、find-fileプロンプトで使用されている顔を知りたいとします。

  1. でfind-fileを呼び出します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)。しかし、「コマンドがミニバッファーにいる間にミニバッファーを使用しようとした」ということをせずに、ミニバッファーにいる間にそれをどのように呼び出すのですか?
14

@remveeああ、変数enable-recursive-minibuffersをtに設定します
Malabarba 14

フリンジはどうですか?
ティコンジェルビス14

@TikhonJelvisああ、良い点。わからない。
マラバルバ14

それもマージンを残すと思いますか?
シグマ14

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のヘッダーと同様に、最低でも、ミニバッファ補完候補、ミニバッファプロンプト、および会社のポップアップ。それは私がモード-またはヘッダーラインでそれを呼び出すとき、それはどちらか私のために働いていない、言った:それらは私を与える(wrong-type-argument number-or-marker-p header-line)(または[...] mode-lineそれぞれ)。これらは、(フリンジとマージンとともに)特に特別な場合があると思います。
ブラハムスナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.