`diff-mode`에서`show-trailing-whitespace`를 재정의하십시오


9

필자는 파일 에서 전역으로 show-trailing-whitespace설정했으며 , 빈 컨텍스트 라인에 필수 후행 공백이있는 패치를 볼 때를 제외하고는 일반적으로 문제가되지 않습니다 .t.emacsdiff-mode

한 가지 해결책은 관련 후크 show-trailing-whitespace에서 간단히 끄는 diff-mode것이지만 실제로 변경 줄의 공백을 계속 표시하고 싶습니다. 예를 들어, 실수로 후행 공백을 도입했거나 공백을 제거해도 문제가 없지만 여전히 trailing-whitespace얼굴 에 표시되기를 원합니다 . 빈 컨텍스트 줄이 diff 형식 자체에 필요하기 때문에 공백 공백으로 처리되는 것을 원하지 않습니다.

내가 얻는 현재 행동의 예는 다음과 같습니다.

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

그리고 이것이 내가 원하는 것입니다 :

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

다음은 실제 공백을 추가 한 또 다른 예입니다 .

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

그러나 show-trailing-whitespace에서 완전히 비활성화 diff-mode하면 짙은 빨간색이 전혀 표시되지 않습니다. 대신, 이것이 내가 원하는 것입니다.

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

기본적으로 이것은 show-trailing-whitespace단일 공간을 가진 diff 라인이 특별하다는 것을 인식하는 것을 포함한다고 생각합니다 .


3
diff-mode에서 이것을 완전히 비활성화하는 것이 원하는 것이 아닙니까? 실수로 후행 공백을 추가하거나 제거한 경우, 파일의 변경으로 인해 emacs 구성에 관계없이 diff-mode가 강조 표시되지 않습니까?
Malabarba

빨간색의 공백 글꼴에서 후행 공백을보고 싶습니다. 다른 사람들에게 도움이 될 수 있으므로 diff-mode에서만 비활성화하는 것에 대한 답변을 자유롭게 포함하십시오. 그러나 그것이 내가 원하는 것이 아닙니다.
b4hand

1
diff-mode 자신의 강조 표시면이 white-space-mode의 빨강과 비슷한 것으로 설정되어 있으면 만족할까요?
Malabarba

답변:


1

한 가지 해결 방법은 Diff 모드에서 후행 공백 모드를 끄는 대신보고 싶지 않은 후행 공백에 대한 사용자 지정 글꼴 잠금 규칙을 정의하는 것입니다.

(defvar diff-trailing-whitespace-keywords
  '(("^[+-<>]\\(.*\\S \\)?\\(\\s +\\)$" (2 'trailing-whitespace t))))
(defun diff-mode-font-lock-add-trailing-whitespace ()
  (setq diff-font-lock-keywords-and-whitespace
    (append diff-font-lock-keywords
        diff-trailing-whitespace-keywords))
  (setcar diff-font-lock-defaults 'diff-font-lock-keywords-and-whitespace))
(defun turn-off-trailing-whitespace ()
  (setq show-trailing-whitespace nil))
(add-hook 'diff-mode-hook 'turn-off-trailing-whitespace)
(eval-after-load "diff-mode" '(diff-mode-font-lock-add-trailing-whitespace))

2

값을 show-trailing-whitespace설정하면 버퍼 로컬이되므로 관련 후크에서 값을 설정할 수 있습니다.

(add-hook 'diff-mode-hook (lambda () (setq show-trailing-whitespace nil)))

show-trailing-whitespace 설명서를 확인하려면 : C-h v show-trailing-whitespace.


2
그러나 이것은 전체 버퍼에 대한 모드를 끕니다. 이는 b4hand가 피하고자하는 것입니다.
Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.