Trong suốt cả ngày, tôi liên tục sử dụng C-h f
hoặc C-h v
( describe-function
và describe-variable
) để tìm tài liệu cho các hàm và biến. Thường xuyên hơn không, nếu tôi không nhận được tất cả thông tin tôi cần, tôi sẽ nhấp vào liên kết tệp ở cuối:
some-random-command is an interactive compiled Lisp function in `some-mode.el'.
và điều hướng đến mã nguồn. Điều này hoạt động cho các gói đã cài đặt, nhưng dường như không hoạt động cho các gói tích hợp. Ví dụ: ở đầu trang trợ giúp cho lệnh describe-function
tất cả những gì tôi nhận được là:
describe-function is an interactive compiled Lisp function.
không có liên kết đến mã nguồn. Có cách nào để nhanh chóng điều hướng đến mã nguồn của gói tích hợp không?
Tôi biết rằng tôi có thể tìm mã nguồn trong ví dụ, /usr/share/emacs/24.5/lisp
và đưa ra bất kỳ số cách nào để truy cập thư mục đó một cách nhanh chóng, nhưng tôi tò mò liệu có cách nào nhanh chóng và dễ dàng để điều hướng đến một định nghĩa hàm / biến tích hợp trong mã nguồn. Cảm ơn bạn!
M-x describe-function
: description-function là một hàm Lisp được biên dịch tự động tương tác trong 'help-fns.el'. Và từ đó tôi có thể nhấp vào (hoặc nhấn enter) help-fns.el
và sau đó được chuyển đến phần áp dụng của mã. Có lẽ bạn có nhiều phiên bản Emacs và phiên bản bạn đang sử dụng hiện tại chưa cài đặt tất cả mã nguồn?
emacs -Q
(không có tệp init) hoặc nếu bạn có thể repro nó với một công thức bắt đầu bằng emacs -Q
(ví dụ: nói thư viện nào bạn tải và cách bạn tải chúng, v.v.), thì hãy xem xét việc gửi lỗi báo cáo : M-x report-emacs-bug
.
.el
tệp (được coi là tùy chọn) khỏi các .elc
tệp (bắt buộc), do đó bạn cần cài đặt một hoặc nhiều gói bổ sung để có được chúng. Nếu bạn đã nhận được Emacs từ trình quản lý gói hệ điều hành của mình, có lẽ điều này giải thích điều đó.
/usr/bin/emacs
và /usr/bin/emacsclient
, và tôi có một phiên bản được đóng gói độc đáo trong thư mục ứng dụng OSX kết thúc bằng .app - tức là /Applications/Emacs.app
(bên trong Emacs.app, là các nhị phân và tất cả tập tin mã nguồn).
M-x find-function
;M-x find-variable
;M-x find-face
;M-x find-library
. Tôi luôn sử dụng bản cài đặt đầy đủ của Emacs để tôi có quyền truy cập vào mọi thứ và ngay sau khi xây dựng Emacs của riêng mình, tôi sao chép mã nguồn C và đặt vị trí của nó để tôi cũng có thể tìm thấy định nghĩa mã nguồn C. Xem biếnfind-function-C-source-directory
để đặt vị trí của mã nguồn C sau khi bạn sao chép nó.