2013-07-08 65 views
2

有了這個最小的init文件:如何Hyperspec文件連接到Emacs的泥在MS Windows

(setq package-load-list '((slime t))) 
(setq inferior-lisp-program "clisp") 
(package-initialize) 
(setq package-enable-at-startup nil) 
(require 'slime) 
(slime-setup) 
(slime) 
(find-file "~/t/del.lisp") 

一切似乎都工作,如粘液-EVAL-defun定義和煤泥完整的符號,除了仰視文檔。 M-X煤泥描述符號RET打印RET導致此錯誤:

CLHS-ROOT: variable *CLHS-ROOT-DEFAULT* has no value 

什麼我需要在我的init文件添加,使其工作?

我也嘗試下載hyperspec tar文件,並將其解壓到一個目錄下,這樣的代碼:

(setq package-load-list '((slime t))) 
(setq inferior-lisp-program "clisp" 
     common-lisp-hyperspec-root "c:/run/HyperSpec/" 
     common-lisp-hyperspec-symbol-table "c:/run/HyperSpec/Data/Map_Sym.txt") 
(package-initialize) 
(setq package-enable-at-startup nil) 
(require 'slime) 
(slime-setup) 
(slime) 
(find-file "~/t/del.lisp") 

,不能正常工作。我不知道該錯誤是在該init文件還是在我正在使用的SLIME版本中,因爲這是我第一次使用SLIME。

版本:

  • 微軟Windows 7
  • 的Emacs版本24.3.1(可能是最新的穩定)
  • 泥版20130626.1151(從MELPA最新)(一位來自果醬說,它不能編譯零我不知道這意味着什麼,因此我使用一個從MELPA代替)
  • GNU CLISP 2.49(最新的穩定)

UPDATE

C-c C-d f RET print RET工作正常。這是綁定到slime-describe-function,這是沒有記錄,並沒有在SLIME菜單中列出。還有slime-documentation-lookup,它綁定到C-c C-d C-d,它可以在瀏覽器中打開變量(不僅僅是函數)的文檔,也可以工作。看起來只有`slime-describe-symbol不起作用。

回答

8

我沒有在Windows上完成它,但如果我是你,我會嘗試使用Quicklisp完成此操作:(ql:quickload "clhs")並按照打印的指示操作。

我也會通過(ql:quickload "quicklisp-slime-helper")從Quicklisp獲得SLIME,但是如果你的粘液工作正常,沒有真正的需要。

0

假設泥是從emacs的包檔案(優選​​MELPA)安裝(這GNU CLISP安裝),這裏是從How to install Common Lisp and SLIME on MS Windows相關部分的組合:

假設註釋出任何泥定製後從頭開始代碼你已經有了,通過將下面的代碼應該package-initialize後評估你的init文件啓動:

(setq inferior-lisp-program "clisp") 
(setq slime-auto-connect 'ask) 

(defun my-slime-setup() 
    (require 'slime) 
    (slime-setup)) 
(defvar my--slime-setup-done nil) 
(defun my-slime-setup-once() 
    (unless my--slime-setup-done 
    (my-slime-setup) 
    (setq my--slime-setup-done t))) 
(defadvice lisp-mode (before my-slime-setup-once activate) 
    (my-slime-setup-once)) 

,做什麼是定義我,煤泥,建立和確保函數只運行一次,如果你是那天使用SLIME。 my-slime-setup也是一個可以添加自己的SLIME自定義代碼的容器。

我們所下載的文件連接到泥,解壓下載的存檔,您將獲得與名稱Hyperspec一個文件夾,然後在該文件夾移動到Emacs的bin目錄,或它的父目錄,或者其祖父母目錄,把Emacs init文件中的以下代碼。

(defun my-hyperspec-setup() 
    (let ((dir (locate-dominating-file invocation-directory "HyperSpec/"))) 
    (if dir 
     (progn 
      (setq common-lisp-hyperspec-root (expand-file-name "HyperSpec/" dir))) 
     (warn "No HyperSpec directory found")))) 

,並添加my-hyperspec-setupmy-slime-setup這樣的:

(defun my-slime-setup() 
    (my-hyperspec-setup) 
    (require 'slime) 
    (slime-setup)) 

,並重新啓動的Emacs。

現在,當你在lisp緩衝區中執行M-x slime-describe-symbol RET print RET時,它應該在另一個緩衝區中顯示PRINT的描述。

我應該承認,我從我自己的文章中採購,並且在大約8個月後回答我自己的問題。答案是用最新的來自MELPA的SLIME和一個香草GNU Emacs進行測試。