在Emacs中离线查看Common Lisp HyperSpec。

6
我正在使用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。

3
你说你把 HyperSpec 放到了你的 .emacs.d 目录下,那么你的 .emacs.d 是否在系统根目录下,就像你在这里输入的那样,或者你的 setq 路径应该是 ~/.emacs.d/HyperSpec/?或者这只是提问时打错字了? - Orpheus
可能是Is there any common lisp docs like linux man?的重复问题。 - sds
2个回答

14
你可能会喜欢尝试我的 CLHS ASDF 装饰器,它被专门设计为将 CLHS 下载到标准位置(基本上是 quicklisp 目录),然后帮助您设置 emacs 指向它。
只需调用 (ql:quickload "clhs") 并按照指示操作即可。
希望这有所帮助!

编辑:@JigarParekh,我认为你可能读得太快了。

问题的标题是“通过Emacs离线查看Common Lisp HyperSpec”。问题的主体基本上陷入了手动安装CLHS并指向emacs的细节中,并询问如何解决与此相关的一个即时子问题。所选答案解决了用户的即时子问题,但在今天可用的情况下不是最佳选择。

我的答案包括答案的基本部分,即:

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

这将以一种应该在可预见的未来保持可用的方式从Quicklisp下载CLHS,而不管我在第一段中提供的有用但可选的附加参考信息。即使引用链接的内容发生变化,甚至如果它们变成404 Not Found或其他不可用状态,我的答案仍将有用。 (顺便说一句,由于引用页面是公共域网站的一部分,并且在github上可用,因此任何人都可以轻松地镜像它并在此处提供替换链接。但正如我所说,它是可选的附加参考信息。)


1
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。 - Jigar Parekh
在这种情况下,我认为链接非常相关,因为已经解决了OP试图解决的具体问题,并且除了链接之外的答案还包含安装解决方案的相关说明。 - PuercoPop
2
那个答案包含了我所需的一切,而不需要跟随链接,因为执行那个Quicklisp命令下载了该工具并指导我如何使用和自定义它。简单、美观、有效。 - JasonFruit

5
请替换

标签。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接