Попробуйте изменить значение переменной ediff-diff-ok-lines-regexp
включить немецкий текст («Kein Zeilenumbruch я Dateiende»):
(setq ediff-diff-ok-lines-regexp
(concat
"^\\("
"[0-9,]+[acd][0-9,]+\C-m?$"
"\\|[] "
"\\|---"
"\\|.*Warning *:"
"\\|.*No +newline"
"\\|.*missing +newline"
"\\|.*Kein +Zeilenumbruch +am +Dateiende"
"\\|^\C-m?$"
"\\)"))
Update: Глядя на исходный код, действительно кажется, что Ediff Безразлично» t попытаться решить проблему локализации сообщений от diff
. Она также должна быть возможность обойти это путем обертывания diff
в сценарий оболочки, например:
#!/bin/bash
LANG=C diff $*
..то настройки ediff-diff-program
вызвать обертка вместо:
(setq ediff-diff-program "~/bin/my-diff.sh")
Другой код в Emacs исходный каталог лепет/VC, похоже, с этим справиться, например vc-hg-state
:
(defun vc-hg-state (file)
"Hg-specific version of `vc-state'."
...
(with-output-to-string
(with-current-buffer
standard-output
(setq status
(condition-case nil
;; Ignore all errors.
(let ((process-environment
;; Avoid localization of messages so we
;; can parse the output.
(append (list "TERM=dumb" "LANGUAGE=C")
process-environment)))
...
это кажется немного странным, что Ediff также не делать это, но, возможно, я что-то упустил.
Что вы имеете в виду при помощи ediff 'erroring' и 'failing'? Вы хотите рассматривать недостающую новую строку в конце файла как разницу или нет (в этом случае вы можете установить 'ediff-diff-options' в' '-w", чтобы игнорировать различия в пробелах)? –
С «failing» я имею в виду, что вместо получения diff файлы «ediff-files» останавливаются с сообщением об ошибке «Errors in diff output». Вывод Diff находится в # ', а буфер' * ediff-errors *' появляется с '\ Kein Zeilenumbruch ...'. И да, я бы предпочел, чтобы проблема была показана мне как предупреждение, и тогда будет отображаться diff. С '-w' ошибка все еще происходит. (Тем не менее, это не помогло бы, если бы я хотел искать различия в пробелах.) –
ОК, я понимаю, что вы имеете в виду сейчас, я получаю ту же ошибку, если я установил свой язык на немецкий язык. Как вы говорите в своем ответе, Emacs ожидает, что выход diff будет на английском языке. Я предложил другое обходное решение. –