Info 怎么直接在 Emacs 看?

我从 http://plplot.org/documentation.php 下载一个 Info 文档,想在 Emacs 里看,据我以前的了解,必须要安装 (info “(texinfo) Installing an Info File”),看起来就麻烦,但是 info 命令行能直接看:

~ $ info Downloads/plplot-info-5.15.0/plplotdoc.info

但是 Emacs 却没有 Info-find-file 这样的命令,大家有什么经验和建议?

sudo mv Downloads/plplot-info-5.15.0/plplotdoc.info /usr/share/info
cd /usr/share/info
sudo install-info plplotdoc.info dir

应该没有什么简单方法,文档写得很难懂,但操作起来是很容易的

1 个赞

下面这个试试看

(setq Info-default-directory-list (append
				   Info-default-directory-list
				   '("~/backup/src/emacs-24.4/info")))

"~/backup/src/emacs-24.4/info" 你下载的 info 文件位置

PS:刚刚看到一个名为 Info-additional-directory-list 的变量,可以直接试试看这个。

helm-info

OK,怎么安装已经会了。

应该能做到不安装也能用吧,像命令行 info 那样。我试了下用 Emacs 打开 .info 文件,此时是 fundamental 模式,然后 M-x Info-on-current-buffer 试图打开 Info Mode,不成功,然后 M-x revert-bufer 居然就是 Info 了,虽然会报个错,但可以使用。

helm-M-x-execute-command: No such node or anchor: Top
Revert info buffer? (y or n) y
Info-find-node-2: Wrong type argument: stringp, nil

我觉得安装了不用每次都输入路径,要方便点。

看了一下 info.el,是有个 find-info-file 函数,不过它的作用只是返回完整路径而已,真正起作用的是 Infon-on-buffer。所以直接打开 info 是没有问题的,比普通的 find-file 多一个步骤而已。适合查看散放的 info 文件:

(add-to-list 'auto-mode-alist '("\\.info\\(\\.gz\\)?\\'" . Info-on-current-buffer))

集中存放的 info 文件还是像 helm-info 那样比较方便:先收集到 info 列表,然后从通过下菜单打开。

我这么干的: https://github.com/randomwangran/WRE/commit/408182510c5c47faced74fc615eb0e4c4d46fb54

这点没错。但我想先看看这个 info 在 Emacs 中的效果如何,安装需要操作,要是效果不好,后续卸载也需要操作。

如我前面提到,这个命令会报错,revert-buffer 后可用,不知是不是只有我有这个问题

helm-M-x-execute-command: No such node or anchor: Top

-Q 测了没问题:

emacs -nw -Q \
      --eval "(add-to-list 'auto-mode-alist '(\"\\\\.info\\\\(\\\\.gz\\\\)?\\\\'\" . Info-on-current-buffer))" \
      --eval "(find-file \"/usr/share/info/diff.info\")"
2 个赞

原来info file还要“安装”,我说我怎么看不到我放文件夹里的info文件。

不是 C-u 就行么? C-u M-x info

3 个赞

是的。我也是这个用的。

完美,没注意到 info 可以这么用。

补充下,默认快捷键是 c-u c-h i

C-x C-f find-file 难道不是方便吗?

这个例子没问题,但是 plplotdoc.info 就会报错

File mode specification error: (user-error No such node or anchor: Top)

提示找不到 Top 节点,估计是因为 diff.info 安装了,而 plplotdoc.info 没安装。但是 C-u M-x info 没问题。

果然没安装的会有问题。

info 函数摘出来,让 auto mode 传参数就可以了:

emacs -nw -Q \
      --eval "(require 'info)" \
      --eval "(add-to-list
               'auto-mode-alist
               '(\"\\\\.info\\\\(\\\\.gz\\\\)?\\\\'\"
                 . (lambda ()
                     (interactive)
                     (info-setup (buffer-file-name (current-buffer))
                                 (current-buffer)))))" \
      ~/Downloads/plplot-info-5.15.0/plplotdoc.info 
1 个赞