不透明なテーマの背景?またはテーマコールバック?


7

関連する2つの質問

  1. emacsでテーマを設定しながら不透明度を使用することはできますか?たとえば、適用される要素の背景色に青色の25%を追加するテーマを定義することを意味します。または、フォントを30%軽量化します。

または、そうでない場合。

  1. メインのカスタムテーマが変更されるたびに、一部のテーマプロパティを動的に再計算することは可能ですか?

バックグラウンド

このようなことは、さまざまな「マークの追加」モードに最適です。具体的に言うと、flycheck-error faceです。テキストに下線を引く代わりに背景にわずかに赤いアクセントを付けると、侵襲性が低下します。

しかし、私の主なケースはクロスヘアモード(現在の行と現在の列の強調表示を組み合わせたもの)です。デフォルトとは少し異なる背景を使用するように設定しました。これにより、カーソルの位置がわかりやすく表示されます。しかし、テーマを頻繁に切り替え始めると、適切な色は現在の背景に依存するため、迷惑であることがわかりました。


ここにアイデアがあります:関数gamgrid-colorgamegrid-colorize-glyph内部gamegrid.elは、シェーディングを使用してさまざまなレベルのカラーリングを作成できる結合された例です。たとえば、0.6または0.8または1.0(フルカラー)で使用されるシェードです。テーマ内で変更したい色は、関数color-name-to-rgbfrom を使用して色を3要素ベクトルに変換することにより、プログラムで実行できますcolor.el。関数はface-remap-add-relative:特定の顔がバッファローカルにするために使用することができる gnu.org/software/emacs/manual/html_node/elisp/...
lawlist

特定のオペレーティングシステムでは、十字線モードvline-style'compose[複合文字を使用]または'mixed[顔と複合文字を使用]を使用して、垂直の取り消し線効果を作成できます。デフォルト値は'faceです。vline-styleオプション'composeおよび'mixedWindows上のボックスのうちの作品は、しかし、OSX上の箱から出して動作しません。の垂直の取り消し線効果'composeは面を使用しないため、垂直線の表示を妨げる​​背景色の問題がおそらく解決されます。
弁護士、2015年

回答:


2

私はようやく自分自身で多かれ少なかれ満足のいく解決策を見つけました。それでも、それが完璧かどうかはわかりません。

1)ライブラリhexrgb.elは、実際の色計算を実行するための素晴らしい関数を提供します。例えば:

(hexrgb-increment-green (face-background 'default) 2 20)

現在の背景よりも少し緑の色を計算します(上記のパラメーターでは、2は各色の桁数、20は相対的な変化です)。

2)次に、load-theme(これを書いていると、これは良い場所ではなく、いくつかの低レベルのAPI-enable-themeまたはsthのさらに深いものである可能性があります-hl-lineおよびテーマ変更後のcol-highlightフェイス(実際の色を設定する必要がありましたが、:inheritもクリアする必要がありました)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.