[Emacs] Clojurescript 프로그램시 lein-figwheel 사용할 때 cider 를 이용해서 console 에 접속하는 방법

최근에 다시 clojurescript 를 이용해서 작업할 일이 생겼습니다. javascript 는 편리하긴 하지만 구현하는데 재미가 없다는 심각한 결점이 있기 때문입니다. 게다가 최근 lein-figwheel 이라는 편리한 툴이 나와서 정말 편하게 작업을 할 수가 있습니다. 다만 lein figwheel 을 하면 불편하게도 console 에서 작업을 해야 하기 때문에 emacs 의 편리한 기능을 못써서 안타깝습니다. 따라서 nRepl 을 이용해서 편리하게 작업하는 방법을 소개시켜드릴까 합니다.

  1. CIDER 와 clojure-mode 를 설치해야 한다.

    package-install 명령을 이용하면 쉽게 설치가 가능하다.

  2. leiningen plugins 를 설정해야 한다.
    ~.lein/profiles.clj
    

    를 열어서 다음과 같이 추가해 준다. (2015. 12. 29 현재 0.10.0 버젼이 최신)

    {:user {:plugins [[cider/cider-nrepl "0.10.0"]]}}
    
  3. 개별 project.clj 설정에
    :figwheel {:nrepl-port 7002}
    

    내용이 defproject 와 같은 레벨로 추가가 되어 있어야 한다.

  4. .emacs 파일에
    (add-hook 'cider-connected-hook '(lambda ()
                              (cider-interactive-eval
                               "(use 'figwheel-sidecar.repl-api)\n(cljs-repl)\n")))
    
    (defun figwheel-connect ()
    (interactive)
    (cider-connect "localhost" "7002"))
    
  5. figwheel-connect 명령을 실행 프로젝트 루트 디렉토리에서
    lein figwheel
    

    을 실행해서 띄우고 , M-x figwheel-connect 를 이용해서 접속한다.