Aktualizowałem konfigurację emacsa przy użyciu Rsense, aby podczas wpisywania kodu pojawiało się rozwijane okno autouzupełniania. Działa to dobrze w większości plików, z wyjątkiem stwierdzenia, że nie pozwala mi wybrać odpowiedzi z tabeli, gdy edytuję kod w moim projekcie Ruby on rails.
Oto moja konfiguracja: https://github.com/map7/simple_emacs
Używam tego pod Ubuntu 10.04.
W przypadku prostych plików skryptów ruby działa świetnie. Mogę otworzyć nowy plik i wpisać.
"test".up...
Gdy wpisuję znak „p” w górę, pojawia się lista opcji i mogę poruszać się w górę iw dół listy za pomocą klawiszy strzałek i wybrać jedną (np. Wielkie litery) klawiszem Enter.
Co nie działa, kiedy wykonuję dokładnie ten sam test, ale w katalogu podstawowym projektu rails.
Aktualizacja:
Okazało się, że problem dotyczy (wymagają 'railsów), więc jest to coś we wtyczce emacs-rails, czego autouzupełnianie nie lubi.
Aktualizacja:
Znajduje się w emacs-rails -> rails-project.el. Jeśli skomentuję to makro, autouzupełnianie działa, w przeciwnym razie nie:
(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))))
Czy ktoś może wyjaśnić, dlaczego to psuje autouzupełnianie?