예전에 Emacs에서 Rails 코딩하기라고 올린 글이 있었는데, 이번에 루비코코아를 살펴보면서 이맥스를 사용하다보니, 대문자 C가 안쳐지는 문제를 발견했다; 해결 방법은 .emacs 파일의 다음 라인을
(define-key ruby-mode-map "C-m" 'newline-and-indent)
=>
(define-key ruby-mode-map "\C-m" 'newline-and-indent)
이와 같이 고쳐주면 된다.
2008년 10월 14일 화요일
2008년 1월 9일 수요일
Emacs에서 Common Lisp Hyperspec 보기
리습 코드를 읽다보면 아무래도 모르는 함수나 매크로에 대한 레퍼런스를 찾아볼 필요가 생긴다. Common Lisp Hyperspec이 웹에 있고 HTML 파일을 내려받아 로컬에 저장해 놓고 볼 수도 있지만 인덱스를 일일이 클릭해가며 모르는 심볼을 찾아보는 것은 귀찮은 일이다.
보다 나은 방법은 커서가 심볼 위에 있을 때 ctrl+c ctrl+d h 를 입력하는 것이다(slime이 실행되어 있는 상태여야 한다). 그러면 해당 심볼에 해당하는 Hyperspec 웹 페이지가 뜨게 된다. 하지만 웹 페이지를 띄우는 방법은 느리고, Emacs를 벗어나야 한다는 게 불편하다. 그래서 Emacs 내에서 Hyperspec을 보는 방법을 적어보려고 한다.
Reference:
http://www.foldr.org/~michaelw/log/programming/lisp/dpans-texinfo-edition
http://www.phys.au.dk/~harder/dpans.html
1. Texinfo가 필요하다. 최신 버전을 다운로드 받아서 설치한다. 설치는 내려받은 소스의 압축을 푼 폴더에서 다음과 같이 입력하면 된다.
./configure
make
sudo make install
그런데 소스 폴더에 있는 INSTALL 파일을 읽어보면 위와 같은 일반적인 설치 과정만으로는 texinfo.tex 와 *.tex 파일들은 설치되지 않으니 추가적인 설치 명령이 필요하다고 하는데, 파일에서 말하는 TEXMF라는 게 무엇인지 모르겠다. 일단 위와 같은 일반적인 설치만으로도 목적을 달성하는 데는 별 문제가 없었으니 넘어가자.
2. dpans2texi-1.03.tar.gz를 다운 받아 압축을 푼 후 압축이 풀린 디렉토리에서 다음과 같이 입력한다.
./configure
wget ftp://parcftp.xerox.com/pub/cl/dpANS3/*
wget ftp://parcftp.xerox.com/pub/cl/dpANS3R/*
make
sudo make install
만일 wget이 없다면 설치하도록 하자. 소스 파일을 다운로드해서 압축을 푼 후 디렉토리에서 다음과 같이 입력하면 된다.
./configure
make
sudo make install
3. .emacs 파일(emacs startup file)에 다음과 같이 추가한다.
이제 리습 코드의 심볼 위에 커서가 있을 때 ctrl+h S 를 입력하고 엔터를 치면 해당 심볼에 대한 레퍼런스가 바로 뜰 것이다.(글의 시작 부분에 링크한 Reference에는 ctrl+h ctrl+i 라고 써 있지만 최근 버전의 Emacs에서 키 바인딩이 바뀌면서 기존 단축키가 먹지 않는다. ctrl+h 대문자S 를 눌러야 한다.) 그리고 ctrl+h i 를 눌러서 info 페이지로 들어가면 Programming 카테고리에 ANSI Common Lisp이 생긴 것을 볼 수 있다.
다른 방법을 소개하고 있는 페이지들도 링크해본다.
http://www.newartisans.com/blog_files/hyperspec.info.for.emacs.php
http://bc.tech.coop/blog/031002.html
http://lemonodor.com/archives/2002/02/living_in_emacs.html
보다 나은 방법은 커서가 심볼 위에 있을 때 ctrl+c ctrl+d h 를 입력하는 것이다(slime이 실행되어 있는 상태여야 한다). 그러면 해당 심볼에 해당하는 Hyperspec 웹 페이지가 뜨게 된다. 하지만 웹 페이지를 띄우는 방법은 느리고, Emacs를 벗어나야 한다는 게 불편하다. 그래서 Emacs 내에서 Hyperspec을 보는 방법을 적어보려고 한다.
Reference:
http://www.foldr.org/~michaelw/log/programming/lisp/dpans-texinfo-edition
http://www.phys.au.dk/~harder/dpans.html
1. Texinfo가 필요하다. 최신 버전을 다운로드 받아서 설치한다. 설치는 내려받은 소스의 압축을 푼 폴더에서 다음과 같이 입력하면 된다.
./configure
make
sudo make install
그런데 소스 폴더에 있는 INSTALL 파일을 읽어보면 위와 같은 일반적인 설치 과정만으로는 texinfo.tex 와 *.tex 파일들은 설치되지 않으니 추가적인 설치 명령이 필요하다고 하는데, 파일에서 말하는 TEXMF라는 게 무엇인지 모르겠다. 일단 위와 같은 일반적인 설치만으로도 목적을 달성하는 데는 별 문제가 없었으니 넘어가자.
2. dpans2texi-1.03.tar.gz를 다운 받아 압축을 푼 후 압축이 풀린 디렉토리에서 다음과 같이 입력한다.
./configure
wget ftp://parcftp.xerox.com/pub/cl/dpANS3/*
wget ftp://parcftp.xerox.com/pub/cl/dpANS3R/*
make
sudo make install
만일 wget이 없다면 설치하도록 하자. 소스 파일을 다운로드해서 압축을 푼 후 디렉토리에서 다음과 같이 입력하면 된다.
./configure
make
sudo make install
3. .emacs 파일(emacs startup file)에 다음과 같이 추가한다.
(require 'info-look)
(info-lookup-add-help
:mode 'lisp-mode
:regexp "[^][()'\" \t\n]+"
:ignore-case t
:doc-spec '(("(ansicl)Symbol Index" nil nil nil)))
이제 리습 코드의 심볼 위에 커서가 있을 때 ctrl+h S 를 입력하고 엔터를 치면 해당 심볼에 대한 레퍼런스가 바로 뜰 것이다.(글의 시작 부분에 링크한 Reference에는 ctrl+h ctrl+i 라고 써 있지만 최근 버전의 Emacs에서 키 바인딩이 바뀌면서 기존 단축키가 먹지 않는다. ctrl+h 대문자S 를 눌러야 한다.) 그리고 ctrl+h i 를 눌러서 info 페이지로 들어가면 Programming 카테고리에 ANSI Common Lisp이 생긴 것을 볼 수 있다.
다른 방법을 소개하고 있는 페이지들도 링크해본다.
http://www.newartisans.com/blog_files/hyperspec.info.for.emacs.php
http://bc.tech.coop/blog/031002.html
http://lemonodor.com/archives/2002/02/living_in_emacs.html
2008년 1월 8일 화요일
Emacs에서 정규식 테스트하기
Reference:
http://www.newartisans.com/blog_files/regex.tool.for.emacs.php
1. regex-tool.el 파일을 받는다. emacs가 위치한 디렉토리 아래의 site-lisp 디렉토리 또는 /usr/local/share/emacs/site-lisp 디렉토리에 넣으면 된다.
2. .emacs 파일(emacs 시작시에 읽어들이게 되는 설정 파일. 없으면 홈폴더에 만들면 된다.)에 다음 코드를 추가한다.
(load "regex-tool" t) ; load regex-tool if it's available
3. meta+x load-file을 입력해 regex-tool.el 파일을 수동으로 로드해준다. 한 번 그렇게 해 주고 난 뒤에는 meta+x regex-tool 을 치면 정규식 테스트가 가능한 것을 볼 수 있다.
http://www.newartisans.com/blog_files/regex.tool.for.emacs.php
1. regex-tool.el 파일을 받는다. emacs가 위치한 디렉토리 아래의 site-lisp 디렉토리 또는 /usr/local/share/emacs/site-lisp 디렉토리에 넣으면 된다.
2. .emacs 파일(emacs 시작시에 읽어들이게 되는 설정 파일. 없으면 홈폴더에 만들면 된다.)에 다음 코드를 추가한다.
(load "regex-tool" t) ; load regex-tool if it's available
3. meta+x load-file을 입력해 regex-tool.el 파일을 수동으로 로드해준다. 한 번 그렇게 해 주고 난 뒤에는 meta+x regex-tool 을 치면 정규식 테스트가 가능한 것을 볼 수 있다.
2007년 12월 12일 수요일
Emacs에서 Rails 코딩하기
환경: 맥북, 레오파드
레오파드에는 Emacs가 /usr/share/emacs에 기본적으로 깔려있다.
루비와 레일즈 관련 파일들을 위치시켜야 하는 emacs 폴더:
~/emacs.d/ 또는 /usr/share/emacs/site-lisp
둘 중 어느 곳에 위치시키든, 또는 전혀 다른 곳에 위치시키든 상관 없는 것 같다. 뒤에 작성할 .emacs 파일에 파일들이 위치한 경로를 적어주면 된다.
위에서 정한 경로 내에 넣어야 하는 파일:
1. emacs-rails 파일들
http://rubyforge.org/projects/emacs-rails
다음 명령으로도 다운받을 수 있다.
svn co svn://rubyforge.org/var/svn/emacs-rails/trunk emacs-rails
2. snippet.el 파일
http://www.kazmier.com/computer/snippet.el
find-recursive.el 파일
http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt 에서 find-recursive.txt 파일을 받아서 확장자를 el로 변경
inf-ruby.el 파일
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/inf-ruby.el?view=co
그런데 이 파일은 '3. ruby 관련 파일'에서 다운 받으면 그 안에 들어있기 때문에 여기서 다운받을 필요는 없을 것 같다.
3. ruby 관련 파일
위의 파일들만 받으면 ruby-mode와 관련해서 에러가 나기 때문에 ruby 관련 el 파일들도 받아야 하는 것 같다.
http://svn.ruby-lang.org/repos/ruby/trunk/misc/ 이 곳에서 다운 받거나 다음 명령으로도 다운받을 수 있다.
svn export http://svn.ruby-lang.org/repos/ruby/trunk/misc ruby
위와 같은 파일들을 다운 받았으면 rails를 로드하는 .emacs 파일을 작성하여 홈 폴더(~)에 저장해야 한다. site-lisp 디렉토리나 루트(/)에 놓아서는 emacs에 의해 로드되지 않는 것 같았다. .emacs파일의 내용은 다음과 같다.
(setq load-path (cons "파일들이 위치한 경로명" load-path))
(require 'rails)
또는 다음과 같이 작성해도 된다.
(add-to-list 'load-path "파일들이 위치한 경로명")
(require 'rails)
하지만 계속해서 나는 다음과 같은 에러.
Symbol's value as variable is void: dirname
온갖 방법을 다 동원해 봤지만 원인을 알 수가 없었다. 에러에도 불구하고 emacs에서 Meta+X - ruby-mode를 쳐서 ruby-mode로의 전환은 가능했다. 하지만 emacs 시작시에 나는 저 에러는 그냥 넘어가기엔 너무 찜찜하다.
계속해서 실패하다가, 드디어 원인을 알아냈다. snippet.el 파일과 find-recursive.el 파일을 해당 링크로 가서 내용을 복사한 다음 emacs에 붙여넣어 두 파일을 만들었었는데, 붙여넣는 과정에서 잘못이 생긴 듯 싶다. 두 파일을 다시 '링크를 다른 이름으로 저장'하는 식으로 다운받아서 해 보니 모든 것이 순조롭게 돌아간다.
그리고 http://sodonnell.wordpress.com/the-emacs-newbie-guide-for-rails/ 가 가장 설명이 잘 되어 있는 것 같다. 다운 받아야 하는 각 부분이 어떤 역할을 하는지를 잘 설명해 주고 있다. 이 사이트에서는 ruby-mode와 ruby-electric, snippet, find-recursive를 명시적으로 require 하는 식으로 .emacs 파일을 작성했다. 하지만 다른 사이트에서는 .emacs의 내용이 로드할 디렉토리를 지정한 다음 (require 'rails)만 적어주면 된다고 하는 것 같다. 후자처럼 해도 def를 치면 end가 자동으로 생기는 것과 같은 ruby-electric의 기능도 제대로 동작하는 것 같고.. 차이를 잘 모르겠다.
그리고 이 사이트에서는 ECB(emacs code browser)에 대해서도 얘기하고 있는데, ECB를 사용하면 Emacs에서 파일을 열 때 폴더구조와 파일명이 보이기 때문에 편하다. 그런데 이 사이트가 ECB 명령어를 좀 이상하게 적어놓고 있어서 한참 삽질을 하게 만든다; 삽질끝에 알아낸 명령어는 다음과 같다.
ECB 활성화: meta+x ecb-activate
ECB 비활성화: meta+x ecb-deactivate
Jump to the directory window: ctrl+c .gd
Jump to the history window: ctrl+c .gh
Jump to the last window you were in: ctrl+c .gl
Jump to the first editor window ctrl+c .g1
그리고 테스트로 rhtml 파일을 생성해서 편집해 보았는데 html 태그의 indentation이 전혀 제대로 되지 않는다. 어쩔 수 없이 emacs에 원래 있는 html-mode로 전환해서 편집해야 한다.
핫 그런데 방금 rails 프로젝트의 view 디렉토리 내에서 rthml 파일을 생성하니 HTML view RoR이라고 모드가 제대로 뜬다.
References
Emacs for Rails << Software bits and pieces
http://sodonnell.wordpress.com/the-emacs-newbie-guide-for-rails/
rubyforge
http://rubyforge.org/projects/emacs-rails
rails on emacs
http://dima-exe.ru/rails-on-emacs
ruby: installing emacs extensions
http://www.rubygarden.org/Ruby/page/show/InstallingEmacsExtensions
How to use emacs with rails
http://wiki.rubyonrails.org/rails/pages/HowToUseEmacsWithRails
emacs에서 rails를 다루자
http://cafe.naver.com/amagramer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=488
나의 .emacs 코드
레오파드에는 Emacs가 /usr/share/emacs에 기본적으로 깔려있다.
루비와 레일즈 관련 파일들을 위치시켜야 하는 emacs 폴더:
~/emacs.d/ 또는 /usr/share/emacs/site-lisp
둘 중 어느 곳에 위치시키든, 또는 전혀 다른 곳에 위치시키든 상관 없는 것 같다. 뒤에 작성할 .emacs 파일에 파일들이 위치한 경로를 적어주면 된다.
위에서 정한 경로 내에 넣어야 하는 파일:
1. emacs-rails 파일들
http://rubyforge.org/projects/emacs-rails
다음 명령으로도 다운받을 수 있다.
svn co svn://rubyforge.org/var/svn/emacs-rails/trunk emacs-rails
2. snippet.el 파일
http://www.kazmier.com/computer/snippet.el
find-recursive.el 파일
http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt 에서 find-recursive.txt 파일을 받아서 확장자를 el로 변경
inf-ruby.el 파일
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/misc/inf-ruby.el?view=co
그런데 이 파일은 '3. ruby 관련 파일'에서 다운 받으면 그 안에 들어있기 때문에 여기서 다운받을 필요는 없을 것 같다.
3. ruby 관련 파일
위의 파일들만 받으면 ruby-mode와 관련해서 에러가 나기 때문에 ruby 관련 el 파일들도 받아야 하는 것 같다.
http://svn.ruby-lang.org/repos/ruby/trunk/misc/ 이 곳에서 다운 받거나 다음 명령으로도 다운받을 수 있다.
svn export http://svn.ruby-lang.org/repos/ruby/trunk/misc ruby
위와 같은 파일들을 다운 받았으면 rails를 로드하는 .emacs 파일을 작성하여 홈 폴더(~)에 저장해야 한다. site-lisp 디렉토리나 루트(/)에 놓아서는 emacs에 의해 로드되지 않는 것 같았다. .emacs파일의 내용은 다음과 같다.
(setq load-path (cons "파일들이 위치한 경로명" load-path))
(require 'rails)
또는 다음과 같이 작성해도 된다.
(add-to-list 'load-path "파일들이 위치한 경로명")
(require 'rails)
하지만 계속해서 나는 다음과 같은 에러.
Symbol's value as variable is void: dirname
온갖 방법을 다 동원해 봤지만 원인을 알 수가 없었다. 에러에도 불구하고 emacs에서 Meta+X - ruby-mode를 쳐서 ruby-mode로의 전환은 가능했다. 하지만 emacs 시작시에 나는 저 에러는 그냥 넘어가기엔 너무 찜찜하다.
계속해서 실패하다가, 드디어 원인을 알아냈다. snippet.el 파일과 find-recursive.el 파일을 해당 링크로 가서 내용을 복사한 다음 emacs에 붙여넣어 두 파일을 만들었었는데, 붙여넣는 과정에서 잘못이 생긴 듯 싶다. 두 파일을 다시 '링크를 다른 이름으로 저장'하는 식으로 다운받아서 해 보니 모든 것이 순조롭게 돌아간다.
그리고 http://sodonnell.wordpress.com/the-emacs-newbie-guide-for-rails/ 가 가장 설명이 잘 되어 있는 것 같다. 다운 받아야 하는 각 부분이 어떤 역할을 하는지를 잘 설명해 주고 있다. 이 사이트에서는 ruby-mode와 ruby-electric, snippet, find-recursive를 명시적으로 require 하는 식으로 .emacs 파일을 작성했다. 하지만 다른 사이트에서는 .emacs의 내용이 로드할 디렉토리를 지정한 다음 (require 'rails)만 적어주면 된다고 하는 것 같다. 후자처럼 해도 def를 치면 end가 자동으로 생기는 것과 같은 ruby-electric의 기능도 제대로 동작하는 것 같고.. 차이를 잘 모르겠다.
그리고 이 사이트에서는 ECB(emacs code browser)에 대해서도 얘기하고 있는데, ECB를 사용하면 Emacs에서 파일을 열 때 폴더구조와 파일명이 보이기 때문에 편하다. 그런데 이 사이트가 ECB 명령어를 좀 이상하게 적어놓고 있어서 한참 삽질을 하게 만든다; 삽질끝에 알아낸 명령어는 다음과 같다.
ECB 활성화: meta+x ecb-activate
ECB 비활성화: meta+x ecb-deactivate
Jump to the directory window: ctrl+c .gd
Jump to the history window: ctrl+c .gh
Jump to the last window you were in: ctrl+c .gl
Jump to the first editor window ctrl+c .g1
그리고 테스트로 rhtml 파일을 생성해서 편집해 보았는데 html 태그의 indentation이 전혀 제대로 되지 않는다. 어쩔 수 없이 emacs에 원래 있는 html-mode로 전환해서 편집해야 한다.
핫 그런데 방금 rails 프로젝트의 view 디렉토리 내에서 rthml 파일을 생성하니 HTML view RoR이라고 모드가 제대로 뜬다.
References
Emacs for Rails << Software bits and pieces
http://sodonnell.wordpress.com/the-emacs-newbie-guide-for-rails/
rubyforge
http://rubyforge.org/projects/emacs-rails
rails on emacs
http://dima-exe.ru/rails-on-emacs
ruby: installing emacs extensions
http://www.rubygarden.org/Ruby/page/show/InstallingEmacsExtensions
How to use emacs with rails
http://wiki.rubyonrails.org/rails/pages/HowToUseEmacsWithRails
emacs에서 rails를 다루자
http://cafe.naver.com/amagramer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=488
나의 .emacs 코드
;;Rails with Emacs
;Allows syntax highlighting to work, among other things
(global-font-lock-mode 1)
; loads ruby mode when a .rb file is opened.
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/ruby")
(autoload 'ruby-mode "ruby-mode" "Major mode for editing ruby scripts." t)
(setq auto-mode-alist (cons '(".rb$" . ruby-mode) auto-mode-alist))
(setq auto-mode-alist (cons '(".rhtml$" . html-mode) auto-mode-alist))
; adding ruby electric
(add-hook 'ruby-mode-hook
(lambda()
(add-hook 'local-write-file-hooks
'(lambda()
(save-excursion
(untabify (point-min) (point-max))
(delete-trailing-whitespace)
)))
(set (make-local-variable 'indent-tabs-mode) 'nil)
(set (make-local-variable 'tab-width) 2)
(imenu-add-to-menubar "IMENU")
(define-key ruby-mode-map "\C-m" 'newline-and-indent) ;Not sure if this line is 100% right but it works!
(require 'ruby-electric)
(ruby-electric-mode t)
))
;These lines are required for ECB
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/eieio-0.17")
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/speedbar-0.14beta4")
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/semantic-1.4.4")
(setq semantic-load-turn-everything-on t)
(require 'semantic-load)
; This installs ecb - it is activated with M-x ecb-activate
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/ecb-snap")
(require 'ecb-autoloads)
(setq ecb-gzip-setup (quote cons))
(setq ecb-layout-name "left14")
(setq ecb-layout-window-sizes (quote (("left14" (0.2564102564102564 . 0.6949152542372882) (0.2564102564102564 . 0.23728813559322035)))))
(setq ecb-source-path (quote ("~/work")))
; needed for rails mode
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/snippet")
(require 'snippet)
(require 'find-recursive)
(add-to-list 'load-path "/Users/chanwoo/.emacs.d/emacs-rails")
(require 'rails)
Installing Common Lisp - SBCL
환경: 맥북, 레오파드
레오파드에는 Emacs가 /usr/share/emacs에 기본적으로 깔려 있다. 리습 구현(implementation)과 SLIME(The Superior Lisp Interaction Mode for Emacs, 루비의 irb 같은 것이다. 물론 이런 방식의 프로그래밍 환경을 제공한 것은 리습이 제일 처음인 것으로 알고 있다.)만 설치하고 Emacs와 연결시키면 된다.
리습은 다른 언어와 달리 구현이 여러 개다. 각 구현마다 지원하는 바가 조금씩 다르고.. 따라서 자신의 취향에 맞는 구현을 선택하면 된다. 구현에는 Clisp, Allegro Common Lisp, SBCL, OpenMCL, Lispworks 등등이 있는데 Lispworks같은 경우에는 IDE 형태로 지원이 되고 깔끔하지만 상용이다. 상용 리습 구현들은 그 값을 하기 위해서 리습으로 짠 코드를 데스크탑 어플리케이션으로 딜리버리 하는 것을 쉽게 해 준다거나, 기술적 지원들을 해준다고 하지만, 당장 나와는 관계가 없다. 개인 버전은 무료라지만 여러 가지 제약이 많기 때문에 그냥 Emacs에 다른 리습 구현을 연결해 사용하는 게 나을 것 같다. Clisp을 받으려고 했다가 맥용이 어떤 것인지가 확실치 않아서, 맥 플랫폼 버전이 명시되어 있는 SBCL을 다운받았다.
다운받고 압축을 푼 후 해당 디렉토리로 가서
sudo sh install.sh
을 쳤는데, 'GNU Make not found'라고 나오면서 설치가 안된다. 패스의 문제인가 하고 set을 쳐 봤는데 PATH에 /usr/bin은 추가가 되어 있다. /usr/bin을 살펴보니 make가 있어야 하는데 make가 없다. Xcode 설치를 안 하면 이렇다.
Xcode를 설치하려면 레오파드 설치 시디를 넣은 후 Optional Installs를 선택하고 Xcode Tools를 선택해서 XcodeTools.mpkg 를 더블클릭하면 된다. 그러면 make나 gcc등이 다 설치가 된다.
다시 SBCL 압축을 푼 폴더로 이동해서 sudo sh install.sh를 치니 /usr/local/bin에 정상적으로 설치가 된다. 이제 SLIME을 다운받자. SLIME은 다운받고 압축을 풀기만 하면 되고 별도의 설치가 필요없다. 내 경우는 /usr/local/bin/slime-2.1로 복사해 놓았다. (다운받은 디렉토리에서 'sudo cp -r slime-2.1 /usr/local/bin' 과 같이 하면 /usr/local/bin으로 복사된다. 복사 후 원본 디렉토리를 지우려면 'rm -rf 디렉토리명'을 치면 된다.)
이제 .emacs 파일에 구현과 SLIME을 부르는 부분만 추가하면 된다. .emacs 파일은 홀 폴더(~) 안에 있다.('ls -a'로 검색하면 .로 시작하는 파일도 다 보인다.) 없다면 새로 만들면 된다.('emacs .emacs') .emacs 파일 안에 다음 내용을 추가한다.(다운받은 SLIME 폴더의 README 파일에 어떻게 해야 되는지 나와 있다.)
(add-to-list 'load-path "/usr/local/bin/slime-2.1") ;your SLIME directory
(setq inferior-lisp-program "/usr/local/bin/sbcl") ;your Lisp system
(require 'slime)
(slime-setup)
물론 ';' 뒤의 주석은 칠 필요 없고, 디렉토리 명은 자신의 SLIME과 리습 구현이 있는 디렉토리를 적어야 한다.
Emacs 를 시작한 뒤, Meta+x slime 을 치면 SLIME이 시작되면서 우아하게 CL-USER>가 등장한다. 만일 터미널에서 Emacs를 실행했을 때 메타 키가 먹지 않는다면 터미널 -> 환경 설정 -> 키보드 -> 'option을 메타 키로 사용'에 체크한다.
레오파드에는 Emacs가 /usr/share/emacs에 기본적으로 깔려 있다. 리습 구현(implementation)과 SLIME(The Superior Lisp Interaction Mode for Emacs, 루비의 irb 같은 것이다. 물론 이런 방식의 프로그래밍 환경을 제공한 것은 리습이 제일 처음인 것으로 알고 있다.)만 설치하고 Emacs와 연결시키면 된다.
리습은 다른 언어와 달리 구현이 여러 개다. 각 구현마다 지원하는 바가 조금씩 다르고.. 따라서 자신의 취향에 맞는 구현을 선택하면 된다. 구현에는 Clisp, Allegro Common Lisp, SBCL, OpenMCL, Lispworks 등등이 있는데 Lispworks같은 경우에는 IDE 형태로 지원이 되고 깔끔하지만 상용이다. 상용 리습 구현들은 그 값을 하기 위해서 리습으로 짠 코드를 데스크탑 어플리케이션으로 딜리버리 하는 것을 쉽게 해 준다거나, 기술적 지원들을 해준다고 하지만, 당장 나와는 관계가 없다. 개인 버전은 무료라지만 여러 가지 제약이 많기 때문에 그냥 Emacs에 다른 리습 구현을 연결해 사용하는 게 나을 것 같다. Clisp을 받으려고 했다가 맥용이 어떤 것인지가 확실치 않아서, 맥 플랫폼 버전이 명시되어 있는 SBCL을 다운받았다.
다운받고 압축을 푼 후 해당 디렉토리로 가서
sudo sh install.sh
을 쳤는데, 'GNU Make not found'라고 나오면서 설치가 안된다. 패스의 문제인가 하고 set을 쳐 봤는데 PATH에 /usr/bin은 추가가 되어 있다. /usr/bin을 살펴보니 make가 있어야 하는데 make가 없다. Xcode 설치를 안 하면 이렇다.
Xcode를 설치하려면 레오파드 설치 시디를 넣은 후 Optional Installs를 선택하고 Xcode Tools를 선택해서 XcodeTools.mpkg 를 더블클릭하면 된다. 그러면 make나 gcc등이 다 설치가 된다.
다시 SBCL 압축을 푼 폴더로 이동해서 sudo sh install.sh를 치니 /usr/local/bin에 정상적으로 설치가 된다. 이제 SLIME을 다운받자. SLIME은 다운받고 압축을 풀기만 하면 되고 별도의 설치가 필요없다. 내 경우는 /usr/local/bin/slime-2.1로 복사해 놓았다. (다운받은 디렉토리에서 'sudo cp -r slime-2.1 /usr/local/bin' 과 같이 하면 /usr/local/bin으로 복사된다. 복사 후 원본 디렉토리를 지우려면 'rm -rf 디렉토리명'을 치면 된다.)
이제 .emacs 파일에 구현과 SLIME을 부르는 부분만 추가하면 된다. .emacs 파일은 홀 폴더(~) 안에 있다.('ls -a'로 검색하면 .로 시작하는 파일도 다 보인다.) 없다면 새로 만들면 된다.('emacs .emacs') .emacs 파일 안에 다음 내용을 추가한다.(다운받은 SLIME 폴더의 README 파일에 어떻게 해야 되는지 나와 있다.)
(add-to-list 'load-path "/usr/local/bin/slime-2.1") ;your SLIME directory
(setq inferior-lisp-program "/usr/local/bin/sbcl") ;your Lisp system
(require 'slime)
(slime-setup)
물론 ';' 뒤의 주석은 칠 필요 없고, 디렉토리 명은 자신의 SLIME과 리습 구현이 있는 디렉토리를 적어야 한다.
Emacs 를 시작한 뒤, Meta+x slime 을 치면 SLIME이 시작되면서 우아하게 CL-USER>가 등장한다. 만일 터미널에서 Emacs를 실행했을 때 메타 키가 먹지 않는다면 터미널 -> 환경 설정 -> 키보드 -> 'option을 메타 키로 사용'에 체크한다.
피드 구독하기:
글 (Atom)