Замініть "show-trailing-whitespace" у "diff-режимі"


9

У моєму файлі я show-trailing-whitespaceвстановив tглобальний результат .emacs, і це, як правило, не є проблемою, за винятком випадків, коли я diff-modeдивлюся на патч, який має обов'язковий пробіл для порожніх рядків контексту.

Одним із рішень було б просто вимкнутись show-trailing-whitespaceу diff-modeякийсь відповідний гачок, але насправді я хотів би, щоб проміжок білого простору в лініях зміни все ще з’явився. Наприклад, якщо я випадково вніс пробіл білого кольору або якщо я його видаляю, це нормально, і я все одно хочу, щоб це з’явилося trailing-whitespaceобличчям . Я просто не хочу, щоб порожні рядки контексту розглядалися як пробіли білого простору, оскільки вони необхідні для самого формату diff.

Ось приклад поточної поведінки, яку я отримую:

введіть тут опис зображення

І ось що я хотів би:

введіть тут опис зображення

Ось ще один приклад, але на цей раз із фактичним додаванням пробілів:

введіть тут опис зображення

Однак якщо я відключу show-trailing-whitespaceповністю diff-mode, то я б взагалі не бачив темно-червоного. Натомість я хочу цього:

введіть тут опис зображення

В основному, я думаю, що це show-trailing-whitespaceозначає усвідомлення того, що розрізні лінії, що мають лише один пробіл, є особливими.


3
Ви впевнені, що просто вимкнути це повністю в режимі розмови - це не те, що ви хочете? Якщо ви випадково додали або вилучили пробіли пробілу, чи не виділить розрізний режим незалежно від конфігурації emacs (в силу того, що це зміна файлу)?
Малабарба,

Я хочу побачити пробіл пробілу в шрифті білого простору червоного кольору. Не соромтеся включати відповідь про відключення просто в режимі розмови, що може бути корисним для інших людей, але це не зовсім те, що я шукав.
b4hand

1
Чи було б задовільним, якби власне підсвічування обличчя диф-режиму було встановлено щось подібне до червоного в режимі білого простору?
Малабарба

Відповіді:


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)))

Для того, щоб перевірити документацію для шоу-зчіпного-пробільного: C-h v show-trailing-whitespace.


2
Але це вимикає режим для всього буфера, саме цього b4hand хоче уникати.
Жил "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.