ruby-on-rails-3 emacs ide elisp

ruby on rails 3 - Emacs Ruby autocompleta casi trabajando



ruby-on-rails-3 ide (1)

Aquí hay una idea: la macro vincula una función flet (rails-project:root) una vez al valor que (rails-project:root) tiene justo antes de body ejecute el body . (Así es como afirma un aumento en el rendimiento: al parecer, lo externo (rails-project:root) es costoso, por lo que llamar una vez y almacenar en caché el valor parece una buena idea).

Desafortunadamente, si hay un código dentro del body que tiene un efecto secundario que significa intencionalmente cambiar el valor que (rails-project:root) devuelve, no tendrá ningún efecto. Ese cambio será invisible incluso para otro código llamado dentro del body porque Emacs lisp tiene un enlace dinámico de nombres de flet .

He estado actualizando mi configuración de emacs con el uso de Rsense para permitir que aparezca un cuadro desplegable de autocompletar al escribir el código. Esto funciona bien en la mayoría de los archivos, excepto que he descubierto que no me permite seleccionar una respuesta de la tabla cuando estoy editando algún código en mi proyecto Ruby on Rails.

Aquí está mi configuración: https://github.com/map7/simple_emacs

Estoy usando esto en Ubuntu 10.04.

Para archivos simples de script de ruby, funciona genial. Puedo abrir un nuevo archivo y escribir.

"test".up...

Justo cuando escribo el carácter ''p'' aparece una lista de opciones y puedo subir y bajar la lista con las teclas de flecha y seleccionar una (por ejemplo: upcase) con la tecla enter.

Lo que no funciona es cuando realizo exactamente la misma prueba pero dentro del directorio base de un proyecto de rieles.

Actualizar:

Descubrió que el problema es con (require ''rails), por lo que es algo en el complemento emacs-rails que no le gusta a la autocompletar.

Actualizar:

Está dentro de emacs-rails -> rails-project.el. Si comento esta macro, entonces la función de autocompletar funciona; de lo contrario, no:

(defmacro* rails-project:with-root ((root) &body body) "If you use `rails-project:root'' or functions related on it several times in a block of code, you can optimize your code by using this macro. Also, blocks of code will be executed only if rails-root exist. (rails-project:with-root (root) (foo root) (bar (rails-core:file /"some/path/"))) " `(let ((,root (rails-project:root))) (when ,root (flet ((rails-project:root () ,root)) ,@body))))

¿Alguien puede explicar por qué esto rompe autocompletar?