1

OK ILISPはもう開発されていないことは承知していますが、SLIMEには、オートコンプリート、ユーザー定義関数の強調表示、ユーザー関数の引数リストのヒントなど、ILISPの機能の一部がありません。

この場所でILISPパッケージの新しいリポジトリを見つけました。LinuxでSBCLを使用しています。編集ilcompat.elして追加する必要がありました

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

Emacs24.xでコンパイルできるようにします。大量の警告とともにコンパイルされます。次に、ドキュメントに従って、ファイルINSTALLATIONに追加(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]
4

1 に答える 1

1

問題は、ILISPが古いバッククォート構文を使用していることです。エラーは、ilisp-dia.elのdefdialectの定義に起因するようです。

(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)))
...

関数のようなバッククォートとコンマの使用は、EmacsLispでは非推奨になっています。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))
...

(SLIMEを適切に実行するには、時間をより有効に活用できると思いますが。)

于 2013-03-08T11:24:36.333 に答える