좋은 하이라이트 얼굴을 정의하는 방법


9

사용 global-hl-line-mode하고 싶지만 내 테마 중 일부에 하이라이트가 부족합니다. 하나를 정의하는 일반적인 방법이 있습니까 (역색이 아님)? 구문 강조를 유지하고 싶습니다.


"정의 방법"이란 정확히 무엇을 의미합니까? 외모에 대한 제안을하고 있습니까? 주어진 모양을주는면을 정의하는 방법에 대해? 얼굴 정의를 테마의 얼굴 정의 효과보다 우선하는 방법에 대해? 사용하는 얼굴을 사용자 정의하려고 했습니까 global-hl-line-mode? 요컨대, 질문을 더 명확하게 지정하십시오. 사람들이 도움을 줄 것입니다.
Drew

답변:


17

이것은 실제로 의견의 문제이지만, 항상 hl-line기본값보다 약간 어두운 배경 을 만드는 것이 가장 좋습니다.

구문 강조를 유지하고 싶습니다.

구문 강조를 유지하려면 hl-line면의 :foreground속성이 nil 인지 확인한 다음 :background원하는 속성을 설정하십시오 .

다음은 이러한 설정을 사용하는 모습입니다.

(set-face-attribute 'default nil :background "gray15")
(set-face-attribute 'hl-line nil :foreground nil :background "gray5")

여기에 이미지 설명을 입력하십시오

그 소리에 따라 테마를 변경하기 때문에 하드 코딩 된 색상을 원하지 않습니다. emacs가 다음 :background과 같이 hl-line얼굴 의 얼굴을 현재 기본값보다 약간 어두운 색 으로 자동 설정하도록 할 수 있습니다 :background.

(require 'color)

(defun set-hl-line-color-based-on-theme ()
  "Sets the hl-line face to have no foregorund and a background
    that is 10% darker than the default face's background."
  (set-face-attribute 'hl-line nil
                      :foreground nil
                      :background (color-darken-name (face-background 'default) 10)))

(add-hook 'global-hl-line-mode-hook 'set-hl-line-color-based-on-theme)

이렇게하면 얼굴 배경을 활성화 할 때마다 기본 배경보다 10 % 어둡게 설정됩니다 global-hl-line-mode

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.