Estou atualizando minha configuração do emacs com o uso do Rsense para permitir que uma caixa suspensa de preenchimento automático apareça ao digitar o código. Isso funciona bem na maioria dos arquivos, exceto que eu descobri que não me permite selecionar uma resposta da tabela quando estou editando algum código no meu projeto ruby on rails.
Aqui está a minha configuração: https://github.com/map7/simple_emacs
Estou usando isso no Ubuntu 10.04.
Para arquivos de script ruby simples, funciona muito bem. Eu posso abrir um novo arquivo e tipo.
"test".up...
Assim que digito o caractere 'p', uma lista de opções aparece e eu posso subir e descer a lista com as setas e selecionar uma (por exemplo: maiúscula) com a tecla Enter.
O que não funciona é quando eu faço exatamente o mesmo teste, mas dentro do diretório base de um projeto rails.
Atualizar:
Constatou que o problema está em (require 'rails), então é algo no plug-in emacs-rails que o preenchimento automático não gosta.
Atualizar:
Está dentro do emacs-rails -> rails-project.el. Se eu comentar esta macro, o preenchimento automático funcionará, caso contrário, não:
(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))))
Alguém pode explicar por que isso interrompe o preenchimento automático?