emacs로 clojure와 부비부비

using-emacs-with-clojure

OS X 기준으로 설명. 요즘 Windows에서 clojure 만질 일이 없다.

leiningen 설치

매버릭스(Mavericks)를 쓰고 있어 JDK는 설치 안 했다. 설치돼서 나오는 JDK 6.0을 그냥 쓴다. 문제 생기면 업데이트하면 되는 거고.

JDK는 해결됐으니 이제 경쟁자가 없는 clojure 프로젝트 자동화 도구인 leiningen(이하 lein)을 설치하면 된다. lein이 project.clj에 정의한 clojure 버전을 모시고오니깐 따로 clojure를 다운받을 필요 없다.

homebrew 패키지 매니저로 설치할 수 있다. 이렇게 편한 걸 마다할 이유가 없지.

$ brew install leiningen
$ lein repl
user=> (println “hello clojure”)
hello clojure
nil

오키! lein 설치 잘 됐다. 이제 emacs 환경을 세팅하면 된다.

cider 설치

M-x package-install <RET> cider <RET>

CIDER를 설치하자. nrepl에서 CIDER로 이름을 바꿨다. Clojure IDE and Repl for emacs 약자라니. 이름 참 잘 짓는다. 개발자가 그냥 사과주를 좋아하는 것 같은데.

M-x cider-jack-in

lein 프로세스를 띄어 빨대를 꼽는다. 일단 실행이 되는지 알아보는 게 중요하니 지금은 아무 버퍼에서나 실행한다.

The lein executable (specified by `cider-lein-command’) isn’t on your exec-path

이런 게 뜨네. exec-path에 lein이 없나벼.

emacs를 시작할 때, PATH 환경 변수를 그대로 안 가져온다. clojure 만지고 싶어 근질거리니 이유는 나중에 찾아보기로 한다. homebrew가 심볼릭 링크(symbolic link)를 저장하는 디렉토리가 PATH에 빠져있다.

(setq mac? (eq system-type 'darwin))
(when mac?
  (let ((usr-local "/usr/local/bin"))
    (add-to-list 'exec-path usr-local)
    (setenv "PATH" (concat usr-local path-separator (getenv "PATH")))))

windows에서 bash를 emacs shell로 사용을 참고해서 추가한다.

WARNING: CIDER's version (0.7.0-snapshot) does not match cider-nrepl's version (not installed)

*scratch* 버퍼에서 M-x cider-jack-in을 실행하면 이런 경고가 나온다. cider-nrepl이 없어서 사용 못 하는 기능을 나열한다. 아쉬우니 설치한다. 설치하려면 lein 프로젝트 파일을 만들어야 한다.

cider-nrepl 플러그인

$ cd ~;mkdir sample-prj;cd sample-prj
$ lein new hello

lein 프로젝트 만들고

M-x find-file <RET> ~/sample-prj/hello/project.clj

emacs에서 프로젝트 파일을 연다

(defproject hello "0.1.0-SNAPSHOT”
  ...
  :plugins [[cider/cider-nrepl "0.7.0-SNAPSHOT"]])

cider-nrepl 플러그인을 project.clj에 추가한다. M-x cider-jack-in 실행. 뭔가 좀 걸리는 데 참으면 된다. 다운받는 중이다.

이제 warning이 사라졌다. clojure와 부비부비 고고.

함께 쓰면 좋을 clojure 패키지

clojure-emacs에 cider말고도 다른 프로젝트가 많다.

자동 완성을 마다할 필요가 없다. ac-cider 설치.

font-lock, 들여쓰기, 코드 내비게이션이 필요하면 clojure-mode. font-lock이라는 용어가 낯설다. text에 face를 할당하는 건데, 이걸로 문법 강조를 할 수 있다.

이전에 쓰던 건 여기까지. 이 글을 쓰면서 살펴보니 디게 많네. inspect, tracing, refactor, … 섹시한 거 많네. 이건 써보고 기회 되면 관련 글을 쓸 예정이다.

참고

UPDATED 2014.09.20: ac-nrepl을 ac-cider로 교체

C-x C-s C-x C-c

크리에이티브 커먼즈 라이선스

Published: July 31 2014


Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com
blog comments powered by Disqus