【求助】Windows 下怎么用 msys2 里面的 makeinfo?

最近用 Windows 干活,用文档里说明的方式也能正常编译最新版的 Emacs,但是在安装包的时候,需要用到 makeinfo 这么个指令

msys2 已经安装了 texinfo 这个包,看了下文件目录下,也有 makeinfo

图片

又看了看发现是个 perl 文件,并不是什么可执行程序。

在 msys2 终端里能正常执行

我猜大概是 Windows 不能用 shebang 这种方式?

在 Windows 下该怎么执行 makeinfo 呢?


现在的解决方式 ,把 makeinfo 命令改成 perl makeinfo,有没有啥 Windows 原生的方式?搜了下有个 gnuwin32,不过里面的 texinfo 版本还是 4.x,有点老。


再更新,用 perl makeinfo 这种方式,生成的 info 成了中文,并且有 dos 换行符,有没有什么办法让它默认用 unix 换行,并且默认是英文?


过了一晚莫名其妙变成英文了,感觉是缓存没清掉?。。。不知道这个叫 top 的 info 文件储存在哪个地方,是不是每次按下 C-h i 时自动生成的,之前的做法是加了 --document-language=en 这个参数,但是没生效,我也就放弃了。。。但是还是有 dos 换行符,不知道咋去掉

ps: 并没有解决,过一会儿又变成中文了

直接下个 dos2unix

问题是搜不到这个 dir 文件在哪,怀疑是不是每次按下 info 时自动生成的,全局搜索也搜不到这个文件

邮件列表里看到这么个讨论

https://lists.gnu.org/archive/html/texinfo-devel/2015-06/msg00011.html

但是也没啥下文

直接 C-x C-f,Windows 上一般在 AppData 下面,是个隐藏文件夾

你刚刚那句话提醒了我,应该是自动生成的

直接 C-x C-f 的话,它会在 c:/emacs/emacs-git/share/info 里,但该目录下的 dir 文件是英文的

经过测试,开启 Emacs 后 (setq Info-directory-list nil),显示的 info 目录是英文的,跟目录下的一致;但自己用 install-info 安装其他 info 后,也就是 Info-directory-list 这个变量不为空时,即便其他 info 是英文的,生成出来的 info 目录还是中文的

你可以在makeinfo同目录下创建一个makeinfo.bat

@echo off
perl "%~dpn0" %*

然后就能用emacs调用了,我是最近用package-vc发现编译不了info文件发了bug问才知道,另外如果你不用msys2,可以用Eli的ezwinports ezwinports - Browse Files at SourceForge.net

1 个赞

这个方法好,感谢解答