Common Lisp

Emacsでカーソルポイントの前にあるS式をSLIME上のREPLに送るための設定

;;; Common lisp
(setq inferior-lisp-program "d:/bin/ccl/wx86cl64.exe")
(push (expand-file-name "~/script/elisp/site-lisp/slime-2012-09-26") load-path)
(require 'slime)
;(slime-setup '(slime-repl)) ; contribのREPLのみ設定
(slime-setup '(slime-fancy)) ; 大抵はslime-fancyを設定すれば十分
;(slime-setup '(slime-fancy slime-banner)) ; バナーもつける

;;; ポイントの前にあるS式をREPLに送る
(defun slime-send-sexp-to-repl (arg)
  (interactive "P")
  (let ((sexp (replace-regexp-in-string "^[\t\n ]+\\|[\t\n ]+$" "" 
					(slime-last-expression))))
    (set-buffer (slime-output-buffer))
    (unless (eq (current-buffer) (window-buffer))
      (pop-to-buffer (current-buffer) t))
    (goto-char (point-max))
    (insert sexp)
    (if arg (progn
	      (slime-repl-return)
	      (other-window 1)))))

(define-key lisp-mode-map "\C-ce" 
  '(lambda () (interactive) (slime-send-sexp-to-repl t)))