通过Emacs离线查看Common Lisp HyperSpec



我使用Emacs作为我的Lisp环境,并且希望能够脱机访问Common Lisp HyperSpec。我下载了它,并把文件夹放到了我的emacs.d目录中。然后,我将以下代码放入.emacs:

(global-set-key [(f2)] 'slime-hyperspec-lookup) 
(setq common-lisp-hyperspec-root "/.emacs.d/HyperSpec/")

然而,每次我试图搜索它的东西,我的查询最终是畸形的。具体来说,假设我搜索dotimes;被转储到我的浏览器中的是file:///.emacs.d/HyperSpec/Body/m_dolist.htm,它与HyperSpec文件夹中的目录结构不匹配,导致查询失败。HyperSpec查找的格式是适合web版本的(在这种情况下,它工作得很好)。

有什么办法可以解决这个问题,如果有,怎么做?我只是想在我不在线的时候也能查到HyperSpec

您可能想尝试一下我的CLHS ASDF包装器,它专门设计用于将CLHS下载到标准位置(基本上是quicklisp目录),然后帮助您设置emacs以指向它。

只需调用(ql:quickload "clhs")并按照说明执行。

希望这对你有帮助!


我觉得你可能浏览我的答案有点太快了。

问题的标题是"通过Emacs离线查看Common Lisp HyperSpec"。问题的主体基本上陷入了手动安装CLHS并将emacs指向它的细节中,并询问如何解决与之相关的直接子问题。选择的答案解决了用户当前的子问题,但考虑到当前可用的答案,它不是最优的。

我的答案确实包含了答案的重要部分,即:

只需调用(ql:quickload "clhs")并按照说明执行。

这将从Quicklisp下载CLHS,无论我在第一段中包含的有用但可选的附加信息如何,这种方式在可预见的将来都是可用的。我的答案仍然有用,即使参考链接的内容改变,即使,上帝保佑,他们变成404未找到或其他不可用。(我注意到,由于引用的页面是公共领域网站的一部分,并且可以在github上获得,任何人都可以很容易地镜像它,并在这里提供一个替代链接。但正如我所说,它是可选的附加参考信息。)

请替换

(setq common-lisp-hyperspec-root "/.emacs.d/HyperSpec/")

(setq common-lisp-hyperspec-root "~/.emacs.d/HyperSpec/")

或者

(setq common-lisp-hyperspec-root (expand-file-name "~/.emacs.d/HyperSpec/"))

最新更新