윈도우즈에서 Common Lisp 개발 환경 갖추기

사용 소프트웨어: Emacs, CLISP, SLIME, HyperSpec

1. Emacs: 강력한 에디터.
Nqmacs 버전으로 Emacs 22.1이 될 개발버전을 컴파일한 Win32 배포본을 설치합니다.
http://sourceforge.net/project/showfiles.php?group_id=92168 에서
emacs-22.0.50.1-20050626-w32.zip를 다운로드 하여 적당한 디렉토리에 압축풀면 됩니다.
저는 C:\Program Files\emacs에 설치했습니다.
실행은 bin 디렉토리 밑에 runemacs를 실행하면 되고, 필요할 경우 바탕화면이나 시작 메뉴에 바로가기를 만들어주면 됩니다.

2. Common LISP: Emacs는 LISP로 짜여졌지만, Common LISP(이하 CL)를 사용하기 위해서는 따로 CL을 설치해야합니다. 공개 CL 중에 CLISP, SBCL을 많이 쓰는거 같은데, 여기서는 CLISP를 설치합니다.
https://sourceforge.net/project/showfiles.php?group_id=1355
에서
clisp-2.41-win32-mingw-without-readline.zip를 다운로드 하여 C:\Program Files에 압축을 풀었으며, 설치는 따로 필요없고 Emacs 설정에서 LISP 프로그램만 설정해주면 됩니다. 아래 .emacs에 대해서 설명 참조하세요.

3. SLIME: Emacs 내에서 CL 개발 환경을 만들어주는 플러그인. CLISP, SBCL등 대부분의 CL을 지원합니다.
자주 업데이트 되기 때문에 CVS 버전을 사용할 것을 권장하고 있습니다. 사용중에도 안되는게 있으면 CVS업데이트치라고 하더라고요.
http://common-lisp.net/project/slime/ 에서 설치 관련 정보를 찾을수 있습니다.

CVSROOT는  :pserver:anonymous@common-lisp.net:/project/slime/cvsroot
암호는 anonymous
모듈은 slime

emacs/site-lisp에서 체크아웃하면 됩니다. 저는 TortoiseCVS를 사용하여 체크아웃했습니다.

4. HyperSpec: Common Lisp HyperSpec (CLHS)는 CL 프로그램을 작성하면서 API를 조회할수 있는 HTML 문서입니다. clisp가 설치된 doc 디렉토리 밑에 설치하면 됩니다.
http://www.lispworks.com/documentation/HyperSpec/ 에서 밑에 보시면 download가 있습니다. tar.gz 파일인데 받아서 적당히 풀어주면 됩니다. 디렉토리 구조는 아래처럼 되면 됩니다.

clisp-2.41
  doc
   HyperSpec
       Body
       Data
       Front
       Graphics
       Issues

일단 이렇게 하면 설치는 끝났고 설정만 남았습니다. 설정은 c:\.emacs 파일을 만들어주면 됩니다.

제 .emacs 파일을 공개합니다 🙂 C:\.emacs 에 저장해주면 됩니다.

먼저 한글 관련 설정 (전 세벌식 사용자!):

;; 한글환경 설정
(set-language-environment “UTF-8”)
(setq default-input-method “korean-hangul3”)
(set-input-method “korean-hangul3”)
(prefer-coding-system ‘utf-8-dos)
(utf-translate-cjk-load-tables)

;; 글로벌 폰트락 설정
(global-font-lock-mode 1 t)

;; 한영전환 shift-space로 하기
(global-set-key [?\S- ] ‘toggle-input-method)

shift-space로 한영 전환하면 한글조합하는게 이맥스창 내에서 보이고, 윈도우즈 한/영키를 이용하면 조합할때 다른곳에 보이기 때문에 불편합니다.

리스프 설정:

;; inferior lisp
(setq inferior-lisp-program “c:/Progra~1/clisp-2.41/base/lisp.exe -M c:/Progra~1/clisp-2.41/base/lispinit.mem”
     lisp-indent-function ‘common-lisp-indent-function
     slime-complete-symbol-function ‘slime-fuzzy-complete-symbol
     slime-startup-animation nil)

;; slime
(add-to-list ‘load-path “c:/Progra~1/emacs/site-lisp/slime”)
(require ‘slime)
(slime-setup)

(setq common-lisp-hyperspec-root “c:/Progra~1/clisp-2.41/doc/HyperSpec/”)
;(setq common-lisp-hyperspec-root “http://www.lispworks.com/documentation/HyperSpec/“)

inferior-lisp라고 되어있는건 emacs lisp가 더 좋다는 의미에서 나온게 아닐까 생각이 드네요. 지금 찾아보니 emacs 밑에 붙는다고 해서 inferior인거 같네요… hyperspec은 LISP 온라인 문서입니다. LISP 배우실려면 로컬에 설치하는것이 좋죠.

기타 설정:

;(setq visible-bell t)
;(setq sound-alist ‘(t 1))
;(setq bell-volume 10)

(global-set-key “%” ‘match-paren)
        
(defun match-paren (arg)
  “Go to the matching paren if on a paren; otherwise insert %.”
  (interactive “p”)
  (cond ((looking-at “\\s\(“) (forward-list 1) (backward-char 1))
((looking-at “\\s\)”) (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))

(setq make-backup-files t)

앞에 세줄은 오류날때 소리나는거 조절할수있는데, 지금은 주석처리되어 있네요. vi에서 처럼 %로 괄호간 이동할수 기능이 구현되어 있습니다. 커서가 괄호위에 있을때만 동작합니다.

.emacs 파일에 더 내용이 있긴 한데, 나머지는 사용하면서 자동으로 Emacs에서 추가해준 설정 내용이라 공개 안합니다.

그리고 Slime 시작할때 약간 오류가 나는데 slime.el 파일을 약간 바꿔줘야합니다. CVS에 따라서 라인은 약간 다를수 있지만 현재는 1890번줄에서

‘(iso-latin-1-unix iso-8859-1-unix binary))

       –>
‘(utf-8-unix emacs-mule-unix binary))

위 처럼 바꿔주면 정상적으로 slime이 시작됩니다. 고친 방법이 정상적인 방법인지는 저도 모르지만, 아직까진 문제없이 잘 돌리고 있습니다.

그럼 모든 설치가 완료되었으니 runemacs로 Emacs를 실행하고 “M-x slime” 하면 REPL이 뜨고 LISP를 바로 사용할수 있습니다. lisp 파일 편집중 C-c C-c로 현재 위치의 S-exp을 LISP로 보낼수 있으며, C-x C-e로 커서 바로 이전 S-exp를 부분적으로 실행해 볼수 있습니다. 편집중 C-c C-z로 REPL로 다시 갈수 있습니다. SLIME 기능이 많기 때문에 좀더 공부해서 다음에 다시 설명하겠습니다.^^

4 thoughts on “윈도우즈에서 Common Lisp 개발 환경 갖추기

  1. Hybrid

    CL 환경 때문에 많이 삽질을 했는데, 검색할때 이곳을 놓쳐버렸네요. ㅜ_ㅜ
    알았다면 훨씬 편하게 했을텐데…..ㅜ_ㅜ
    SBCL로 해서 정리한 것을 트랙백하고 갑니다..~~

    아, 그런데 Hyperspec 부분에서
    “c:/Program Files/clisp-2.41/doc/HyperSpec/”
    라고 했는데 됩니까? 저는 공백을 넣으면 별짓을 해도 안되던데요 ^^; 혹시 오타가 아니신지……

    Reply
  2. mix1009

    Hybrid님 말씀대로 공백이 들어가니 안되는군요. 언제인지 모르지만 제 .emacs 파일에 (setq common-lisp-hyperspec-root “c:/Progra~1/clisp-2.41/doc/HyperSpec/”) 이렇게 들어가있네요 –;
    본문 고치도록 하겠습니다 ^^ 그리고 저는 뒤에 / 때문에 많이 고생한 기억이 나네요 TT

    Reply
  3. UF

    “.EMACS” 파일이 C 아래 생성되어야 하는데
    VISTA에서는 그게 안되더 군요
    cywin 사용해서 약간의 편법으로 설치 하였습니다.
    물론 위에 올려주신 패스 약간 수정해주셔야 합니다.
    그럼 즐프 되세요 ㅎ

    Reply
    1. mix1009

      이번에 비스타 노트북이 생겼는데, 아직 emacs 세팅을 못했네요. 저도 한번 시도해봐야겠네요. 참고할만한 자료있으면 부탁드리겠습니다^^

      Reply

Leave a Reply to Hybrid Cancel reply

Your email address will not be published.