2009-03-03 36 views
12

Làm cách nào để có danh sách đầy đủ các chức năng không tương tác mà tôi có thể sử dụng trong Emacs Lisp?Làm cách nào để có danh sách các chức năng không tương tác của Emacs lisp?

Các trang tương tác rất dễ tìm trong hệ thống trợ giúp, nhưng tôi muốn có danh sách đầy đủ tất cả các chức năng khác mà tôi có thể sử dụng. Ví dụ: concat, car, cdr, v.v. (Và tốt nhất là với tài liệu).

Cảm ơn

Ed

Edit: Giải đáp nhờ Jouni. Tôi chơi xung quanh với câu trả lời của mình một chút, và đã nhận nó để sắp xếp kết quả (sử dụng kết quả của mã của mình để giúp tôi tìm ra chức năng phân loại đúng!)

(flet ((first-line (text) 
        (if text 
         (substring text 0 (string-match "\n" text)) 
        ""))) 
    (let ((funclist (list))) 
    (mapatoms 
    (lambda (x) 
     (and (fboundp x)      ; does x name a function? 
      (not (commandp (symbol-function x))) ; is it non-interactive? 
      (subrp (symbol-function x))   ; is it built-in? 
      (add-to-list 'funclist 
         (concat (symbol-name x) " - " (first-line (documentation x)) 
           "\n"))))) 
    (dolist (item (sort funclist 'string<)) 
     (insert item)))) 
+0

Cảm ơn câu hỏi và câu trả lời. Rất hữu ích trong khi học các emacs lisp. – aartist

Trả lời

13

Dưới đây là ý tưởng cơ bản - xem Emacs Lisp manual cho bất kỳ khái niệm không rõ ràng.

(flet ((first-line (text) 
     (if text 
      (substring text 0 (string-match "\n" text)) 
      ""))) 
    (mapatoms 
    (lambda (x) 
    (and (fboundp x)       ; does x name a function? 
      (not (commandp (symbol-function x))) ; is it non-interactive? 
      (subrp (symbol-function x))   ; is it built-in? 
      (insert (symbol-name x) " - " (first-line (documentation x)) "\n"))))) 
+1

Ồ, thật tuyệt vời. Tôi đã học được khoảng mười điều mới chỉ từ đoạn mã ngắn đó. Cảm ơn. – Singletoned

0

bạn có thể làm tồi tệ hơn look at the website

+0

Tôi đã làm, khá nhiều, nhưng tôi dường như không thể tìm thấy một danh sách các chức năng. Có một trang mà là một danh sách của tất cả mọi thứ hoàn toàn, nhưng không phải là một cho các chức năng. Và tôi đã hy vọng sẽ có một cái gì đó được xây dựng thành emacs. – Singletoned

0

Hãy thử lệnh apropos với đầu vào trống.

+0

Điều đó liệt kê mọi thứ, và C-h f sẽ tốt hơn từ quan điểm đó. – Singletoned

+0

Xin lỗi, nó không liệt kê mọi thứ. Hóa ra nó không bao gồm các lệnh không tương tác. – Singletoned

+0

Nhìn vào apropos.el và viết của riêng bạn sau đó. – starblue

0

Nevermind. Nó chỉ ra rằng C-h f (mô tả chức năng) không bao gồm các chức năng không tương tác, mặc dù tôi vẫn muốn tìm cách xem/tìm kiếm chỉ những cái không tương tác (đặc biệt chỉ có những cái được tích hợp sẵn).

1

Bạn có thể kiểm tra nội dung của sự phản bội, mặc dù có chứa tất cả các biểu tượng, thay vì "tất cả các chức năng".

Ngoài ra, sau đây có thể làm các trick (sẽ kéo trong các bộ phận của gói tương thích CL):

(giảm (lambda (cái xa tiếp theo) (if (fboundp tiếp theo) (khuyết điểm tiếp theo Somali đến nay) cái xa)) obarray : ban đầu có giá trị nil)
4

Hãy thử apropos thay vì apropos-command. Điều đó sẽ cung cấp cho bạn tất cả các chức năng, không chỉ các chức năng tương tác. C-h a bị ràng buộc theo mặc định cho sau này, nhưng nếu bạn đang làm rất nhiều hack hacking, tôi khuyên bạn nên ràng buộc nó vào trước đây.

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