[?] Eclipse console 창에서 코드 입력 문제 질문입니다

646 views
Skip to first unread message

김영태

unread,
Sep 9, 2011, 9:08:39 AM9/9/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
예를 들어, Eclipse Console 창에 다음의 내용을 입력한 후 엔터키를 눌러 실행할 때
println을 printl로 잘못 입력한 경우에는 다음과 같은 에러 메시지가 나오는데요.

1:13 test=> (printl "Hello World")
java.lang.Exception: Unable to resolve symbol: printl in this context
(repl-1:13)

이런 경우 보통은 위쪽 화살표 키를 치면(emacs에서는 Alt-P) 잘봇 입력한 텍스트가
다시 나와야 되는데, eclipse console창에서는 이 기능을 이용하려면 어떤 키를 눌러야
하나요?

Eclipse 메뉴의 Window > Preferences > Keys > Scheme 에서 Emacs를 선택했는데도
Console창에서는 emacs 키가 먹지를 않네요.

아시는 분의 조언을 부탁드립니다.


Jong-Hyouk Yun

unread,
Sep 9, 2011, 9:23:16 AM9/9/11
to lisp-...@googlegroups.com

핸드폰 use, require 사용해서
clojure.core 불러오셔야해요
자세한 건 검색부탁~

2011. 9. 9. 오후 10:08에 "김영태" <phil...@gmail.com>님이 작성:





--
Google 그룹스 'Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 lisp-...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 lisp-korea+...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/lisp-korea?hl=ko에서 그룹을 방문하세요.

문성원

unread,
Sep 9, 2011, 10:02:17 AM9/9/11
to lisp-...@googlegroups.com
print가 없어서 그러시는것 같지는 않습니다.:)

저도 eclipse로 셋업프로그램 같은거 만들때 고생했던 기억이 있어서 찾아보니 전에 입력한 커맨드를 자동으로 입력하게 해주는 기능은 보이질 않네요. 확장 플러그인 같은 걸로 설치되는 콘솔이 아닌 기본 콘솔로는 좀 힘들것 같습니다.

p.s eclipse의 key scheme은 단순히 몇몇 키바인딩을 emacs스럽게(?) 바꿔주는 것에 지나지 않습니다.;

2011년 9월 9일 오후 10:23, Jong-Hyouk Yun <agel...@gmail.com>님의 말:

김영태

unread,
Sep 9, 2011, 11:38:32 AM9/9/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
문성원님 말씀대로 기본 console기능을 확장한 console plugin을 찾는다고 해도, 제가 그 플러그인을
Counterclockwise와 연동시킬 지식이나 능력이 없어서 난감하네요.

저는 리습 계열 주력 언어를 clojure로 마음을 굳힌 터라, 자바도 좀 공부하고 clojure도 익혈 겸 해서 이 책 저
책 보고 있는데요, 아무래도 제일 당기는 clojure 개발환경은 lein + slime 환경인 듯 해서, 이래 저래 세팅을 하
고 있는데 잘 안되네요. 인터넷에 소개된 글을 따라 그대로 해봐도, 설명하고는 달리 제대로 작동을 안하는 경우가 많고
swank-clojure도 버전이 하도 여러가지라 slime 버전과의 궁합이 잘 맞지 않는 것인지는 몰라도 slime repl
이 안 돌아갑니다. 그래서 lein + slime 윈도우 개발 환경 구측에 성공하신 분 있으시면, 꼭 lein이나 slime의
최신 버전이 아니더라도, 이 곳 게시판에 글 좀 올려 주시면 안될까요?

이것 저것 시도하다 안되서, 지금은 임시방편으로 Clojure Box를 사용하고 있는데, 이것도 가끔씩 Repl에서 form을
제대로 다 입력했는 데도 불구하고, 무한정 계속 입력을 기다리는 버그가 있더군요.


On Sep 9, 11:02 pm, 문성원 <longfinfun...@gmail.com> wrote:
> print가 없어서 그러시는것 같지는 않습니다.:)
>
> 저도 eclipse로 셋업프로그램 같은거 만들때 고생했던 기억이 있어서 찾아보니 전에 입력한 커맨드를 자동으로 입력하게 해주는 기능은
> 보이질 않네요. 확장 플러그인 같은 걸로 설치되는 콘솔이 아닌 기본 콘솔로는 좀 힘들것 같습니다.
>
> p.s eclipse의 key scheme은 단순히 몇몇 키바인딩을 emacs스럽게(?) 바꿔주는 것에 지나지 않습니다.;
>

> 2011년 9월 9일 오후 10:23, Jong-Hyouk Yun <ageld...@gmail.com>님의 말:


>
>
>
>
>
>
>
> > 핸드폰 use, require 사용해서
> > clojure.core 불러오셔야해요
> > 자세한 건 검색부탁~
>

> > 2011. 9. 9. 오후 10:08에 "김영태" <philo...@gmail.com>님이 작성:


>
> > 예를 들어, Eclipse Console 창에 다음의 내용을 입력한 후 엔터키를 눌러 실행할 때
> > println을 printl로 잘못 입력한 경우에는 다음과 같은 에러 메시지가 나오는데요.
>
> > 1:13 test=> (printl "Hello World")
> > java.lang.Exception: Unable to resolve symbol: printl in this context
> > (repl-1:13)
>
> > 이런 경우 보통은 위쪽 화살표 키를 치면(emacs에서는 Alt-P) 잘봇 입력한 텍스트가
> > 다시 나와야 되는데, eclipse console창에서는 이 기능을 이용하려면 어떤 키를 눌러야
> > 하나요?
>
> > Eclipse 메뉴의 Window > Preferences > Keys > Scheme 에서 Emacs를 선택했는데도
> > Console창에서는 emacs 키가 먹지를 않네요.
>
> > 아시는 분의 조언을 부탁드립니다.
>
> > --
> > Google 그룹스 'Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)' 그룹에 가입했으므로 본 메일이 전송되었습니다.
> > 이 그룹에 게시하려면 lisp-...@googlegroups.com(으)로 이메일을 보내세요.
> > 그룹에서 탈퇴하려면 lisp-korea+...@googlegroups.com로 이메일을 보내주세요.

> > 더 많은 옵션을 보려면http://groups.google.com/group/lisp-korea?hl=ko에서 그룹을 방문하세요.

문성원

unread,
Sep 9, 2011, 11:45:48 AM9/9/11
to lisp-...@googlegroups.com
(환경이 osx라 도움이 안되실수도 있지만)최근에 썼을때는 swank-clojure(1.3.2), slime(2011-08-03)로 작업했습니다. marmalade에 있는 버젼은 아귀가 안맞아서 slime은 직접 받아서 설정했구요.

ritz(구swank-clj)는 어느정도 안정화가 되면 좋을텐데 아직은 좀 불안불안한 느낌이었습니다. 

2011년 9월 10일 오전 12:38, 김영태 <phil...@gmail.com>님의 말:

박성민

unread,
Sep 9, 2011, 12:36:03 PM9/9/11
to lisp-...@googlegroups.com

그렇죠. 아직 swank clojure + slime 이 CL 만큼 안정적이진 않은 것 같습니다.


전 그냥 lein 으로 프로젝트 만들고 명령창에서 lein swank 해준다음에 emacs 에서
slime-connect 를 실행해서 쓰고 있습니다.

(별도로 swank-clojure 를 다운 받지 않고 lein 이 자동으로 받아주는 넘으로 쓰고있습니다)

뭐…직접 만들어준 쓰레드들이 뿜어내는 메시지들이 slime-repl 창이 아니라 명령행창으로
나오는거 빼고는 그럭저럭…쓸만하더군요. (사실 이건 CL 도 마찬가지긴 한데 inferior lisp 버퍼의
스트림을 리다이렉션 해주는 방법으로 해결 가능합니다)

현시점에선 이게 가장 표준적인 방법이 아닐까 싶은데요…

근데 뭐…하다 slime 연결이 끊어지거나 하는 일이 좀 잦더군요…



김영태

unread,
Sep 10, 2011, 4:32:46 AM9/10/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
다음은 제가 윈도우즈 상에서 lein + slime 설정을 한 과정입니다.
어느 곳에서 잘못된 것인지 지적해 주시면 고맙겠습니다.

1) https://github.com/technomancy/leiningen 에서 leiningen-1.5.2-win.zip
다운로드한 후에 압축을 풀어줍니다. 압축이 풀린 후, lein.bat 파일이 들
어있는 디렉토리 경로를 윈도우즈 환경 변수 PATH에 추가해 줍니다.

2) 자신이 작업을 원하는 디렉토리로 옮겨 간 후에, 다음과 같이 실행해 클로우저
프로젝트를 생성합니다.

> lein new myproject

3) 새로 생성된 myproject 디렉토리 내의 project.clj 파일의 내용을 다음과 같이
편집합니다.

(defproject myproject "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.2"]] )

4) 이 상태에서 다음의 명령을 실행해, 프로젝트 실행에 필요한 라이브러리를 다운
받습니다.

> lein deps

5) 다음의 명령을 실행해, swank server를 구동합니다.

> lein swank
Connection opened on localhost port 4005.


다음부터는 emacs 쪽 설정 내용입니다.

1) http://common-lisp.net/project/slime/ 에서 slime-current.tgz 을 다운받아
압축을 푼 후 ~/.emacs.d/slime/ 디렉토리에 통채로 복사해 넣어 줍니다.

2) ~/.emacs.d/ 디렉토리 내부에서 다음의 명령을 실행해 clojure-mode를 다운로드
받습니다.

> git clone https://github.com/jochu/clojure-mode

3) ~/.emacs.d/ 디렉토리 내부에서 다음의 명령을 실행해 swank-clojure를 다운로드
받습니다.

> git clone https://github.com/jochu/swank-clojure

4) ~/.emacs.d/init.el 내에 slime과 clojure와 관련되는 다음의 내용을 추가합니다.

(add-to-list 'load-path "~/.emacs.d/slime")
(add-to-list 'load-path "~/.emacs.d/clojure-mode")
(add-to-list 'load-path "~/.emacs.d/swank-clojure")

(require 'slime)
(require 'clojure-mode)
(require 'swank-clojure)

5) emacs를 다시 실행한 후, 다음과 같이 진행합니다.

M-x slime-connect <Enter>
Host: 127.0.0.1 <Enter>
Port: 4005 <Enter>
Versions differ: 2011-08-31 (slime) vs. 20100404 (swank).Continue?
(y or n) y

이후에

Connected. Let the hacking commence!

라는 메시지가 나온 후에, 그냥 계속해서 먹통입니다.
당연히 user=> 라는 메시지가 나와야 하는데 말이죠!

이 상태에서 emacs를 억지로 종료하면, 아까 lein swank를 실행한 도스창에는
다음과 같은 에러 메시지가 뜹니다. 도데체 무엇이 잘못된 걸까요?

===========================================================================
myproject>lein swank
Connection opened on localhost port 4005.
exception in read loop
java.lang.Exception: Error reading swank message
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at clojure.lang.Compiler$NewExpr.eval(Compiler.java:2100)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:361)
at clojure.lang.Compiler.eval(Compiler.java:5429)
at clojure.lang.Compiler.load(Compiler.java:5857)
at clojure.lang.RT.loadResourceScript(RT.java:340)
at clojure.lang.RT.loadResourceScript(RT.java:331)
at clojure.lang.RT.load(RT.java:409)
at clojure.lang.RT.load(RT.java:381)
at clojure.core$load$fn__4519.invoke(core.clj:4915)
at clojure.core$load.doInvoke(core.clj:4914)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:4729)
at clojure.core$load_lib.doInvoke(core.clj:4766)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_libs.doInvoke(core.clj:4804)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:544)
at clojure.core$use.doInvoke(core.clj:4892)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at swank.core.connection
$eval150$loading__4414__auto____151.invoke(connection.clj:1)
at swank.core.connection$eval150.invoke(connection.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.load(Compiler.java:5857)
at clojure.lang.RT.loadResourceScript(RT.java:340)
at clojure.lang.RT.loadResourceScript(RT.java:331)
at clojure.lang.RT.load(RT.java:409)
at clojure.lang.RT.load(RT.java:381)
at clojure.core$load$fn__4519.invoke(core.clj:4915)
at clojure.core$load.doInvoke(core.clj:4914)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:4729)
at clojure.core$load_lib.doInvoke(core.clj:4766)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_libs.doInvoke(core.clj:4804)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:544)
at clojure.core$use.doInvoke(core.clj:4892)
at clojure.lang.RestFn.invoke(RestFn.java:457)
at swank.core$eval22$loading__4414__auto____23.invoke(core.clj:
1)
at swank.core$eval22.invoke(core.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.load(Compiler.java:5857)
at clojure.lang.RT.loadResourceScript(RT.java:340)
at clojure.lang.RT.loadResourceScript(RT.java:331)
at clojure.lang.RT.load(RT.java:409)
at clojure.lang.RT.load(RT.java:381)
at clojure.core$load$fn__4519.invoke(core.clj:4915)
at clojure.core$load.doInvoke(core.clj:4914)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:4729)
at clojure.core$load_lib.doInvoke(core.clj:4766)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_libs.doInvoke(core.clj:4800)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:544)
at clojure.core$use.doInvoke(core.clj:4892)
at clojure.lang.RestFn.invoke(RestFn.java:512)
at swank.swank
$eval16$loading__4414__auto____17.invoke(swank.clj:11)
at swank.swank$eval16.invoke(swank.clj:11)
at clojure.lang.Compiler.eval(Compiler.java:5424)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.load(Compiler.java:5857)
at clojure.lang.RT.loadResourceScript(RT.java:340)
at clojure.lang.RT.loadResourceScript(RT.java:331)
at clojure.lang.RT.load(RT.java:409)
at clojure.lang.RT.load(RT.java:381)
at clojure.core$load$fn__4519.invoke(core.clj:4915)
at clojure.core$load.doInvoke(core.clj:4914)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:4729)
at clojure.core$load_lib.doInvoke(core.clj:4766)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$load_libs.doInvoke(core.clj:4800)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:542)
at clojure.core$require.doInvoke(core.clj:4881)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at user$eval12.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:5424)
at clojure.lang.Compiler.eval(Compiler.java:5414)
at clojure.lang.Compiler.eval(Compiler.java:5415)
at clojure.lang.Compiler.eval(Compiler.java:5391)
at clojure.core$eval.invoke(core.clj:2382)
at clojure.main$eval_opt.invoke(main.clj:235)
at clojure.main$initialize.invoke(main.clj:254)
at clojure.main$null_opt.invoke(main.clj:279)
at clojure.main$main.doInvoke(main.clj:354)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:369)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)

=======================================================================

6) 제가 가진 의문 두 가지만 더 질문하겠습니다.

첫째로, lein deps 로 다운받은 swank-clojure-1.3.2.jar와
~/.emacs/d/swank-clojure 디렉토리에 다운받은 여러 파일들은 서로 무슨
관계가 있는 것인지 궁금합니다.

둘쨰로, lein swank로 실행한 swank server를 중단시키려면 어떻게 해야 하나요?
lein swank를 실행한 도스창을 죽여도, port 4005 번이 계속 열려 있다고
나오던데요.

박성민

unread,
Sep 10, 2011, 5:43:50 AM9/10/11
to lisp-...@googlegroups.com
방금 아무것도 설치되어있지 않은 어머니의 컴퓨터에 이것저것 셋팅해보고
테스트해봤습니다. 처음부터 말이죠!

일단 영태님…connected 메시지나오고 먹통인건 잘못이아니라

emacs 설정파일에
(require 'slime) 이후에..
(slime-setup '(slime-repl))

이 없어서 일듯 합니다. 최근의 slime 은 slime-repl 창이 기본적으로 disable 입니다.

지금 제가 급하게 밖에 나가야 되서 돌아온 후에 적어보도록 하겠습니다.




김영태

unread,
Sep 10, 2011, 6:34:30 AM9/10/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
성민님 말씀대로 추가해 보았으나, 마찬가지 현상입니다.

On Sep 10, 6:43 pm, 박성민 <byulpa...@gmail.com> wrote:
> 방금 아무것도 설치되어있지 않은 어머니의 컴퓨터에 이것저것 셋팅해보고
> 테스트해봤습니다. 처음부터 말이죠!
>

> 일단 영태님...connected 메시지나오고 먹통인건 잘못이아니라

김영태

unread,
Sep 10, 2011, 6:45:59 AM9/10/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
참고로 (slime-setup '((slime-repl)) 을 실행하려면

(add-to-list 'load-path "~/.emacs.d/slime/contrib") 부분을 추가해줘야 하네요.

slime이 버전 업이 되면서, slime의 plugin 성격의 모듈들은 모두 slime/contrib 디렉토리로
이동시킨 듯 싶습니다.

------------------------------------------------------------------------------------------------
(add-to-list 'load-path "~/.emacs.d/slime")
(add-to-list 'load-path "~/.emacs.d/slime/contrib") ;; <-- 추가 부분


(add-to-list 'load-path "~/.emacs.d/clojure-mode")
(add-to-list 'load-path "~/.emacs.d/swank-clojure")

(require 'slime)
(slime-setup '((slime-repl)) ;; <-- 추가 부분
(require 'clojure-mode)
(require 'swank-clojure)
-----------------------------------------------------------------------------------------

김영태

unread,
Sep 10, 2011, 6:50:06 AM9/10/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
위의 제 글에서 일부 내용을 다음과 같이 정정합니다.

(slime-setup '((slime-repl)) ---> (slime-setup '(slime-repl))

박성민

unread,
Sep 10, 2011, 8:24:24 AM9/10/11
to lisp-...@googlegroups.com
 ..slime-setup 함수에 contrib 디렉토리를 load-path 에 추가해주는 부분이 
 포함되어 있기 때문에 구지 emacs 설정파일에 추가해줄 필요는 없을 것 같습니다.

제가 해서 성공한 순서는…


1. lein 설치
2. lein 설치 후 lein 이 있는 디렉토리를 환경변수 Path에 등록.
3.  lein plugin install swank-clojure 1.3.2 로 swank-clojure 설치.

4. emacs 설치 -> slime 설치 -> clojure-mode 설치.

   (add-to-list 'load-path "/path/to/slime")
   (require 'slime)
   (slime-setup '(slime-repl slime-scratch))

    전 clojure-mode 는 elpa 로 받았기 때문에 별도로 설정은 하지 않았습니다.
    slime 에 가장 인기있는 module 들은 (slime-setup '(slime-fancy)) 로 한방에 다 로드할 수 
    있는데 여기에 포함되는  slime-autodoc 이 swank-clojure 와 충돌이 있습니다.
      
5. 명령행 창에서 
   > lein new my-project
   > cd my-project
   > lein swank     

    -----> 이러면 deps 파일들 자동으로 받고 바로 swank 서버가 동작합니다. 
             구지 project.clj 의 :dev-dependencies 에 추가하지 않아도 되더군요.

6. emacs 에서 slime-connect 


흠….개발관련 설정이 아무것도 없는 막컴퓨터(?) 로 users=> 프롬프트를 보기 까지
5분도 안걸릴 정도로 과정이 많이 깔끔해졌더군요(Emacs 받는 시간 제외.ㅋㅋ)

기존에 CL 에서 개발하다 Clojure 로 넘어간 유저들과 Java 를 주로 해오던 개발자들이
섞이는 과정에서 생긴, 여러 가지 과도기의 잔재들이 아직 인터넷에 많이 남아있는 것 같습니다.


암튼 결론은 Common Lisp 만세!!!!



2011. 9. 10., 오후 7:50, 김영태 작성:

김영태

unread,
Sep 10, 2011, 10:07:58 AM9/10/11
to Lisp을 좋아하는 사람들의 그룹(한국 리스퍼)
박성민님의 도움으로, 저도 윈도우즈 상에서 leingen + slime 설정에 성공하였습니다.
대단히 감사합니다! ^^

제가 겪은 시행작오를 바탕으로, 윈도우즈 상에서 leingen + slime 설정에 성공한 과정을
정리해 보겠습니다.

참고로 emacsW32와 Java SE 6 Update 27은 이미 시스템에 설치되어 있는 것으로 가정
하겠씁니다.

1) https://github.com/technomancy/leiningen 에서 leiningen-1.5.2-win.zip
다운로드한 후에 압축을 풀어줍니다. 압축이 풀린 후, lein.bat 파일이 들
어있는 디렉토리 경로를 윈도우즈 환경 변수 PATH에 추가해 줍니다.

2) 다음을 실행하여, swank-clojure를 설치한다.


> lein plugin install swank-clojure 1.3.2

3) 자신이 작업을 원하는 디렉토리로 옮겨 간 후에, 다음과 같이 실행해 클로우저
프로젝트를 생성합니다.

> lein new myproject

4) 새로 생성된 myproject 디렉토리 내의 project.clj 파일의 내용을 다음과 같이
편집합니다.

(defproject myproject "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[swank-clojure "1.3.2"]] )

5) 이 상태에서 다음의 명령을 실행해, 프로젝트 실행에 필요한 라이브러리를 다운
받습니다.

> lein deps

6) 다음의 명령을 실행해, swank server를 구동합니다.

> lein swank
Connection opened on localhost port 4005.

다음부터는 emacs 쪽 설정 내용입니다.

1) http://common-lisp.net/project/slime/ 에서 slime-current.tgz 을 다운받아
압축을 푼 후 ~/.emacs.d/slime/ 디렉토리에 통채로 복사해 넣어 줍니다.

2) ~/.emacs.d/ 디렉토리 내부에서 다음의 명령을 실행해 clojure-mode를 다운로드
받습니다.

> git clone https://github.com/jochu/clojure-mode

4) ~/.emacs.d/init.el 내에 slime과 clojure와 관련되는 다음의 내용을 추가합니다.

;; slime 설정


(add-to-list 'load-path "~/.emacs.d/slime")
(add-to-list 'load-path "~/.emacs.d/slime/contrib")

(require 'slime)
(slime-setup '(slime-repl slime-scratch))

;; clojure-mode 설정
(add-to-list 'load-path "~/.emacs.d/clojure-mode")
(require 'clojure-mode)

5) emacs를 다시 실행한 후, 다음과 같이 진행합니다.

M-x slime-connect <Enter>
Host: 127.0.0.1 <Enter>
Port: 4005 <Enter>
Versions differ: 2011-08-31 (slime) vs. 20100404 (swank).Continue?
(y or n) y

이후에 다음과 같은 메시지가 나온 후에,

Connected. Let the hacking commence!

'user=>' 라는 프롬프트가 보이면 성공입니다.

On Sep 10, 9:24 pm, 박성민 <byulpa...@gmail.com> wrote:
> ..slime-setup 함수에 contrib 디렉토리를 load-path 에 추가해주는 부분이
> 포함되어 있기 때문에 구지 emacs 설정파일에 추가해줄 필요는 없을 것 같습니다.
>

> 제가 해서 성공한 순서는...


>
> 1. lein 설치
> 2. lein 설치 후 lein 이 있는 디렉토리를 환경변수 Path에 등록.
> 3. lein plugin install swank-clojure 1.3.2 로 swank-clojure 설치.
>
> 4. emacs 설치 -> slime 설치 -> clojure-mode 설치.
>
> (add-to-list 'load-path "/path/to/slime")
> (require 'slime)
> (slime-setup '(slime-repl slime-scratch))
>
> 전 clojure-mode 는 elpa 로 받았기 때문에 별도로 설정은 하지 않았습니다.
> slime 에 가장 인기있는 module 들은 (slime-setup '(slime-fancy)) 로 한방에 다 로드할 수
> 있는데 여기에 포함되는 slime-autodoc 이 swank-clojure 와 충돌이 있습니다.
>
> 5. 명령행 창에서
> > lein new my-project
> > cd my-project
> > lein swank
>
> -----> 이러면 deps 파일들 자동으로 받고 바로 swank 서버가 동작합니다.
> 구지 project.clj 의 :dev-dependencies 에 추가하지 않아도 되더군요.
>
> 6. emacs 에서 slime-connect
>

> 흠....개발관련 설정이 아무것도 없는 막컴퓨터(?) 로 users=> 프롬프트를 보기 까지

Reply all
Reply to author
Forward
0 new messages