Как я могу установить el4r в emacs 24?

Я попытался установить el4r, что-то вроде EmacsRuby.

Я в основном установил все как описано здесь

Моя настройка

Я использую emacs 24, как это предусмотрено по умолчанию из Ubuntu 12.10 с rbenv, и моей версией по умолчанию для ruby ​​является ruby ​​1.9.3p286 (2012-10-12 revision 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.

Когда я запускаю emacs с --debug-init, я получаю следующие ошибки:

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.

Я не понимаю проблему и как я могу это исправить. Здесь аналогичный вопрос, но он направлен на x iki. Тем не менее я попробовал ответы безуспешно.

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(:stackru_ruby_func) { |a|
  insert_string("It works!: '#{a}'"); newline
}

Запустите emacs и загрузите его в буфер.

Вставить (stackru-ruby-func 42) и оценить. Ваш буфер должен выглядеть примерно так:

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

Более подробная информация находится в каталоге gem под doc/ и test/.

Другие вопросы по тегам