根据互联网上的指南,我们可以通过键入Cc Cd h在HyperSpec中搜索emacs中的“格式”符号,但是,我只是不能让它工作,emacs只是提示没有完成符号。有人可以应付吗?提前谢谢!
答案 0 :(得分:4)
您实际使用的是Slime REPL模式吗?有时候,在没有任何配置的情况下启动Slime时,你没有得到REPL模式,而是你将坐在*inferior-lisp*
缓冲区中。
首先,检查缓冲区的标题是什么。如果它是*inferior-lisp*
,则不是正确的。它应该是*slime-repl sbcl*
(其中sbcl指的是你正在使用的CL实现)。
如果是这种情况,那么您需要确保在Emacs init文件中启用slime-fancy。这就是我所拥有的:
(defun init-slime-configuration ()
(slime-setup '(slime-fancy slime-fuzzy))
(setq slime-load-failed-fasl 'never)
(define-key slime-repl-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol)
(define-key slime-mode-map (kbd "C-<tab>") 'slime-fuzzy-complete-symbol))
(add-hook 'slime-load-hook 'init-slime-configuration)
这也允许我使用C-TAB进行模糊扩展。
答案 1 :(得分:0)
从使用Quicklisp(版本2.9)安装的SLIME版本切换到从MELPA安装的版本(版本20141010.1357,作为ac-slime的依赖项)后,我遇到了这个问题。
使用Quicklisp的SLIME可以使用我的本地HyperSpec副本,使用以下设置:
(require 'slime-autoloads)
(add-to-list 'slime-contribs 'slime-fancy)
(setq slime-lisp-implementations
'((ccl ("ccl"))
(clisp ("clisp"))
(cmucl ("cmucl"))
(ecl ("ecl"))
(sbcl ("sbcl"))))
(setq slime-default-lisp 'sbcl)
(setq common-lisp-hyperspec-root "file:/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt")
然后我完全删除并重新安装了Quicklisp(无需重新安装SLIME!),然后使用Emacs软件包管理器从MELPA安装了ac-slime。
偶然地,我碰巧注意到当我尝试在HyperSpec中查找文档时,Emacs打开了一个隐藏缓冲区,其中包含一个名为&#34; Map_Sym.txt&#34;的空文件。在它。
使用C-h v buffer-file-name [RET]
查看此文件的完整路径名,显示它已设置为&#34; / home / miki / file:/usr/share/doc/HyperSpec/Data/Map_Sym.txt" ;
作为一项实验,我尝试删除&#34;文件:/&#34;从我设置的最后两行开始,将它们读成:
(setq common-lisp-hyperspec-root "/usr/share/doc/HyperSpec/")
(setq common-lisp-hyperspec-symbol-table "/usr/share/doc/HyperSpec/Data/Map_Sym.txt")
它似乎解决了这个问题。为什么这样有效,我不知道(它与文档不同)。可能是一个错误或无证的变更?