common-lisp                
            SLIMEを使って作業する
        
        
            
    サーチ…
インストール
Emacs MELPAリポジトリの最新のSLIMEを使うのが最善です。パッケージは少し不安定かもしれませんが、最新の機能があります。
PortaleとマルチプラットフォームのEmacs、Slime、Quicklisp、SBCL、Git
Slime、SBCL、Quicklisp、Git: Portacleで既に設定されているEmacs25のポータブルおよびマルチプラットフォーム版をダウンロードできます。それは行くためのすばやく簡単な方法です。自分ですべてをインストールする方法を知りたい場合は、をお読みください。
手動インストール
 GNU Emacs(> = 24.5)の初期化ファイル( ~/.emacsまたは~/.emacs.d/init.el )に次の行を追加します: 
;; Use Emacs package system
(require 'package)
;; Add MELPA repository
(add-to-list 'package-archives
             '("melpa" . "http://melpa.milkbox.net/packages/") t)
;; Reload package list
(package-initialize)
(unless package-archive-contents
  (package-refresh-contents))
;; List of packages to install:
(setq package-list
      '(magit                    ; git interface (OPTIONAL)
        auto-complete            ; auto complete (RECOMMENDED)
        auto-complete-pcmp       ; programmable completion
        idle-highlight-mode      ; highlight words in programming buffer (OPTIONAL)
        rainbow-delimiters       ; highlight parenthesis (OPTIONAL)
        ac-slime                 ; auto-complete for SLIME
        slime                    ; SLIME itself
        eval-sexp-fu             ; Highlight evaluated form (OPTIONAL)
        smartparens              ; Help with many parentheses (OPTIONAL)
        ))
;; Install if are not installed
(dolist (package package-list)
  (unless (package-installed-p package)
    (package-install package)))
;; Parenthesis - OPTIONAL but recommended
(show-paren-mode t)
(require 'smartparens-config)
(sp-use-paredit-bindings)
(sp-pair "(" ")" :wrap "M-(")
(define-key smartparens-mode-map (kbd "C-<right>") 'sp-forward-slurp-sexp)
(define-key smartparens-mode-map (kbd "C-<left>") 'sp-backward-slurp-sexp)
(define-key smartparens-mode-map (kbd "C-S-<right>") 'sp-forward-barf-sexp)
(define-key smartparens-mode-map (kbd "C-S-<left>") 'sp-backward-barf-sexp)
(define-key smartparens-mode-map (kbd "C-)") 'sp-forward-slurp-sexp)
(define-key smartparens-mode-map (kbd "C-(") 'sp-backward-slurp-sexp)
(define-key smartparens-mode-map (kbd "C-}") 'sp-forward-barf-sexp)
(define-key smartparens-mode-map (kbd "C-{") 'sp-backward-barf-sexp)
(sp-pair "(" ")" :wrap "M-(")
(sp-pair "[" "]" :wrap "M-[")
(sp-pair "{" "}" :wrap "M-{")
;; MAIN Slime setup
;; Choose lisp implementation:
;; The first option uses roswell with default sbcl
;; the second option - uses ccl directly
(setq slime-lisp-implementations
      '((roswell ("ros" "-L" "sbcl-bin" "run"))
        (ccl ("ccl64"
              "-K" "utf-8"))))
;; Other settings...
SLIME自体は問題ありませんが、 Quicklispパッケージマネージャーでうまく動作します。 Quicklispをインストールするには、ウェブサイトの指示に従ってください( roswellを使用する場合は、roswellの指示に従ってください)。あなたのリスプインポックにインストールされると、
(ql:quickload :quicklisp-slime-helper)
Emacsのinitファイルに次の行を追加します:
;; Find where quicklisp is installed to
;; Add your own location if quicklisp is installed somewhere else
(defvar quicklisp-directories
  '("~/.roswell/lisp/quicklisp/"           ;; default roswell location for quicklisp
    "~/quicklisp/")                        ;; default quicklisp location
  "Possible locations of QUICKLISP")
;; Load slime-helper
(let ((continue-p t)
      (dirs quicklisp-directories))
  (while continue-p
    (cond ((null dirs) (message "Cannot find slime-helper.el"))
          ((file-directory-p (expand-file-name (car dirs)))
           (message "Loading slime-helper.el from %s" (car dirs))
           (load (expand-file-name "slime-helper.el" (car dirs)))
           (setq continue-p nil))
          (t (setq dirs (cdr dirs))))))
;; Autocomplete in SLIME
(require 'slime-autoloads)
(slime-setup '(slime-fancy))
;; (require 'ac-slime)
 (add-hook 'slime-mode-hook 'set-up-slime-ac)
 (add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
 (eval-after-load "auto-complete"
   '(add-to-list 'ac-modes 'slime-repl-mode))
(eval-after-load "auto-complete"
  '(add-to-list 'ac-modes 'slime-repl-mode))
;; Hooks
(add-hook 'lisp-mode-hook (lambda ()
                            (rainbow-delimiters-mode t)
                            (smartparens-strict-mode t)
                            (idle-highlight-mode t)
                            (auto-complete-mode)))
(add-hook 'slime-mode-hook (lambda ()
                             (set-up-slime-ac)
                             (auto-complete-mode)))
(add-hook 'slime-repl-mode-hook (lambda ()
                                  (rainbow-delimiters-mode t)
                                  (smartparens-strict-mode t)
                                  (set-up-slime-ac)
                                  (auto-complete-mode)))
再起動後、GNU Emacsは必要なパッケージをすべてインストールして設定します。
SLIMEの開始と終了、特殊(カンマ)REPLコマンド
 Emacsでは、 Mx slimeはデフォルトの(最初の)Common Lisp実装でMx slimeを開始します。複数の実装が(可変slime-lisp-implementationsを介して)提供されている場合、ミニバッファで利用可能な実装の選択肢を提供するM-- Mx slimeを介して他の実装にアクセスすることができます。 
 Mx slimeは次のように見えるREPLバッファを開きます: 
; SLIME 2016-04-19
CL-USER> 
 SLIME REPLバッファはいくつかの特別なコマンドを受け入れます。それらのすべてがで始まり, 。一度,タイプされる、オプションのリストがミニバッファに表示されます。彼らは以下を含む: 
-  ,quit
-  ,restart-inferior-lisp
-  ,pwd- Lispが動作している場所から現在のディレクトリを表示する
-  ,cd- 現在のディレクトリを変更する
REPLを使用する
CL-USER> (+ 2 3)
5
CL-USER> (sin 1.5)
0.997495
CL-USER> (mapcar (lambda (x) (+ x 2)) '(1 2 3))
(3 4 5)
評価の後に出力される結果は文字列だけではなく、その上にあるフルオンのLispオブジェクトがあり、右クリックしてInspectを選択することによって検査することができます。
複数行入力も可能です: Cjを使って改行します。 Enter押すとEnterしたフォームが評価され、フォームが終了していない場合はエラーが発生する可能性があります。 
CL-USER> (mapcar (lambda (x y)
                   (declare (ignore y))
                   (* x 2))
                 '(1 2 3)
                 '(:a :b :c))
(2 4 6)
エラー処理
評価でエラーが発生した場合:
CL-USER> (/ 3 0)
これはデバッガのバッファを(SBCLのlispで)次の内容でポップアップ表示します:
arithmetic error DIVISION-BY-ZERO signalled
Operation was /, operands (3 0).
   [Condition of type DIVISION-BY-ZERO]
Restarts:
 0: [RETRY] Retry SLIME REPL evaluation request.
 1: [*ABORT] Return to SLIME's top level.
 2: [ABORT] abort thread (#<THREAD "repl-thread" RUNNING {1004FA8033}>)
Backtrace:
  0: (SB-KERNEL::INTEGER-/-INTEGER 3 0)
  1: (/ 3 0)
  2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (/ 3 0) #<NULL-LEXENV>)
  3: (EVAL (/ 3 0))
  4: (SWANK::EVAL-REGION "(/ 3 0) ..)
  5: ((LAMBDA NIL :IN SWANK-REPL::REPL-EVAL))
--- more ---
カーソルを下に移動すると--- more ---バックトレースがさらに広がります。 
バックトレースの各行にEnterを押すと、特定のコールに関する情報が表示されます(利用可能な場合)。 
再起動の行でEnterを押すと、特定の再起動が呼び出されます。あるいは、再起動は数で選択することができる0 、 1又は2 (緩衝液中のプレス対応するキーどこでも)。デフォルトの再起動は星印でマークされ、 qキー(「終了」)を押すと呼び出すことができます。 qを押すとデバッガが終了し、REPLで次のように表示されます
; Evaluation aborted on #<DIVISION-BY-ZERO {10064CCE43}>.
CL-USER> 
最後に、まれにLispデバッガで処理できないエラーが発生する可能性があります。その場合、Lispデバッガは低レベルデバッガに落ちるか、異常終了します。この種のエラーの原因を調べるには、 *inferior-lisp* bufferに切り替えます。 
SSHトンネルを介したSWANKサーバの設定。
-  Common Lisp実装をサーバにインストールします。 (例えば、 sbcl、clispなど...)
- サーバーにquicklispをインストールします。
-  SWANKに(ql:quickload :swank)ql(ql:quickload :swank)ロードします。
-  (swank:create-server)サーバを起動します。デフォルトのポートは4005です。
-  [あなたのローカルマシンで] ssh -L4005:127.0.0.1:4005 [remote machine]SSHトンネルを作成するssh -L4005:127.0.0.1:4005 [remote machine]
-  Mx slime-connect使用して、実行中のリモートスワンクサーバーにMx slime-connectます。ホストは127.0.0.1とポート4005なければなりません。