通过Emacs脱机查看Common Lisp HyperSpec

时间:2014-05-15 10:53:00

标签: common-lisp slime

我使用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,即使我不在线。

2 个答案:

答案 0 :(得分:7)

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

只需调用(ql:quickload "clhs")并按照说明操作即可。

希望这有帮助!


编辑:@JigarParekh我想你可能已经快速浏览了我的答案。

问题的标题是“通过Emacs离线查看Common Lisp HyperSpec”。问题的主体基本上陷入了手动安装CLHS并将emacs指向它的细节,并询问如何解决与此相关的直接子问题。选定的答案解决了用户的直接子问题,但鉴于目前可用的问题,它不是最佳的。

我的回答确实包含了答案的基本部分,即:

  

只需调用(ql:quickload "clhs")并按照说明操作即可。

从Quicklisp下载CLHS的方式应该在可预见的将来仍然可用,无论我在第一段中提供参考的有用但可选的附加信息。即使引用链接的内容发生了变化,或者即使上帝禁止它们变为404 Not Found或其他不可用,我的回答仍然有用。 (我顺便提一下,由于引用的页面是公共域名网站的一部分并且可以在github上找到,所以任何人都可以轻松地镜像它并在此处提供替换链接。但正如我所说,它是可选的附加内容无论如何参考信息。)

答案 1 :(得分:4)

请替换

(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/"))