In console 'Terminal'

$ sudo apt-get install clojure
$ sudo apt-get install leiningen
$ sudo apt-get install slime

install clojure-mode

$ cd ~/.emacs.d
$ git clone git://github.com/technomancy/clojure-mode.git

append to dot-emacs

$ emacs ~/.emacs

add followings below

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

install swank-clojure

$ lein plugin install swank-clojure 1.3.3

make clojure test project
   
$ mkdir ~/tmp
$ cd ~/tmp
$ lein new test-project
$ cd test-project
$ lein deps

invoking slime for clojure
   
$ emacs project.clj

in Emacs

M-x clojure-jack-in

enjoy yourself!!

for Korean

클로져를 Emacs 랑 연동하는 방식이 여러가지가 존재합니다. 이거 저거 다 해봤는데 잘 안되더군요. 개인적으로 apt-get 을 이용해서 개발환경 관리하는 것을 즐겨하는 편인데 잘 뒤져봐도 이것에 관한 내용들이 없더군요. 그래서 정리해 봤습니다.

터미널 창에서 다음 과 같이 입력해 줍니다. emacs 는 이미 설치가 되어 있다고 가정합니다.

$ sudo apt-get install clojure
$ sudo apt-get install leiningen
$ sudo apt-get install slime

클로져 모드 (Clojure-mode) 를 설치해줍니다. git 는 이미 설치가 되어 있다고 가정합니다.

$ cd ~/.emacs.d
$ git clone git://github.com/technomancy/clojure-mode.git

.emacs 를 열어서

$ emacs ~/.emacs

다음과 같은 내용을 추가해 줍니다. 이는 클로져 모드를 쓸 수 있게 해주는 것입니다.

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

 스웽크 클로져(swank-clojure)를 설치해줍니다. slime 이 연결하는 대상이 될 것입니다.

$ lein plugin install swank-clojure 1.3.3

테스트용으로 clojure 프로젝트를 만들어 봅니다.
   
$ mkdir ~/tmp
$ cd ~/tmp
$ lein new test-project
$ cd test-project
$ lein deps

실제로 slime 하고 연동해 보기로 합니다.
   
$ emacs project.clj


clj 파일을 열어서 Emacs 상에서 다음과 같이 명령을 입력해 주면

M-x clojure-jack-in

바로 Slime 하고 연동되서 뜨는 것을 확인하실 수 있습니다.
 


Emacs 를 쓰다보면 서버에 Emacs 설치해서 ssh 로 접속해서 Emacs-nox 를 이용해서 편집할 경우가 생긴다. 하지만 너무 귀찮지 않은가? 이런 경우를 위해서 존재하는 것이 Tramp 모드입니다.

최신버젼에는 기본적으로 포함되는 것 같으니 그 부분을 살펴보기로 하겠습니다.

OSX: Lion 10.7.x 버젼

Emacs: 23.x 버젼

에서 테스트 했습니다.


C-x C-f /아이디@호스트명:


위와 같이 입력해주면 '저절로' 원격 호스트로 붙어서 파일을 가져올 수가 있습니다. 그러면 로컬에서 세팅된 대로 파일을 수정할 수가 있습니다.


ps. 티스토리 바뀐 에디터 - 진짜 마음에 안 드는군요.


"실제로 고수인 것도 중요하지만, 고수처럼 보이는 것 또한 중요하다"

제가 늘상 하고 다니는 이야기 입니다. 사람은 인식의 동물입니다. 아무리 고수라고 하더라도 평범하게 보이면 사람들은 깔보는 법입니다. 사실 그런 태도를 불식시키기 위한 행동의 일환입니다. Ubuntu, Console , Terminal, Emacs, Conkeror 등을 남들이 보면 '엇 저게 뭐지?' 라고 볼 수 있는 것을 잘 쓰면 사람들은 놀랍니다. 게다가 자신의 이해범주를 벗어난 것을 보면 사람들은 쉽게 포기합니다. 그리고 합리적으로 빠르게 결정짓습니다. "고수인가 보다.." - 혹은 '오타쿠 인가 보다..'

자 서론이 길었습니다. 컨커러 (conkeror) 는 Emacs 와 같이 단축키로 브라우징을 하는 Emacs 형 브라우져 입니다. 즉 마우스를 거의 쓸일이 없는 (사실은 약간 써야 합니다. 아직은 불완전 해서리..) 브라우져 입니다. Emacs 를 사용하는 사람이라면 한번쯤은 써볼만 합니다. (설치는 http://conkeror.org/#InstallationandStartup 에서) 게다가 이런걸로 브라우징을 하고 있으면 남들이 특이하게 고수로 봅니다. (누누이 말하지만 겉보기 포스가 중요합니다.)

회사에서 일하다 보면 정말 귀찮은 보안정책이 저를 귀찮게 합니다. 사실 보안정책이라는 것은 70%의 사람을 통제하기 위함이지요. (저는 그 70% 안에 안들어간다고 생각합니다) 가장 쉽게 'ssh 터널링'이라는 것을 쓰면 대부분의 방화벽을 뚫을 수가 있습니다. 이 이야기는 'ssh 터널링'을 이미 쓰고 있다고 가정하고 글을 쓰는 것입니다.

그래서 컨커러를 쓰다 보면 proxy 설정을 할 필요가 있습니다. 그런데 컨커러는 아직 개발중이라 설정 창이라는 개념이 없는 듯합니다. 그래서 Mozilla 의 설정하는 방법을 몇개 차용했습니다.

이제부터 방법입니다.

1. 컨커러 (conkeror) 의 주소창에서 about:config 를 입력합니다.

2. 다음 그림과 같이 입력합니다. 굵은 부분만 써주시면 됩니다. 10008 은 자신의 터널링 포트를 적어주시면 됩니다.



이제부터 회사가 막아논 사이트를 즐겁게 돌아다니면 됩니다.


저번 포스트 에서 Clojure 와 Slime 을 연결해봤습니다. 그런데 REPL 에서 색이 안 이쁘더군요. 간단하게 색을 집어넣는 방법을 설명하겠습니다.

.emacs 파일을 열어서 맨 아래쪽에 다음 과 같은 내용을 추가해 줍니다.

(add-hook 'slime-repl-mode-hook (defun clojure-mode-slime-font-lock () (let (font-lock-mode) (clojure-mode-font-lock-setup))))

끝!!


 이맥스 (Emacs) 에서 영문 폰트는 기본적으로 지정해 줄 수가 있습니다. 한글하고 일어 한문은 지정하는 여러가지 방법이 있지만 이 방법이 가장 쉬운듯 해서 정리해 봤습니다. 

EDIT:
  나눔 고딕 폰트 설치를 위해서 먼저 나눔고딕 폰트를 설치해야 할 필요가 있겠지요?
  나눔고딕 페이지 이동

osx 10.6 (SnowLeopard)
테스트 클라이언트 (Client) : Aquamacs 2.1 

이고 .emacs 파일에 다음과 같이 써 주면 됩니다. 


  (set-fontset-font "fontset-default" '(#x1100 . #xffdc)  '("NANumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" '(#xe0bc . #xf66e)  '("NanumGothicCoding" . "unicode-bmp")) ;
  (set-fontset-font "fontset-default" 'kana '("AppleGothic" . "unicode-bmp"))
  (set-fontset-font "fontset-default" 'han '("AppleGothic" . "unicode-bmp"))


EDIT : 저보다 더 깔끔하게 수정하신 분이 계셔서 그분의 블로그를 링크합니다.
  원문 보기 : http://seorenn.blogspot.com/2011/04/emacs_24.html

(set-face-font 'default "Monaco-12")
(set-fontset-font "fontset-default" '(#x1100 . #xffdc)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" '(#xe0bc . #xf66e)
                  '("NanumGothicOTF" . "iso10646-1"))
(set-fontset-font "fontset-default" 'kana
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'han
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'japanese-jisx0208
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))
(set-fontset-font "fontset-default" 'katakana-jisx0201
                  '("Hiragino Kaku Gothic Pro" . "iso10646-1"))

(setq face-font-rescale-alist
      '((".*hiragino.*" . 1.2)
        (".*nanum.*" . 1.3)))


제 설정하고 바뀐 부분은 기본 폰트를 지정해 주신 것 (보통은 지정 안해주면  Monaco 를 쓰게 되어 있으나 나중에 혹시 Consolas 로 바꿀때 사용할려고 남겨뒀습니다. 그리고 폰트 이름이 바꼈습니다. (저는 예전 폰트 이름 그대로 사용중) 그리고 크기 조절이 들어간 것이 차이가 있습니다.


한글은 나눔고딕 코딩으로 지정해 줬습니다. 그런데 아쉬운건 나눔고딕 코딩이 한자 폰트가 빠졌다는 것이겠지요. 그래서 다른 코딩 폰트를 지정해 줘야 하는데 영문 폰트로 알아내는 것이 귀찮더군요. 그래서 제일 만만한 애플 고딕으로 지정해 줬습니다. 



테스트 화면 입니다. 






우분투 (11.10) 에서 Emacs 를 콘솔모드로 (Console Mode) 로 사용중입니다. 뭐 다 괜찮다고는 말할 수 없지만 그럭저럭 사용하고 있습니다. 그런데 단어 뒤로 옮기는 명령인 Meta-B 를 누를때마다 (보통은 Alt-B 를 누름) 터미널의 메뉴가 뜨는 것입니다. 당연히 사용하기 짜증이 나겠지요? 그 문제를 해결하는 방법입니다.

터미널 '메뉴' -> 'Edit' -> 'KeyBoard Shortcuts..' 로 이동해서

Enable menu access keys (such as Alt+F to open the File menu) 라는 것 앞의 체크박스를 해제 해 줍니다.


Meta-B 기능을 바로 사용하실 수 있습니다.


저번 포스트 에서 빌드가 끝나서 설치를 한 emacs 를 실행해 보면 아마도 에러가 발생할 것입니다. (죄송합니다..)

emacs: Cannot open termcap database file

구글신에게 신탁을 부탁하니 다음과 같은 라이브러리가 없어서 에러가 난다 하시더군요

libncurses5-dev

그래서 아래의 url 로 이동하여

https://launchpad.net/ubuntu/+source/ncurses/5.9-1ubuntu5/+build/2789460
( 5.9-1ubuntu5 버젼으로 맞춰줘야 하기 때문에 위 url 로 이동해야 합니다. )

libncurses5-dev_5.9-1ubuntu5_i386.deb (233.6 KiB) 

이 버젼을 받아서 설치해 줍니다. 설치 방법은 우분투의 적당한 곳에 옮기고

$ sudo dpkg -i libncurses5-dev_5.9-1ubuntu5_i386.deb

로 설치해 줍니다. (dpkg -r 하면 제거 합니다. install/remove )
아마 저와 같은 환경이라면 설치가 안 될것입니다. 의존성 에러가 발생하는데

libtinfo-dev (= 5.9-1ubuntu5)

위의 패키지를 설치해 줘야 합니다. 아래 보이는 url 로 이동하여

https://launchpad.net/ubuntu/+source/ncurses/5.9-1ubuntu5/+build/2789460

libtinfo-dev_5.9-1ubuntu5_i386.deb (62.9 KiB)

위 버젼을 다운로드 받아서 우분투의 적당한 곳에 옮기고 다음과 같이 명령을 실행합니다.

$ sudo dpkg -i libtinfo-dev_5.9-1ubuntu5_i386.deb

설치가 되면 다시 설치 실패했던 libncurses5-dev_5.9-1ubuntu5_i386.deb 를 설치해줍니다. 다음과 같은 명령을 실행

$ sudo dpkg -i libncurses5-dev_5.9-1ubuntu5_i386.deb


configure 를 다시 실행해주고 make 를 실행해서 설치해 줍니다.

$ ./configure --without-x --with-crt-dir=/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/

$ make
$ sudo make install

여기까지 따라해 주시면 드디어 콘솔상에서 이맥스가 실행되는 것을 구경하실 수 있습니다.


지금 일하는 곳이 버추얼박스 (VirtualBox) 에서 네트워크 드라이버가 안잡히게 하는 멋진 보안 환경 때문에 공유폴더를 이용해서 파일을 복사하여 수동으로 설치하게 되어 있습니다. 따라서 GTK 를 써야만 하는 X 를 지원하는 Emacs 는 엄두도 못 내고 , Console 모드로 컴파일 해서 사용할려고 하다가 에러가 발생해서 해결하는 방법을 알아보겠습니다.

Emacs (23.4) 를 우분투 (11.10) 에서 수동으로 컴파일 할때 발생하는 문제입니다.

make[1]: *** No rule to make target `/usr/lib/crt1.o', needed by `temacs'.  Stop.


crt1.o 때문에 에러가 발생한 것임을 알 수가 있습니다.

$ gcc -print-file-name=crt1.o
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o

이렇게 위치 확인을 해주고

$ ./configure --without-x --with-crt-dir=/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/


이런식으로 crt 가 위치하는 디렉토리를 포함시켜서 configure 를 다시 실행해주고

$ make
$ sudo make install

하면 됩니다. 열악한 환경에서 서버 개발을 하는 모든 개발자들 분 파이팅!!




기존 계정에서 실행하는 것은 문제가 없는데 , 네트워크 상에서 (즉 WorkGroup 으로 묶인 계정으로) 로그인 해서 사용할려고 실행할 때 발생하는 에러를 해결하는 방법 입니다.

   
  Debugger entered--Lisp error: (error "The directory ~/.emacs.d/server is unsafe")
     signal(error ("The directory ~/.emacs.d/server is unsafe"))
     error("The directory %s is unsafe" "~/.emacs.d/server")
     server-ensure-safe-dir("~\\.emacs.d\\server\\")
     server-start(nil)
     call-interactively(server-start t nil)
     execute-extended-command(nil)
     call-interactively(execute-extended-command nil nil)


대충 이런 식으로 에러가 발생합니다. 붉은색 으로 표시된 디렉토리 이름은 상황에 따라 다르게 나옵니다. 제 경우에는 위와는 살짝 다르게 "C:\Users\sdssss\AppData\Roaming\.emacs.d\server" 이런식으로 표시 됐습니다.

이유는 간단합니다. 붉은색 으로 표시되는 디렉토리의 소유자 (Owner)가 다르기 때문입니다. 소유자를 바꿔주던가 하는 식으로 해결하는 방법도 있지만 저는

.emacs 파일을 열어서 맨 아래쪽에 다음과 같이 추가해 줍니다.

  
(require 'server)
   (when (and (= emacs-major-version 23)
           (= emacs-minor-version 1)
           (equal window-system 'w32))
   (defun server-ensure-safe-dir (dir) "Noop" t))
   (server-start)


간단하게 설명하자면 server-ensure-safe-dir 이라는 함수가 안전한지 여부를 확인하는 함수인데 소유자 건으로 이 함수에서 에러를 뱉어 내는 것입니다. 이 함수를 무조건 t 만 리턴하는 거수기 함수로 바꿔버리면 모든 것은 간단하게 끝이 납니다.

그리고 추가로 "C:\Users\sdssss\AppData\Roaming\.emacs.d\server"  이 디렉토리 의 마지막 즉 server 디렉토리를 $HOME/.emacs.d 안으로 복사해줍니다. 이건 또 왜 해주냐면, server-ensure-safe-dir 함수가 거수기가 되 버려서 , $HOME 밑에서 server 의 존재를 찾습니다. 따라서 복사해주면 모든 것이 OK 입니다.





최근에 다시 피씨를 세팅할 일이 생겨서 (Windows 7) EmacsW32 최신 버젼과 서브버젼 (Subversion) 최신 버젼을 설치하게 되었습니다.

어찌된 일인지 갑자기 잘 되던 SVN 과 Emacs 의 연동이 안되더군요. 그래서 여러가지 방법을 시도하던 와중에 문제점을 발견했습니다.

디렉토리 구조중 최상위 (Root) 를 제외하고는 .svn 폴더들이 전부 사라진 것이였습니다.


이것도 모르고 Emacs 를 버젼별로 깔아대는 삽질을 하고 있었습니다. 결국 비효율적이라고 판단한 svn 개발팀에서 하위 디렉토리의 .svn 폴더들을 삭제하는 결정을 한 것이겠지요. 따라서 엄한 emacs 사용자들만 야단이 났습니다. 지금 릴리즈 되는 버젼들에는 저 변동사항이 적용이 안 되어 있기 때문이지요.

해결 방법은

1. http://bzr.savannah.gnu.org/lh/emacs/trunk/files/head:/lisp/vc/ 사이트에 가셔서 vc-svn.el 을 다운 받고

2. emacs 가 설치되어 있는 곳의 lisp 파일 모아둔 곳으로 이동하셔서 (제 경우에는 C:\Program Files\Emacs\emacs\lisp 에 있습니다) vc-svn.el 과 vc-svn.elc 를 삭제하시고

3. 1에서 다운 받은 파일을 대신 복사해 주는 것입니다. (vc-svn.el 을 컴파일 하고 안하고는 자유 이십니다. 전 귀찮아서 안했음)

완벽하게 해결이 된 것을 확인하 실 수 있습니다.

+ Recent posts