Slime + MIT Scheme + paredit + AC설정(+.emacs 백업)

2012. 8. 2. 17:07

1. Ubuntu Software Center에서 MIT/GNU Scheme을 설치(최신버전이 올라와 있다.)


2. Slime을 다운로드 한다.(/usr/share/에 설치함. 이 과정에서 cvs패키지를 설치하였다.)


3. slime directory(내 경우엔 /usr/share/slime)의 contrib 폴더에 들어가서 swank-mit-scheme.scm을 파일을 열어 내용을 살펴본다. Installation이라고 주석처리되어있는 부분을 따라한다.


4. slime을 설정할 때 (slime-setup '(slime-repl))를 하면 coding system이 이상하다고 안되는데, 이 때는 swank-mit-scheme.scm파일에

(define :coding-system "utf-8-unix")을 추가하고
(swank:connection-info _)를 찾아 :lisp-implementation 위에
:encoding (:coding-systems ("utf-8-unix"))를 추가하면 잘 작동한다.


5. Active Process타령을 없애고 싶으면 아래의 내용을 추가한다.

(defadvice save-buffers-kill-emacs (around no-query-kill-emacs activate)

  "Prevent annoying \"Active processes exist\" query when you quit Emacs."

  (flet ((process-list ())) ad-do-it))


6. slime version check를 없애고 싶으면 slime.el파일을 연 뒤, (defun slime-check-version (version conn)을 찾고 아래의 or프로시져의 첫 predicate로 t를 넣어주면 된다. 그러니까 아래처럼 수정하면 된다.


7. repl에서 lisp-indent-function이 scheme이 아니므로 아래를 .emacs에 추가

(add-hook 'slime-repl-mode-hook

 (defun slime-repl-indent-hook ()

   (set (make-local-variable 'lisp-indent-function)

'scheme-indent-function)))


8. REPL버퍼의 Prompt내용을 바꾸고 싶으면 [slime_directory]/contrib/slime-repl.el 을 연뒤 (prompt (format "%s> " 를 찾아서 그 뒤의 괄호내용 (slime-lisp-package-prompt-string)를 원하는 문자열로 치환하면된다( e.x. "SCHEME" ) 그럼 mit-scheme swank를 쓸때 SCHEME>의 꼴로 나오게된다.


9. "http://cx4a.org/software/auto-complete/manual.html#Installation_Script"를 참고하여 AutoComplete를 설치하고 

(add-to-list 'load-path "~/.emacs.d/")

(require 'auto-complete-config)

(add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict")

(ac-config-default)

(define-key slime-mode-map (kbd "TAB") 'slime-indent-and-complete-symbol)

를 .emacs에 추가.


그렇게 완성된 내 .emacs 내용

emacs/for Scheme