Domanda

Come posso ottenere un elenco completo di funzioni non interattive che posso usare in Emacs Lisp?

Quelli interattivi sono abbastanza facili da trovare nel sistema di aiuto, ma voglio un elenco completo di tutte le altre funzioni che posso usare. Ad esempio concat , car , cdr , ecc. (E preferibilmente con documentazione).

Grazie

Ed

Modifica: risposta grazie a Jouni. Ho giocato un po 'con la sua risposta e l'ho ottenuto per ordinare i risultati (usando i risultati del suo codice per aiutarmi a trovare la funzione di ordinamento corretta!)

(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))))
È stato utile?

Soluzione

Ecco l'idea di base: consultare il manuale di Emacs Lisp per qualsiasi concetti poco chiari.

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

Altri suggerimenti

Prova apropos invece di apropos-command . Questo ti darà tutte le funzioni, non solo quelle interattive. C-h a è associato per impostazione predefinita a quest'ultimo, ma se stai facendo un sacco di hacking elisp, ti consiglio di legarlo al primo.

Puoi controllare il contenuto di obarray, sebbene contenga tutti i simboli, piuttosto che "tutte le funzioni".

In alternativa, potrebbe essere utile fare quanto segue (trarrà parte del pacchetto di compatibilità CL):

(riduci (lambda (finora successivo) (if (avanti successivo) (contro successivo finora) finora)     obarray     : valore iniziale nullo)

potresti fare di peggio di guardare il sito web

Prova il comando apropos con un input vuoto.

Nevermind. Si scopre che Ch f (descrivi la funzione) include funzioni non interattive, anche se sarei comunque interessato a trovare un modo di visualizzare / cercare solo quelle non interattive (specialmente solo quelle incorporate).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top