2012-11-09 101 views
1

我試過安裝el4r,這是一種EmacsRuby如何在emacs 24中安裝el4r?

我作爲descibed基本上安裝了一切here

我的設置

我使用的是默認使用rbenv提供從Ubuntu的12.10和我的默認紅寶石版本是紅寶石1.9.3p286(2012-10 emacs的24 -12修訂37165)[x86_64的Linux的]

雖然我測試一切我有包含以下文本

;; Source: http://marc-bowes.com/2012/03/10/rbenv-with-emacs.html 
;; Setting rbenv path 
(setenv "PATH" (concat (getenv "HOME") "/.rbenv/shims:" 
       (getenv "HOME") "/.rbenv/bin:" 
       (getenv "PATH"))) 
(setq exec-path (cons (concat (getenv "HOME") "/.rbenv/shims") 
       (cons (concat (getenv "HOME") "/.rbenv/bin") 
       exec-path))) 

;; Beginning of the el4r block: 
;; RCtool generated this block automatically. DO NOT MODIFY this block! 
(add-to-list 'load-path "/home/mars/.rbenv/versions/1.9.3-p286/share/emacs/site-lisp") 
(require 'el4r) 
(el4r-boot) 
;; End of the el4r block. 
;; User-setting area is below this line. 
012一個簡約.emacs文件

當我開始與--debug-INIT emacs的,我得到了以下錯誤:

Debugger entered--Lisp error: (el4r-ruby-error) 
    signal(el4r-ruby-error nil) 
    (condition-case err (eval (setq expr (read result))) (el4r-ruby-error (signal (quote el4r-ruby-error) nil)) (error (setq el4r-error-lisp-expression expr) (signal (car err) (cdr err)))) 
    (let ((result (el4r-recv)) expr) (while (eq (length result) 0) (el4r-wait-expr) (setq result (el4r-recv))) (condition-case err (eval (setq expr (read result))) (el4r-ruby-error (signal (quote el4r-ruby-error) nil)) (error (setq el4r-error-lisp-expression expr) (signal (car err) (cdr err))))) 
    el4r-get() 
    (let ((result (el4r-get))) (el4r-leave-call) result) 
    el4r-ruby-eval("el4r_boot") 
    el4r-boot() 
    eval-buffer(#<buffer *load*> nil "/home/mars/.emacs" nil t) ; Reading at buffer position 567 
    load-with-code-conversion("/home/mars/.emacs" "/home/mars/.emacs" t t) 
    load("~/.emacs" t t) 
    #[0 "\205\262 

日誌文件/tmp/el4r-mars.13757.log看起來是這樣的:

2012-11-09 18:00:58 +0100:Starting, waiting for expression. 
2012-11-09 18:00:58 +0100:Error: cannot load such file -- test/unit/ui/console/testrunner (LoadError) 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:846:in `instance_eval' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:491:in `require' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:889:in `el4r_install_test_unit_testrunner' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:882:in `el4r_install_unittest_stuff' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:877:in `el4r_install_builtin_functions' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:723:in `el4r_boot__noinit' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:735:in `el4r_boot' 
    from (eval):1:in `el4r_ruby_eval' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:846:in `instance_eval' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:846:in `el4r_ruby_eval' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:791:in `el4r_get' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:768:in `block in el4r_wait_expr' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:835:in `el4r_with_call' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:765:in `el4r_wait_expr' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:760:in `el4r_wait_expr_loop' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:1094:in `<main>' 
2012-11-09 18:01:03 +0100:wrong number of arguments (1 for 0) (ArgumentError) 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:1084:in `block in <main>' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:760:in `call' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:760:in `eof?' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:760:in `el4r_wait_expr_loop' 
    from /home/mars/.rbenv/versions/1.9.3-p286/bin/el4r-instance:1094:in `<main>' 
2012-11-09 18:01:03 +0100:Exiting. 

我不明白這個問題,以及我如何解決這個問題。 Here is similar question但它是針對xiki。儘管如此,我仍然嘗試了沒有成功的答案

+0

看看[發佈日期](http://www.rubyist.net/~rubikitch/computer/el4r/index.en.html) – Reactormonk

回答

1

我得到它正常工作。

基本上@Tass是正確的。原來的el4r項目似乎已經死了,但似乎有更新的叉子可以工作。這很令人困惑,因爲文檔很奇怪。新項目安裝例程使用舊腳本,但無法完全遵循它們。

安裝

下面是你必須遵循以得到它的工作步驟。

# Install http://rubygems.org/gems/trogdoro-el4r, but do not follow instructions on page 
# Do not download the original el4r sources and files. 
gem install trogdoro-el4r 
# Go to the gem directory. For me it is: 
cd /home/mars/.rbenv/versions/1.9.3-p286/lib/ruby/gems/1.9.1/gems/trogdoro-el4r-1.0.7 
# Run the "original" setup commands 
ruby setup.rb 
cd bin 
ruby -S el4r-rctool -p 
ruby -S el4r-rctool -i 
# Add `el4r_load "el4r-mode.rb"` to ~/.el4r/init.rb or execute this command 
echo 'el4r_load "el4r-mode.rb"' >> ~/.el4r/init.rb 
# Fix your .emacs.el or .emacs.d by adding the code from the newly generated ~/.emacs file 
# Use the ruby you have installed the gem with. In my case rbenv ruby 1.9.3-p286 
# You need to re-install el4r if you change your ruby version 

配置

對於你必須從問題中添加片斷rbenv:

;; Source: http://marc-bowes.com/2012/03/10/rbenv-with-emacs.html 
;; Setting rbenv path 
(setenv "PATH" (concat (getenv "HOME") "/.rbenv/shims:" 
       (getenv "HOME") "/.rbenv/bin:" 
       (getenv "PATH"))) 
(setq exec-path (cons (concat (getenv "HOME") "/.rbenv/shims") 
       (cons (concat (getenv "HOME") "/.rbenv/bin") 
       exec-path))) 

;; Beginning of the el4r block: 
;; RCtool generated this block automatically. DO NOT MODIFY this block! 
(add-to-list 'load-path "/home/mars/.rbenv/versions/1.9.3-p286/share/emacs/site-lisp") 
(require 'el4r) 
(el4r-boot) 
;; End of the el4r block. 
;; User-setting area is below this line. 

測試,如果一切正常

添加以下行到〜/ el4r/init.rb文件

defun(:stackoverflow_ruby_func) { |a| 
    insert_string("It works!: '#{a}'"); newline 
} 

啓動emacs併到你的劃傷緩衝區。

插入(stackoverflow-ruby-func 42)並進行評估。您的緩衝區應如下所示:

(stackoverflow-ruby-func 42)It works!: '42' 

更多信息位於doc /和test /下的gem目錄中。

+0

對我來說,我安裝了rvm,所以使用的路徑是:'〜/ .rvm/rubies/ruby​​-1.9.3-p385/share/emacs/site-lisp'。我沒有必要像rbenv那樣設置PATH。 – tgunr