1

EmacsRubyの一種である el4r をインストールしようとしました。

ここで説明したように、基本的にすべてをインストールしました

マイセットアップ

私は rbenv で Ubuntu 12.10 からデフォルトで提供されている emacs 24 を使用しています。私のデフォルトの Ruby バージョンは Ruby 1.9.3p286 (2012-10-12 リビジョン 37165) [x86_64-linux] です。

すべてをテストしている間に、次のテキストを含む最小限の .emacs ファイルがありました

;; 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.

--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.

問題とその修正方法がわかりません。これは同様の質問ですが、xiki を対象としています。それでも私は答えを試しましたが、成功しませんでした。

4

1 に答える 1

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ディレクトリにあります。

于 2012-11-09T17:59:15.097 に答える