gpt4 book ai didi

Emacs ediff 错误 "no newline at end of file"

转载 作者:行者123 更新时间:2023-12-04 23:28:06 25 4
gpt4 key购买 nike

在 Debian Wheezy、Emacs 23.3.1 上,运行 ediff-files 的文件末尾缺少换行符会导致错误 \ No newline at end of file (我希望这是正确的翻译;在我的电脑上是德语 \ Kein Zeilenumbruch am Dateiende.。)

是否可以只发出警告,以便我可以看到差异并对其进行处理(并修复丢失的换行符)?首先让 ediff 失败,然后打开文件,添加换行符,再次 ediff 有点乏味。

最佳答案

尝试更改变量 ediff-diff-ok-lines-regexp 的值包括德语文本(“Kein Zeilenumbruch am Dateiende”):

(setq ediff-diff-ok-lines-regexp
(连接
"^\\("
"[0-9,]+[acd][0-9,]+\C-m?$"
"\\|[] "
"\\|---"
"\\|.*警告 *:"
"\\|.*No +newline"
"\\|.*缺少+换行符"
"\\|.*Kein +Zeilenumbruch +am +Dateiende"
"\\|^\C-m?$"
"\\)"))

更新:查看源代码,Ediff 似乎并没有尝试处理来自 diff 的消息本地化问题。 .也应该可以通过包装 diff 来解决这个问题。在 shell 脚本中,例如:

#!/bin/bash
LANG=C 差异 $*

..然后自定义 ediff-diff-program改为调用包装器:

(setq ediff-diff-program "~/bin/my-diff.sh")

Emacs 源目录 lisp/vc 中的其他代码似乎确实处理了这个问题,例如 vc-hg-state :

(defun vc-hg-state (文件)
“'vc-state' 的 Hg 特定版本。”
...
(带输出到字符串
(带电流缓冲器
标准输出
(设置状态
(条件情况为零
;;忽略所有错误。
(让((进程环境
;;避免消息的本地化,因此我们
;;可以解析输出。
(追加(列表“TERM=dumb”“LANGUAGE=C”)
过程环境)))
...

Ediff 没有这样做似乎有点奇怪,但也许我错过了一些东西。

关于Emacs ediff 错误 "no newline at end of file",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com