6

私は通常、hl-line を現在の背景の少し暗い色合いにします。これは、バッファを編集する際にうまく機能します。しかし、Org アジェンダや Gnus グループ バッファなどの一部のバッファでは、(カーソルの代わりに) もっと派手な色を使いたいと思っています。

具体的に言うと、他のバッファーの hl 行の色に影響を与えに、gnus-hl 行の hl 行の色を変更したいと考えています。

(add-hook 'gnus-summary-mode-hook 'gnus-hl-line)
(add-hook 'gnus-group-mode-hook 'gnus-hl-line)

(defun gnus-hl-line ()
  (hl-line-mode 1)
  (set (make-local-variable 'line-move-visual) nil)
  (setq cursor-type nil))

ありがとう、

Philの提案を使用した最終的な解決策。ほとんどの場合、中立的な hl 行を使用しますが、Gnus や Org アジェンダなどでは、太字の hl 行が目立つ場合があります。

;; From emacs-wiki:
(defun shade-color (intensity)
  "print the #rgb color of the background, dimmed according to intensity"
  (interactive "nIntensity of the shade : ")
  (apply 'format "#%02x%02x%02x"
         (mapcar (lambda (x)
                   (if (> (lsh x -8) intensity)
                       (- (lsh x -8) intensity)
                     0))
                 (color-values (cdr (assoc 'background-color (frame-parameters)))))))

;; Default hl
(global-hl-line-mode t)
(make-variable-buffer-local 'global-hl-line-mode)
(set-face-background hl-line-face (shade-color 08))  

(defface hl-line-highlight-face
  '((t :inherit highlight))
  "Face for highlighting the current line with `hl-line-fancy-highlight'."
  :group 'hl-line)

(defun hl-line-fancy-highlight ()
  (set (make-local-variable 'hl-line-face) 'hl-line-highlight-face)
  ;;    (set (make-local-variable 'line-move-visual) nil)
  ;;    (set (make-local-variable 'cursor-type) nil)
  (setq global-hl-line-mode nil)
  (hl-line-mode))

(add-hook 'org-agenda-mode-hook 'hl-line-fancy-highlight)
(add-hook 'gnus-summary-mode-hook 'hl-line-fancy-highlight)
(add-hook 'gnus-group-mode-hook 'hl-line-fancy-highlight)
4

1 に答える 1

5

hl-line-faceは、 に使用するフェイスを含む変数であるhl-line-modeため、これらのモードでその変数をバッファー ローカルにし、新しいカスタム フェイスを割り当てることができます。

次のように新しい顔を作成できます。

(defface gnus-hl-line
  '((t :inherit hl-line))
  "Face for highlighting the current line with `gnus-hl-line'."
  :group 'hl-line)

そしてそれをカスタマイズしますM-x customize-face RET gnus-hl-line RET

次に、これを関数に追加しますgnus-hl-line(呼び出しhl-line-modeが最も賢明に見える前に)。

(set (make-local-variable 'hl-line-face) 'gnus-hl-line)
于 2012-04-20T02:15:21.520 に答える