我试图安装el4r,这是一种EmacsRuby。
我基本上按照所谓的here
安装了所有内容我的设置
我使用默认从Ubuntu 12.10提供的emacs 24和rbenv,我的默认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.
我不明白这个问题以及如何解决它。 Here is similar question但它是针对xiki的。我仍然尝试了答案但没有成功。
答案 0 :(得分: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并转到 scratch 缓冲区。
插入(stackoverflow-ruby-func 42)
并进行评估。你的缓冲区应该是这样的:
(stackoverflow-ruby-func 42)It works!: '42'
更多信息位于doc / and test /.
下的gem目录中