emacsでスライムを設定する


2

私はスライムをemacs用に設定する過程にあります。これまでのところ、私は次のような一般的なlispのための基本的な機能性について読みました。 C-c C-q これはコマンドを起動します slime-close-parens-at-point これは、マウスの位置に適切な数の括弧を配置することです。かっこいいと思われる別のコマンドが呼び出されました C-c C-c そしてそれはあなたが編集しているコードをバッファの中でREPLに渡し、それを「コンパイル」します。

なぜこれらのコマンドが私には効かないのですか?

とにかく、私はダウンロードしました slime 経由 M-x list-packages そしてこの機能を持っていないようです( C-h w そして、これらのコマンドのいずれかが私にこれらのコマンドが存在していることに注意してくださいしないことを教えてくれます。だから、私はこのような他のスライムエクステンションの束を見た slime-repl', 'slime-fuzzy' and 'hippie-expand-slime'. So I again used M-x list-packages `とそれらをダウンロードしました。

それでも私はこれらのコマンドを持っていませんでした。スライムに関連する私のemacsファイルの内容は次のとおりです。

;;;Common Lisp and Slime                                                                                                                                
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-20130626.1151")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-repl-201000404")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/hippie-expand-slime-20130226.1656")
(add-to-list 'load-path "/home/s2s2/.emacs.d/elpa/slime-fuzzy-20100404")

(require 'slime)
(setq slime-lisp-implementations
     `((sbcl ("/usr/bin/sbcl"))
       (ecl ("/usr/bin/ecl"))
       (clisp ("/usr/bin/clisp" "-q -I"))))

(require 'slime-repl)
(require 'slime-fuzzy)
(require 'hippie-expand-slime)

実行したとき M-x slime 次のようなメッセージが表示されます。 inferior-lisp 私が共通のlispコードを実行できるバッファ slime-repl 私はそれを必要としたので?):

STYLE-WARNING: redefining EMACS-INSPECT (#<BUILT-IN-CLASS T>) in DEFMETHOD
STYLE-WARNING:
   Implicitly creating new generic function STREAM-READ-CHAR-WILL-HANG-P.
WARNING: These Swank interfaces are unimplemented:
 (DISASSEMBLE-FRAME SLDB-BREAK-AT-START SLDB-BREAK-ON-RETURN)
;; Swank started at port: 46533.

それから slime-error 次の内容でバッファが作成されます。

Invalid protocol message:
Symbol "CREATE-REPL" not found in the SWANK package.

  Line: 1, Column: 28, File-Position: 28

  Stream: #<SB-IMPL::STRING-INPUT-STREAM {10056B9C33}>

(:emacs-rex (swank:create-repl nil) "COMMON-LISP-USER" t 5)
  1. emacsファイルを修正してそれらのコマンドの機能を提供するにはどうすればいいですか。私のemacsファイルに必要なファイルをロードしていませんか?追加のパッケージをインストールする必要がありますか?

あなたがより多くの情報を必要とするならば、私に知らせてください!すべての助けは大歓迎です!

回答:


0

最初:あなたが行ったやり方で、あなたのロードパスにELPAディレクトリを手動で追加することは、本当にお勧めできません。もしあなたがこれらのパッケージをELPAを通して更新するなら、新しいバージョンは異なるディレクトリにあるでしょう、そして代わりにそれらのバージョンをロードするためにあなたのinitコードのこの部分を再訪問しなければなりません。可能な限り自動化することが最善の原則では、デフォルトであるinitの後に初期化されるのを待つのではなく、パッケージマネージャを明示的に初期化する方が賢明です。 ;見る この答え それがどのように行われたのか。

さて、それから:Slime用の初期化コードのどこに私はこのスタンザの初期化コードを手に入れたのかわからないが、それはまだ私を失敗させたことがない:

(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp/slime"))
(require 'slime)
(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(setq inferior-lisp-program "sbcl")
(slime-setup '(slime-fancy slime-asdf))

とは言っても、私はSBCLのみを使用しています。複数の実装を使用しているようです。おそらくあなたのケースに合わせてこのinitコードを修正する最良の方法は次のようなものでしょう:

(require 'slime)
(add-hook 'lisp-mode-hook (lambda () (slime-mode t)))
(add-hook 'inferior-lisp-mode-hook (lambda () (inferior-slime-mode t)))
(setq slime-lisp-implementations
  `((sbcl ("/usr/bin/sbcl"))
   (ecl ("/usr/bin/ecl"))
   (clisp ("/usr/bin/clisp" "-q -I"))))
(slime-setup '(slime-fancy slime-asdf hippie-expand-slime))

以前のコメントに従ってパッケージマネージャを既に初期化しているので、明示的にロードパスに何かを追加する必要はありません。いくつかのLispを使っているので、 (setq inferior-lisp-program "...") 同様に。

これで、 M-x slime SBCLを起動してREPLを送信します(&amp; C)。 M-- M-x slime どのLisp実装を呼び出すべきかを尋ねるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.