2013-03-07 171 views
1

OK我知道ILISP不再發達,但泥不具備的一些ILISP,即自動完成的功能,突出用戶定義的函數,參數列表提示用戶功能等ILISP安裝麻煩

我在this place找到了一個更新的ILISP軟件包存儲庫。我在linux上使用SBCL。 我不得不編輯ilcompat.el並添加

((string-match "^24" emacs-version) 
     'fsf-23) 

,使其與Emacs的24.x.編譯它確實編譯了一個鉅額的警告。 然後根據INSTALLATION doc,我將(load "ilisp/ilisp.emacs")加入我的~/.emacs文件中。

但是在emacs啓動時,出現錯誤。我不知道emacs足以解決這個問題?

Loading 00debian-vars...done 
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...done 
Loading /etc/emacs/site-start.d/50devhelp.el (source)...done 
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)... 
Loading debian-ispell... 
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done 
Loading debian-ispell...done 
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done 
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done 
Loading /etc/emacs/site-start.d/50gcl.el (source)...done 
Loading /etc/emacs/site-start.d/50ilisp.el (source)... 
Loading /etc/ilisp/ilisp.el (source)... 
Loading /etc/ilisp/ilisp-keybindings.el (source)...done 
Loading /etc/ilisp/ilisp.el (source)...done 
Loading /etc/emacs/site-start.d/50ilisp.el (source)...done 
Loading /etc/emacs/site-start.d/50slime.el (source)... 
Loading /usr/share/emacs24/site-lisp/slime/slime-autoloads.elc...done 
Loading /etc/emacs/site-start.d/50slime.el (source)...done 
Loading /home/robin/.emacs.d/paredit.el (source)...done 
Loading /home/robin/ilisp-master/ilisp.emacs... 
Loading ilfsf23...done 
Loading /home/robin/ilisp-master/ilisp.emacs...done 
For information about GNU Emacs and the GNU system, type C-h C-a. 
Loading ilcompat... 
Loading ilfsf23...done 
Loading ilcompat...done 
Loading comint-ipc...done 
Loading extra/cltl2...done 
Loading ilisp-def...done 
Loading ilisp-sym...done 
Loading ilisp-inp...done 
Loading ilisp-ind...done 
Loading ilisp-prc...done 
Loading ilisp-val...done 
Loading ilisp-out...done 
Loading ilisp-mov...done 
Loading ilisp-key...done 
Loading ilisp-prn...done 
Loading ilisp-low...done 
Loading ilisp-doc...done 
Loading ilisp-ext...done 
Loading ilisp-mod...done 
Loading ilisp-dia...done 
Loading ilisp-cmt...done 
Loading ilisp-rng...done 
Loading ilisp-hnd...done 
Loading ilisp-utl...done 
Loading ilisp-cmp...done 
Loading ilisp-kil...done 
Loading ilisp-snd...done 
Loading ilisp-xfr...done 
Loading ilisp-hi...done 
Loading ilisp-aut...done 
Loading /home/robin/ilisp-master/ilisp-cl.el (source)... 
File mode specification error: (invalid-function (\` (progn (defvar ((\, hook)) nil ((\, (format "*Inferior %s hook." full-name)))) (defvar ((\, program)) nil ((\, (format "*Inferior %s default program." full-name)))) (defun ((\, setup)) (buffer) ((\, (format "Set up for interacting with %s." full-name))) ((\, (read (format "(setup-%s buffer)" parent)))) ((\,@ body)) (setq ilisp-program (or ((\, program)) ilisp-program) ilisp-dialect (cons (quote ((\, dialect))) ilisp-dialect)) (run-hooks (quote ((\, (read (format "%s-hook" dialect))))))) (defun ((\, dialect)) (&optional buffer program) ((\, (format "Create an inferior %s. With prefix, prompt for buffer and program." full-name))) (interactive (list nil nil)) (ilisp-start-dialect (or buffer ((\, dialects))) program (quote ((\, setup)))) (setq ((\, program)) ilisp-program)) (lisp-add-dialect ((\, dialects)))))) 
Loading vc-git...done 
byte-code: Beginning of buffer [4 times] 
+3

泥沒有什麼?你確定你已經閱讀了SLIME手冊嗎? http://common-lisp.net/project/slime/doc/html/ – 2013-03-07 20:35:57

+0

@Rainer M-tab不會提取用戶定義的函數。並且建議不會內聯顯示,而是顯示在單獨的緩衝區中。 – 2013-03-07 21:08:50

+0

這是什麼意思,它'沒有拿起用戶定義的功能'?當然,它會找到用戶定義的功能來完成。 – 2013-03-07 22:36:44

回答

1

問題是ILISP使用過時的反引號語法。錯誤似乎來自the definition of defdialect in ilisp-dia.el

(defmacro defdialect (dialect full-name parent &rest body) 
    "Define a new ILISP dialect. 
DIALECT is the name of the function to invoke the inferior LISP. The 
hook for that LISP will be called DIALECT-hook. The default program 
will be DIALECT-program. FULL-NAME is a string that describes the 
inferior LISP. PARENT is the name of the parent dialect." 

    (let ((setup (read (format "setup-%s" dialect))) 
     (hook (read (format "%s-hook" dialect))) 
     (program (read (format "%s-program" dialect))) 
     (dialects (format "%s" dialect))) 
    (` 
    (progn 
     (defvar (, hook) nil (, (format "*Inferior %s hook." full-name))) 
... 

反引號和逗號的功能,就像使用情況的Emacs Lisp已經過時了。從Emacs的24.1 NEWS文件:

**的「舊式」反引號,過時10年以上的支持,已被 進一步降低。現在沒有空格的反引號是 總是被視爲「新式」反引號。請從您的代碼中刪除所有 「舊式」反引號。如果您的代碼使用了Elisp手冊中記錄的反向引用 ,並且在沒有警告的情況下編譯,那麼在這方面您沒有任何關係。不遵循 適當慣例的代碼可能無法編譯。

麻煩最常見的原因似乎是一箇舊式反引號 後跟一個換行符。

所以這段代碼也應改寫爲這樣的:

(defmacro defdialect (dialect full-name parent &rest body) 
    (let ((setup (read (format "setup-%s" dialect))) 
     (hook (read (format "%s-hook" dialect))) 
     (program (read (format "%s-program" dialect))) 
     (dialects (format "%s" dialect))) 
    `(progn 
     (defvar ,hook nil ,(format "*Inferior %s hook." full-name)) 
... 

(雖然我懷疑這會是一個更好的利用時間去泥運行正常)

+0

謝謝,我想我會嘗試SLIME和ILISP。 – 2013-03-08 16:26:18