从el文件生成autoloads时怎么忽略unix后缀

用borg build包时,会根据.el源码文件生成autoloads,一般的包正常。但有些在源码文件var中加入了 utf-8-unix后缀,windows下就会导致build失败。一个一个改后缀充满变数,不知哪个包又失败了。

请教有没有忽略local var或者忽略后缀的方法?

如下是一个包报错信息


 Creating e:/emacs/.emacs.d/lib/transient-posframe/transient-posframe-autoloads.
el...
Debugger entered--Lisp error: (error "transient-posframe.el:0:0: error: error: (
Local va...")
  signal(error ("transient-posframe.el:0:0: error: error: (Local va..."))
  error("%s:0:0: error: %s: %s" "transient-posframe.el" error ("Local variables
entry is missing the suffix"))
  autoload-generate-file-autoloads("transient-posframe.el" nil "e:/emacs/.emacs.
d/lib/transient-posframe/transient...")
  make-directory-autoloads(("e:/emacs/.emacs.d/lib/transient-posframe/") "e:/ema
cs/.emacs.d/lib/transient-posframe/transient...")
  borg-update-autoloads("transient-posframe" ("e:/emacs/.emacs.d/lib/transient-p
osframe/"))
  borg--build-noninteractive("transient-posframe")
  borg-build("transient-posframe")
  borg-batch-rebuild()
  command-line-1(("--eval" "(require 'comp nil t)" "--load" "subr-x" "--eval" "(
setq byte-compile-warnings '(not docstrings))" "--eval" "(fset 'original-message
 (symbol-function 'message)..." "--eval" "(fset 'message (lambda (format &rest a
rgs) (unless..." "-L" "lib/borg/" "--load" "borg" "--funcall" "borg-initialize"
"--funcall" "borg-batch-rebuild"))

command-line() normal-top-level()

make: *** [lib/borg/borg.mk:67:build] 错误 127

源码中的后缀?你的意思应该是有些el文件第一行有类似 -*- coding: utf-8-unix -*- 这个文件头吧。能给个具体的例子吗?

应该是文件尾,最后那几行

比如出错的这个transient-posframe,信息在上面了。这种库好些,所以一个个改也不方便。borg make build 一遍也慢。

看到一个类似的issue https://github.com/hlissner/doom-emacs/issues/2637#issuecomment-627220845 这个解决办法是让git 克隆repo的时候自动转换成windows的换行符。

禁用file local variable可以用(setq enable-local-variables nil) ,见 emacs manual, 不过我记得有些major-mode比如latex-mode的部分功能依赖于file local variable。。。

最好跟transient-posframe的作者提个issue吧 coding: utf-8-unix 改成 coding: utf-8

git config --global core.autocrlf true 这个估计不可行,它不可能修改el源码吧。

(setq enable-local-variables nil)这个我明天试试,估计能成。

往upstream报好像几个库都是这种。我也不知道这个变量的具体用途,好像不带这个也能识别成utf/8吧 多谢帮助

忽略local-var的方式有点复杂。最后我还是使用手动改后缀的方式解决。有些包用utf-8-unix,有个用us-ascii-unix。

这个东西原来是个bug。。。今天编译emacs的时候发现已经被修复了 https://github.com/emacs-mirror/emacs/commit/606b783acb3388249c38264f8e37e08af832e1ea

1 个赞

太好了,不过得等发布新版本

29.1中这个问题还是存在,这个提交好像没有解决问题。

现在是把用到几个包的改成utf-8。