我使用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,即使我不在线。
答案 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/"))