Tôi đã cập nhật cấu hình emacs của mình với việc sử dụng Rupense để cho phép hộp thả xuống tự động hoàn thành xuất hiện trong khi nhập mã. Điều này hoạt động tốt trong hầu hết các tệp trừ tôi thấy nó không cho phép tôi chọn câu trả lời từ bảng khi tôi chỉnh sửa một số mã trong dự án ruby on rails của tôi.
Đây là thiết lập của tôi: https://github.com/map7/simple_emacs
Tôi đang sử dụng cái này trong Ubuntu 10.04.
Đối với các tập tin ruby đơn giản, nó hoạt động rất tốt. Tôi có thể mở một tập tin mới và gõ.
"test".up...
Ngay khi tôi nhập ký tự 'p' vào danh sách các tùy chọn xuất hiện và tôi có thể đi lên và xuống danh sách bằng các phím mũi tên và chọn một (ví dụ: chữ hoa) bằng phím enter.
Điều không hiệu quả là khi tôi thực hiện cùng một bài kiểm tra nhưng trong thư mục cơ sở của dự án rails.
Cập nhật:
Nhận thấy rằng sự cố xảy ra với (yêu cầu 'đường ray), vì vậy đó là một cái gì đó trong plugin emacs-rails mà trình tự động hoàn thành không thích.
Cập nhật:
Nó nằm trong emacs-rails -> rails-project.el. Nếu tôi nhận xét macro này thì tự động hoàn tất sẽ hoạt động, nếu không thì nó không:
(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))))
Ai đó có thể giải thích tại sao điều này phá vỡ tự động hoàn thành?