Frage

Wie erhalte ich eine vollständige Liste der nicht-interaktiver Funktionen, die ich in Emacs Lisp verwenden kann?

Die interaktiv diejenigen sind leicht genug, um in dem Hilfesystem zu finden, aber ich mag eine vollständige Liste aller anderen Funktionen, die ich verwenden können. Zum Beispiel concat, car, cdr usw. (und vorzugsweise mit Dokumentation).

Danke

Ed

Edit: Beantwortet dank Jouni. Ich spielte mit seiner Antwort eines bisschen, und bekam es die Ergebnisse sortiert werden (die Ergebnisse seines Code mit mir zu helfen, die richtigen Sortierfunktion zu finden!)

(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))))
War es hilfreich?

Lösung

Hier ist die Grundidee - siehe Emacs Lisp Handbuch für jede unklare Begriffe.

(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")))))

Andere Tipps

Versuchen apropos statt apropos-command. Das gibt Ihnen alle Funktionen, nicht nur die interaktiv diejenigen. C-h a ist standardmäßig an diese gebunden ist, aber wenn Sie eine Menge elisp Hacking zu tun, empfehle ich die Bindung an die ehemalige.

Sie können den Inhalt obarray überprüfen, obwohl das alle Symbole enthält, sondern als „alle Funktionen“.

Alternativ können folgende den Trick (in Teilen des CL-Kompatibilität Paket ziehen wird):

(Reduziert (Lambda (so weit next) (if (fboundp next) (cons nächste so weit) so weit))     obarray     : Anfangswert nil)

könnten Sie tun, schlimmer als Blick auf die Website

Versuchen Sie, den Befehl apropos mit einem leeren Eingang.

Nevermind. Es stellt sich heraus, dass Ch f (beschreiben Funktion) enthält nicht-interaktive Funktionen, obwohl ich immer noch in der Suche nach einem Weg des Betrachtens interessiert sein würde / die Suche nur die nicht-interaktiven derjenigediejenigedasjenige (vor allem nur die in denjenigen gebaut).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top