Tôi đã cập nhật cấu hình emacs của mình bằng cách sử dụng Rsense để cho phép hộp thả xuống tự động hoàn tất xuất hiện khi nhập mã. Điều này làm việc tốt trong hầu hết các tập tin ngoại trừ tôi đã tìm thấy nó không cho phép tôi chọn một câu trả lời từ bảng khi tôi đang chỉnh sửa một số mã trong ruby của tôi trên dự án đường ray.Emacs Ruby tự động hoàn thành hầu như làm việc
Đây là thiết lập của tôi: https://github.com/map7/simple_emacs
Tôi đang sử dụng này theo Ubuntu 10.04.
Đối với các tệp tập lệnh ruby đơn giản, nó hoạt động tuyệt vời. Tôi có thể mở một tập tin và loại mới.
"test".up...
Cũng như tôi gõ chữ 'p' trong một 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 với các phím mũi tên và chọn một (ví dụ: upcase) với phím Enter.
Điều gì không có tác dụng khi tôi làm thử nghiệm chính xác giống nhau nhưng trong thư mục cơ sở của dự án đường ray.
Cập nhật:
Tìm thấy rằng vấn đề là với (require 'đường ray), vì vậy nó là một cái gì đó trong emacs-ray cắm rằng autocomplete không thích.
Cập nhật:
Đó là trong emacs-ray -> ray-project.el. Nếu tôi nhận xét macro này ra thì tự động hoàn thành hoạt động, nếu không nó sẽ không hoạt động, nếu không nó sẽ 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 tự động hoàn thành?
nó được sử dụng ở đâu? – milkypostman
Chức năng tự động hoàn tất được sử dụng trong ruby, C++, lisp và mọi thứ – map7
ý tôi là, macro ở đây được sử dụng ở đâu? – milkypostman