emacs ruby completion 실험 노트...

primewizard의 이미지

실험 환경:
데비안 lenny
emacs 23

1) 루비 관련 패키지를 설치한다.

# apt-get install ruby ruby-elisp rubygems ri irb

2) 루비젬으로 관련 라이브러리를 설치한다.

# gem install rcodetools
# gem install fastri

현재(2009년 11월 27일) 공식 저장소에서 rubygems 을 설치하고 젬에서 라이브러리를 설치하려고 하면 에러납니다.
# gem list -r
 
*** REMOTE GEMS ***
 
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    bad response Forbidden 403 (<a href="http://gems.rubyforge.org/latest_specs.4.8" rel="nofollow">http://gems.rubyforge.org/latest_specs.4.8</a>)

해결 방법은 backports 저장소를 추가하고 backports 에 있는 rubygems 을 설치하시면 됩니다.
http://www.backports.org/

3) ri-emacs 다운로드 받고 적당히 설치한다.
http://rubyforge.org/projects/ri-emacs/

4) 일단은 rcodetools 테스트
.emacs 파일에 아래 추가

(setenv "PATH" (concat "/var/lib/gems/1.8/bin:"
		       (getenv "PATH") )  )
 
(add-to-list 'load-path "/var/lib/gems/1.8/gems/rcodetools-0.8.5.0")
(require 'rcodetools)

위 PATH 설정 안하면 아래 에러 나옴 (~/.profile 나 ~/.bashrc 에 PATH 설정을 해도됨)
ruby: No such file or directory -- rct-complete (LoadError)

M-x rct-complete-symbol(or rct-complete-symbol--normal)

5) anything-rcodetools 테스트
.emacs 에 아래 추가

(add-to-list 'load-path "/var/lib/gems/1.8/gems/rcodetools-0.8.5.0")
(require 'anything-rcodetools)

anything-rcodetools 을 로드하면 rct-complete-symbol 가 rct-complete-symbol--anything 으로 바뀜
M-x rct-complete-symbol(or rct-complete-symbol--anything)

6) ri-emacs 테스트
.emacs 파일에 아래 추가

(add-to-list 'load-path "/설치/경로/ri-emacs")
 
(require 'ri-emacs)
(setq ri-ruby-script (expand-file-name "/설치/경로/ri-emacs.rb"))

ri-ruby-script 는 절대 경로가 되게 설정해 주어야 함
안 그러면 아래 에러 나옴
Process is not running.

M-x ri

M-x ri-ruby-complete-symbol

M-x ri-ruby-show-args

7) auto-complete 과 짬봉
http://www.cx4a.org/pub/auto-complete-ruby.el

8) 문제점
rct-complete-symbol(rct-complete-symbol--normal) 는 self 를 자동완성 못 시킴
따라서 rct-complete-symbol--anything 도 self 를 자동완성 못 함
그러나 ri-ruby-complete-symbol 은 가능한 듯

9) emacs rails 테스트
http://dima-exe.ru/rails-on-emacs
rails-on-emacs 를 설치하면 아래 명령어로 자동완성을 할 수 있는데 좋은 것 같지는 않음
M-x indent-or-complete

그러나 ruby on rails를 본격적으로 한다면 사용해야 할 것 같음

참고로 rinari 라는 것도 있습니다.
http://rinari.rubyforge.org/

결론:
emacs에서 ruby 코딩은 python 코딩처럼 뭔가 1% 부족한 느낌입니다.
wisent parser 아시는 고수분께서 자동완성 기능을 cedet-semantic에 통합시켜 주셨으면...^^;
ruby 도 eclipse 로 코딩해야 하나...

--
참고하시라고 제 루비관련 설정 파일 올립니다.
emacs-ruby.tar.gz
ri-emacs 와 auto-complete 관련해서 소스 코드를 좀 수정했고
사용하실려면 auto-complete,anything 설치 경로 수정이 필요합니다.

--
추가:
rinari 사용하실 분은 http://github.com/eschulte/jump.el 에서 jump.el 다운로드 받고
아래 추가해야 합니다.

(add-to-list 'load-path "~/설치/경로/jump.el")

그렇지 않으면 아래 에러 납니다.
Debugger entered--Lisp error: (file-error "Cannot open load file" "jump")

저 같은 경우 jump.el 폴더를 jump 로 바꾸고(파일명과 헷갈려서...) 아래처럼 추가했습니다.
(add-to-list 'load-path "~/설치/경로/jump")
(add-to-list 'load-path "~/설치/경로/rinari")
(require 'rinari)

참고로 아래 키 누르면 rinari 단축키 리스트 나옵니다.
C-c ; C-h or C-c ' C-h

그리고 혹시 rhtml 파일 편집하는데 eruby-nxhtml-mumamo-mode(nxhtml) 사용하는 분은
xhtml 형식으로 html 태그를 사용해야 C-M-\ (indent-region)로 정렬할 때 레이아웃이 깨지지 않습니다.
예) <br />, <p> </p>
oppor의 이미지

이맥스는 뭔가 항상 부족하네요.ㅋ
최적화의 극에 다가간 궁극의 편집기가 될 수 있을까요??

뭐.. 좋은 IDE 환경이라곤 하지만 초보에게는 어려운게 사실...

초보는 그냥 이클립스나 VC를 쓸 수 밖에 없지요. 흑흑...

jj의 이미지

off-topic이지만... 폰트참 이쁘네요, monacoㄴ가요?;;
루비가 python보다 코드는 참 이뻐보여요;;

--
Life is short. damn short...

--
Life is short. damn short...

primewizard의 이미지

에디터 내부 글꼴은 DejaVu Sans Mono 입니다.