4

カラーテーマファイル(gruber-darker.elに類似)があり、特定の色を調整したいと思います。この色は次のように説明できます。を介してOrgAgenda(org-mode agenda buffer)に変更しM-x org-agenda aます。次に、Scheduled TODOアイテムの上にカーソルを移動します(これは、アジェンダファイルの対応するエントリへのリンクです)。カーソルがそのようなアイテムの上にあるとき、背景色と前景色で強調表示された形式でアイテムが表示されます。背景色は細かいですが、前景色は白です。:foreground nilこの前景色を、もう白くならないように調整したいと思います。代わりに、カーソルが置かれているアイテムの自然な色が継承されます。普段使っていますM-x describe-face RET私が変えなければならない要素が何であるかを理解するために。ただし、カーソルが置かれているアイテムの色/要素名しか取得できないため、これはここでは機能しません。

更新1: emacsのすべてのリンクで同じ動作が得られることに気づきました(org-modeだけでなく)。(highlight ((t (:background "#453D41"))))ハイライトされた領域として茶色の背景バーが表示されることがわかりました。しかし、カーソルが強調表示された領域の上にあると、元の色ではなく白い前景色が表示されます。カーソルが置かれているアイテムの元の色を教えて(highlight ((t (:background "#453D41" :foreground nil))))くれません。どうすればそれを達成できますか?

更新2:(highlight ((t (:foreground "#000000" :background "#453D41"))))実際に白ではなく黒の前景色が得られる ことがわかりました。しかし、カーソルが置かれているアイテムの「継承された」前景色を取得する方法がわかりません。

4

3 に答える 3

2

describe-charの代わりに使用してみてくださいdescribe-face。これにより、使用中のさまざまな面に関する詳細情報が得られるはずです。

関数はインタラクティブにポイントの文字を使用しますが、位置を渡すこともできるため、問題の文字にカーソルを置くことが問題であることがわかった場合(たとえば、強調表示を別のものに変更する場合)、次のように実行できます。 :

  1. ポイントを近くの競合しない位置に移動します(たとえば、関心のある文字の3文字前に移動します)。
  2. M-: (describe-char (+ 3 (point))) RET
于 2011-12-29T20:51:05.643 に答える
1

を使用M-x customize-faceすると、前景色をテーマのフォントロックと競合させずに、ハイライト面のみの背景色を定義できませんでした。

ただし、emacsテーマをロードする前に、ハイライトフェイスのカスタムを定義することで、ハイライトフェイスの継承された前景色を定義することができました。

私が使用dracula-themeし、以下に、この正確なニーズを解決する私のinit.elファイルの最初の行の例を示します。

(custom-set-faces
 '(highlight ((t (:background "#222222" :foreground nil))))

;; Setting personal theme
(unless (package-installed-p 'dracula-theme)
  (package-install 'dracula-theme))

(load-theme 'dracula t)

emacsインスタンス(私の場合はデーモン)を再起動して変更を適用したところ、ようやく機能しました。

于 2021-04-11T14:45:24.010 に答える
0

あなたが発見したことは、それができないということです。一つには、mouse-facetextプロパティはプロパティから独立していfaceます。もう1つは、顔の属性が静的に定義されていることです。動的に継承することはできません。

highlightを使用して、そのような機能(またはに限定されないmouse-faceなど)のEmacs拡張リクエストを提出することを検討してくださいM-x report-emacs-bug。(はい、そのコマンドは拡張要求用でもあります。)

于 2012-01-03T22:17:52.980 に答える