シンタックスの強調表示を取り消す行の強調表示

I use hl-line-mode and I really like the built-in misterioso theme. However, the way that lines are highlighted with this theme cancels out syntax highlighting or any other properties of the highlighted lines, as can be seen in this screenshot. enter image description here

強調表示を同じ色に保つにはどうすればよいですか?強調表示されたテキストの顔のプロパティを隠蔽しないでください。私は妥協し、必要に応じて色を変えたいと思っていますが、それは問題ではないようです。私は色を変えようとしましたが、同じ効果が得られます。私もこの解決策を試みましたが、強調表示を完全に取り除くことに成功しました。

This question seems to be the same or similar to mine, but I am honestly not sure if it is the same. I tried the solution suggested there but couldn't get it to work. Rather than having a discussion in the comments of that question, I thought I would ask a new one, but my feelings will not be hurt if this gets marked as duplicate.

5
追加された 編集された
ビュー: 3
@PythonNut:フォアグラウンドでもバックグラウンドでも、私と同じ質問のようです。私はあなたがその質問(前景と背景を交換する)にあなたの答えを加えることを考慮すべきだと思います。そして、これは複製として閉じなければなりません。しかし、これはもっと明確に表現されるかもしれません。
追加された 著者 Ryan Eastabrook,
追加された 著者 Ryan Eastabrook,
あなたがリンクしている質問は重複しているとは思わない。なぜなら、あなたはフォアグラウンドのオーバーライドを扱っている最中に背景のオーバーライドを扱うからだ。
追加された 著者 PythonNut,

1 答え

基本的に、 hl-line の顔は、テーマの他の前景色を上書きする:foreground プロパティを定義しています。

misterioso defines hl-line in terms of highlight using inheritance, and because of an awkward issue (which I asked about here), it's not possible AFAIK to directly inherit from a face, and override one of the properties to be unset.

代わりに、あなたは次のようなものが必要になります:

(set-face-attribute 'hl-line nil
                    :inherit nil
                    :background (face-background 'highlight))

これは、継承を保持できる仮想ソリューションほどきれいではないかもしれませんが、機能します。


Stefanが指摘したように、もう一つの解決策は前景をハイライトの顔から削除することです。これは他のタイプのハイライトでもこの問題を解決します。

(set-face-foreground 'highlight nil)
5
追加された
もっと良い解決策は、ハイライトの顔を変更して、フォアグラウンドを指定しないことです。
追加された 著者 sds,
emacsをX(GUI)モードで動かすと、これらの解決法はどちらも機能していないようですが、 -nw でうまく動作します。
追加された 著者 user1477388,