我正在使用Emacs作为我的Lisp环境,并希望能够离线访问Common Lisp HyperSpec.我下载了它,并将文件夹放入我的emacs.d
目录.然后我将以下代码放入我的.emacs
:
(global-set-key [(f2)] 'slime-hyperspec-lookup)
(setq common-lisp-hyperspec-root "/.emacs.d/HyperSpec/")
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试在其中搜索某些内容时,我的查询最终都会出现格式错误.具体来说,假设我搜索dotimes
; 被转储到我的浏览器的是file:///.emacs.d/HyperSpec/Body/m_dolist.htm
,它与HyperSpec
文件夹中的目录结构不匹配,导致查询失败.相反,HyperSpec查找格式适合Web版本(在这种情况下,它可以正常工作).
我有什么方法可以解决这个问题,如果是这样,怎么办?我基本上只是希望能够在我不在线时查找HyperSpec.
小智 8
你可能会想试试我的CLHS ASDF的包装,这是专门设计给CLHS下载到标准位置(基本quicklisp目录),然后帮助您设置的emacs指向它.
只需调用(ql:quickload "clhs")
并按照说明操作即可.
希望这可以帮助!
编辑:@JigarParekh我想你可能已经快速浏览了我的答案.
问题的标题是"通过Emacs离线查看Common Lisp HyperSpec".问题的主体基本上陷入了手动安装CLHS并将emacs指向它的细节,并询问如何解决与此相关的直接子问题.选定的答案解决了用户的直接子问题,但鉴于目前可用的问题,它不是最佳的.
我的答案确实包括答案的基本部分,即:
只需调用
(ql:quickload "clhs")
并按照说明操作即可.
这将以可预见的未来可用的方式从Quicklisp下载CLHS,无论我在第一段中包含哪些有用但可选的附加信息以供参考.即使引用链接的内容发生了变化,或者即使上帝禁止它们变为404 Not Found或其他不可用,我的回答仍然有用.(我顺便提一下,由于引用的页面是公共域名网站的一部分并且可以在github上获得,所以任何人都可以轻松地镜像它并在此处提供替换链接.但正如我所说,它是可选的附加参考信息无论如何.)
请更换
(setq common-lisp-hyperspec-root "/.emacs.d/HyperSpec/")
Run Code Online (Sandbox Code Playgroud)
和
(setq common-lisp-hyperspec-root "~/.emacs.d/HyperSpec/")
Run Code Online (Sandbox Code Playgroud)
甚至
(setq common-lisp-hyperspec-root (expand-file-name "~/.emacs.d/HyperSpec/"))
Run Code Online (Sandbox Code Playgroud)