2009-03-03 9 views
12

Jak uzyskać pełną listę nieinteraktywnych funkcji, których mogę używać w Emacs Lisp?Jak uzyskać listę nieinteraktywnych funkcji Empsa?

Te interaktywne są dość łatwe do znalezienia w systemie pomocy, ale chcę uzyskać pełną listę wszystkich innych funkcji, których mogę użyć. Na przykład: concat, car, cdr itd. (Najlepiej z dokumentacją).

Dzięki

Ed

EDIT: Odpowiedź dzięki Jouni. I bawił się jego odpowiedź nieco i dostał go do sortowania wyników (z wykorzystaniem wyników swojego kodu, aby pomóc mi znaleźć właściwą funkcję sortowania!)

(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

Dzięki za pytanie i odpowiedź. Bardzo przydatne przy nauce seplingu emacs. – aartist

Odpowiedz

13

Oto podstawowa idea - patrz Emacs Lisp manual dla wszelkich niejasnych pojęć.

(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

Wow, to genialne. Dowiedziałem się o dziesięciu nowych rzeczach z tego krótkiego kawałka kodu. Dzięki. – Singletoned

0

można zrobić gorzej niż look at the website

+0

Zrobiłem, całkiem sporo, ale nie mogę znaleźć listy funkcji. Jest strona, która jest listą absolutnie wszystkiego, ale nie jedną dla funkcji. Miałem nadzieję, że coś będzie wbudowane w emacs. – Singletoned

0

Wypróbuj polecenie apropos z pustym wpisem.

+0

Wymienia wszystko, a C-h f byłby lepszy z tego punktu widzenia. – Singletoned

+0

Niestety, nie zawiera wszystkich informacji. Okazuje się, że w ogóle nie zawiera poleceń nieinteraktywnych. – Singletoned

+0

Spójrz na apropos.el i napisz własne. – starblue

0

Nieważne. Okazuje się, że C-h f (funkcja opisowa) zawiera funkcje nieinteraktywne, choć nadal chciałbym znaleźć sposób przeglądania/wyszukiwania tylko tych nieinteraktywnych (szczególnie tych wbudowanych).

1

Można sprawdzić zawartość obarray, ale to zawiera wszystkie symbole, a nie "wszystkie funkcje".

Alternatywnie Mogą lewę (ciągnie się w części opakowania kompatybilności Cl):

(zmniejszenie (lambda (tak daleko dalej) (jeśli (fboundp następne) (wagonika obok SO- daleko) narazie)) obarray : początkowa wartość nil)
4

Spróbuj apropos zamiast apropos-command. To da ci wszystkie funkcje, nie tylko interaktywne. C-h a jest domyślnie związany z tym drugim, ale jeśli robisz dużo hackowania, polecam powiązanie go z poprzednim.

Powiązane problemy