Clojure�환경설정
Clojure 개발 환경 구축
Slime? Slimv?
Clojure 환경설정 방법에는 여러가지가 있는데,
그 중 Emacs와 Vim에디터에 어울리는 slime, slimv 모드가 있다.
Slime 이란?
ㅇㅇ?
역활
에디터상의 코딩환경을 만들어 주고,
Lisp 구현체와 데이터를 주고받을 수 있는 서버 제공
에디터 >> [에디터 확장 -> Swank] >> Lisp 구현체
Swank Clojure
Slimv란?
Q: Ant와 Maven의 차이점이 먼가요? �A: Ant의 개발자는 사과라도 했지…
Leiningen
Leiningen
Leiningen으로 만든 project.clj
(defproject first "0.1.0-SNAPSHOT"
:description "FIXME: write description“
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]]
그냥 보기만 하면, 음?�직접 해보면, 아!
초간단 설치
해보기 전에 체크사항
% 주의 %
이후부터, 에디터 및 OS를 다루는법(설정 및 키)를 알고 있다고, 가정하고 진행
OS >> 에디터 >> [Slime] >> [Swank Clojure] >> [leiningen] >> Clojure
Linux
ubuntu경우, apt-get 몇번만에 설치를 간편히 할 수 있다
Linux – emacs, vim 공통
Leiningen 설치
> wget https://raw.github.com/technomancy/leiningen/preview/bin/lein
> chmod +x ./lein
> sudo mv ./lein /usr/bin/
> lein
Linux – Emacs -> Slime -1
> apt-get install emacs
;; ~/emacs.d/init.el
;); [== package ==]
(require 'package)
(setq package-archives
'(("ELPA" . "http://tromey.com/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")))
(package-initialize
M-x package-list-package
clojure-mode ;; clojure 문법강조 및 jack-in
slime
slime-repl ;; slime-connect접속시 repl을 꾸며줌
auto-complete ;; 자동완성
ac-slime ;; slime용 auto-complete모드
Linux – Emacs -> Slime -2
;; ~/emacs.d/init.el
;; [== package ==]
……
;; [== Clojure-mode ==]
(require 'clojure-mode)
(defun turn-on-paredit () (paredit-mode 1))
(add-hook 'clojure-mode-hook 'turn-on-paredit)
;; syntax highlighting for swank
(add-hook 'slime-repl-mode-hook
(defun clojure-mode-slime-font-lock ()
(require 'clojure-mode)
(let (font-lock-mode)
(clojure-mode-font-lock-setup))))
;;[== Auto-Complete ==]
(require 'auto-complete-config)
(ac-config-default)
;;[== ac-slime ==]
(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'slime-repl-mode))
Linux – Emacs -> Slime -> lein -> 환경설정확인
;; first/project.clj
(defproject first "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:plugins [[lein-swank "1.4.4"]]
:dependencies [[org.clojure/clojure "1.4.0"]]
>lein new first
>cd first
first> lein deps
- Emacs 실행. (runemacs)
- first/src/first/core.clj 파일을 연다. (C-x-f)
- M-x clojure-jack-in
- 잠시후 User> 프롬프트가 뜨면 성공
Linux – Vim -> slimv
> apt-get install vim
Linux – vim-> Slime -> lein -> 환경설정확인
> lein plugin install swank-clojure 1.4.2
> lein new first
> cd first
first> lein deps
first> lein swank
- Vim실행.
- 잠시후 User> 프롬프트가 뜨면 성공
Windows
Windows경우, 환경 변수 및 기타 설정할게 쪼금 복잡하다
Windows – emacs, vim 공통1
java 설치 : http://www.java.com/ko/
Leiningen 다운로드 :
https://raw.github.com/technomancy/leiningen/preview/bin/lein.bat
Windows – emacs, vim 공통2
C:\Documents and Settings\pyoung>cd %HOME%
C:\myHome>lein self-install
C:\myHome>mkdir Clojure
C:\myHome>cd Clojure
C:\myHome\Clojure>lein new first
%주의% :
PATH를 수정하여 java, lein, wget이 정상 작동하도록 만든다.
Windows – Emacs -> Slime -1
;; %HOME%/.emacs.d/init.el
;; [== package ==]
(require 'package)
(setq package-archives
'(("ELPA" . "http://tromey.com/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("marmalade" . "http://marmalade-repo.org/packages/")))
(package-initialize)
M-x package-list-package
clojure-mode ;; clojure 문법강조 및 jack-in
slime
slime-repl ;; slime-connect접속시 repl을 꾸며줌
auto-complete ;; 자동완성
ac-slime ;; slime용 auto-complete모드
다운로드(외국) : http://ftp.gnu.org/gnu/emacs/windows/
다운로드(국내) : http://ftp.kaist.ac.kr/gnu/gnu/emacs/windows/
실행버전 : emacs-24.1-bin-i386.zip
Windows – Emacs -> Slime -2
;; %HOME%/.emacs.d/init.el
;; [== package ==]
……
;; [== Clojure-mode ==]
(require 'clojure-mode)
(defun turn-on-paredit () (paredit-mode 1))
(add-hook 'clojure-mode-hook 'turn-on-paredit)
;; syntax highlighting for swank
(add-hook 'slime-repl-mode-hook
(defun clojure-mode-slime-font-lock ()
(require 'clojure-mode)
(let (font-lock-mode)
(clojure-mode-font-lock-setup))))
;;[== Auto-Complete ==]
(require 'auto-complete-config)
(ac-config-default)
;;[== ac-slime ==]
(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'slime-repl-mode))
Windows – Emacs -> Slime -> lein -> 환경설정확인
;; C:\myHome\Clojure\first\project.clj
(defproject first "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:plugins [[lein-swank "1.4.4"]]
:dependencies [[org.clojure/clojure "1.4.0"]]
C:\myHome\Clojure>lein new first
C:\myHome\Clojure>cd first
C:\myHome\Clojure\first>
C:\myHome\Clojure\first> lein deps
- Emacs 실행. (runemacs)
- C:/myHome/Clojure/first/src/first/core.clj 파일을 연다. (C-x-f)
- M-x clojure-jack-in
- 잠시후 User> 프롬프트가 뜨면 성공
Windows – Vim -> slimv
Windows – vim-> Slime -> lein -> 환경설정확인
C:\myHome\Clojure>lein new first
C:\myHome\Clojure>cd first
C:\myHome\Clojure\first> lein deps
C:\myHome\Clojure\first> lein swank
- Vim실행.
- 잠시후 User> 프롬프트가 뜨면 성공
조작키
조작키를 한꺼번에 다 외우는 것은 힘들다.
관련 사이트를 참고하여, 필요할때마다, 하나씩 익혀나가자
Slime 조작키
>> 에디터
C-M-i : 자동완성
C-M-x : eval-defun
C-cz : go to repl
C-cm : macro expand
C-cdd : describe symbol
C-cd h : hyperspec
>>디버깅
a : Abort
q : Quit
n : contiNue
참조 : http://www.pchristensen.com/blog/articles/public-beta-open-for-ultimate-n00b-slimeemacs-cheat-sheet/
Slimv 조작키
>> 에디터
,( : toggle paredit
<Tab> : 자동완성
,d : eval-defun
,e : eval-curr-exp
,r : eval-regin
,b : eval-buff
,v : interactive-eval
,h : HyperSpec (Common Lisp 도움말)
>>디버깅
,a : Abort
,q : Quit
,n : contiNue