2009-10-22 33 views
15

Tôi đang cố gắng tìm ra Elisp, và tôi đã đạt được rào cản.Emacs - Sử dụng "Chọn Tất cả" trong Chức năng (cách tìm chức năng liên kết với một phím)

Tôi muốn một hàm sẽ thụt lề toàn bộ tệp. Ngay bây giờ, tôi đang chọn toàn bộ tệp (C-x h) và sau đó thực hiện M-x thụt lề khu vực (có phím tắt).

Tôi muốn kết hợp điều đó với một lần nhấn phím, nhưng không thể tìm ra cách thực hiện C-x h trong một hàm.

Cảm ơn

Trả lời

21

Để tìm Emacs sẽ làm gì khi bạn gọi một tổ hợp phím nhất định, tiền tố đó với: C-h k. Trong trường hợp của bạn, bạn muốn gõ:

C-h k C-x h 

trong đó sản lượng

Cx h chạy lệnh đánh dấu toàn bộ đệm, mà là một tương tác chức năng Lisp biên soạn trong 'simple.el '.

Nó bị ràng buộc với C-x h, . (đánh dấu toàn bộ bộ đệm)

Đặt điểm lúc bắt đầu và đánh dấu ở cuối bộ đệm. Có thể bạn không nên sử dụng chức năng này trong các chương trình Lisp; nó là thường là một sai lầm đối với hàm Lisp để sử dụng bất kỳ chương trình con nào sử dụng hoặc đặt dấu.

Lưu ý: Bạn cũng có thể sử dụng C-h K (chú ý K là viết hoa), mà sẽ nhảy bạn đến với tài liệu hướng dẫn cho các lệnh.

+0

Cảm ơn bạn sir, Ch k là những gì tôi không thể tìm thấy – MattBelanger

+0

và Ch c lợi nhuận chỉ là chức năng, mà không cần bất kỳ tài liệu, và không mở bộ đệm trợ giúp. Và, C-h C-h rất hay cho những tình huống này. – quodlibetor

12

Điều đáng chú ý là bạn không muốn sử dụng nhãn hiệu và trỏ vào mã không tương tác; bạn muốn (indent-region (point-min) (point-max)), không phải (save-excursion (mark-whole-buffer) (call-interactively indent-region)), mặc dù các hiệu ứng tương tự nhau.

(Không làm hỏng niềm vui của bạn, nhưng toàn bộ chuỗi sẽ giống như thế (global-set-key (kbd "C-M-r") (lambda() (interactive) (indent-region (point-min) (point-max))).)

+0

Tại sao phương pháp của bạn lại thích đánh dấu toàn bộ vùng đệm/thụt lề? Tôi không chắc sự khác biệt là gì. – MattBelanger

Các vấn đề liên quan