1 of 31

Clojure�환경설정

2 of 31

Clojure 개발 환경 구축

    • Slime? Slimv?

    • leiningen

    • 초간단 설치
      • Linux
        • Emacs
        • Vim
      • Windows
        • Emacs
        • Vim

    • 조작키
      • Slime
      • Slimv

3 of 31

Slime? Slimv?

Clojure 환경설정 방법에는 여러가지가 있는데,

그 중 Emacs와 Vim에디터에 어울리는 slime, slimv 모드가 있다.

4 of 31

Slime 이란?

  • Slime이란 ?
    • Lisp를 이용한 개발을 도와주는 Emacs Mode.

5 of 31

ㅇㅇ?

  • 역사
    • Eric Marsden : SLIM을 만듬(2003. 중반쯤)
    • Luke Gorrie, Helmut Eller : 이를 확장시킴.
      • SLIME ( Extension of SLIM )
    • Superior Lisp Interaction Mode for Emacs

  • 기능
    • Slime-mode
    • SLDB : debugger 인터페이스
    • REPL기능 강화
    • 자동완성기능 제공
    • Inspector기능

6 of 31

역활

에디터상의 코딩환경을 만들어 주고,

Lisp 구현체와 데이터를 주고받을 수 있는 서버 제공

에디터 >> [에디터 확장 -> Swank] >> Lisp 구현체

7 of 31

Swank Clojure

  • Jvm위에 돌아가는 Clojure 프로젝트와, Slime이 잘 붙어 돌아가도록 만들어줌

  • 에디터 >> [Slime] >> [Swank Clojure] >> Clojure >> JVM

8 of 31

Slimv란?

  • SLIMV
    • Superior Lisp Interaction Mode for Vim

  • 다운로드

  • 튜토리얼

9 of 31

Q: Ant와 Maven의 차이점이 먼가요? �A: Ant의 개발자는 사과라도 했지…

Leiningen

10 of 31

Leiningen

  • Java 프로젝트 매니저인, ant와 maven은 XML을 가지고 프로젝트를 관리한다.
    • 하지만, XML은 보고 수정하기 힘들다!

  • Leiningen은 프로젝트관리 파일 자체가 .clj 파일이다.

11 of 31

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"]]

12 of 31

그냥 보기만 하면, 음?�직접 해보면, 아!

초간단 설치

13 of 31

해보기 전에 체크사항

  • OS
    • Linux (debian 계열)
    • Windows

  • Clojure

  • Editor/Slime
    • Emacs / Sime
    • Vim / Slimv

  • Clojure Pakcage System
    • Leiningen

% 주의 %

이후부터, 에디터 및 OS를 다루는법(설정 및 키)를 알고 있다고, 가정하고 진행

OS >> 에디터 >> [Slime] >> [Swank Clojure] >> [leiningen] >> Clojure

14 of 31

Linux

  • 배포판(버전) : Ubuntu 12.04

ubuntu경우, apt-get 몇번만에 설치를 간편히 할 수 있다

15 of 31

Linux – emacs, vim 공통

Leiningen 설치

> wget https://raw.github.com/technomancy/leiningen/preview/bin/lein

> chmod +x ./lein

> sudo mv ./lein /usr/bin/

> lein

16 of 31

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모드

17 of 31

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))

18 of 31

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> 프롬프트가 뜨면 성공

19 of 31

Linux – Vim -> slimv

Slimv 다운로드 :

http://www.vim.org/scripts/script.php?script_id=2531

압축 해제 : ~/.vim/

> apt-get install vim

20 of 31

Linux – vim-> Slime -> lein -> 환경설정확인

> lein plugin install swank-clojure 1.4.2

> lein new first

> cd first

first> lein deps

first> lein swank

- Vim실행.

  • first/src/first/core.clj 파일을 연다.
  • ,c 로 swank서버에 연결한다.

- 잠시후 User> 프롬프트가 뜨면 성공

21 of 31

Windows

  • 버전 : Windows XP

Windows경우, 환경 변수 및 기타 설정할게 쪼금 복잡하다

22 of 31

Windows – emacs, vim 공통1

환경변수 : HOME, PATH설정

윈도우 환경설정은 Rapidee를 쓰면 간편하게 할 수 있다.

( http://www.rapidee.com/en/download )

23 of 31

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이 정상 작동하도록 만든다.

24 of 31

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모드

25 of 31

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))

26 of 31

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> 프롬프트가 뜨면 성공

27 of 31

Windows – Vim -> slimv

Slimv 다운로드 :

http://www.vim.org/scripts/script.php?script_id=2531

압축 해제 : ~/vimfiles/

Vim 다운로드 :

http://www.vim.org/download.php

사용버전 : gvim73_46.exe

28 of 31

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실행.

  • C:/myHome/Clojure/first/src/first/core.clj 파일을 연다.
  • ,c 로 swank서버에 연결한다.

- 잠시후 User> 프롬프트가 뜨면 성공

29 of 31

조작키

조작키를 한꺼번에 다 외우는 것은 힘들다.

관련 사이트를 참고하여, 필요할때마다, 하나씩 익혀나가자

30 of 31

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/

31 of 31

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

참조 : http://kovisoft.bitbucket.org/tutorial.html