2009-03-03 8 views
12

Emacs Lispで使用できる非対話型関数の完全なリストを取得するにはどうすればよいですか?Emacs lisp非対話型関数のリストを取得するにはどうしたらいいですか?

ヘルプシステムで見つけるのは簡単ですが、私が使用できる他のすべての機能の完全なリストが必要です。例えば、concat,car,cdrなど(そして、好ましくはドキュメントを参照)。

おかげ

エド

編集:Jouniへの回答のおかげ。私は彼の答えビットの周り演奏し、結果をソートするためにそれを得た(私は正しいソート機能を見つけるのを助けるために自分のコードの結果を使用して!)

(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

質疑応答ありがとうございます。 emacs lispの学習中に非常に便利です。 – aartist

答えて

13

はここで基本的な考え方だ - 不明な概念についてEmacs Lisp manualを参照してください。

(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

うわー、それは素晴らしいです。短いコードからちょうど10の新しいことを学びました。ありがとう。 – Singletoned

0

あなたが悪いことよりlook at the website

+0

私はかなり多く行っていますが、私は機能のリストを見つけることができません。絶対にすべてのリストですが、機能のリストはありません。私はイマックに何かが組み込まれることを期待していました。 – Singletoned

0

行うことができます空の入力でaproposコマンドを試してください。

+0

それはすべてをリストしており、C-h fはその観点から優れています。 – Singletoned

+0

申し訳ありませんが、すべてが表示されるわけではありません。非対話型コマンドはまったく含まれていないことが分かります。 – Singletoned

+0

apropos.elを見て、自分で書く。 – starblue

0

Nevermind。 C-h f(関数の記述)には、非対話型の関数が含まれていることが判明しましたが、非対話型のもの(特に組み込み型のもののみ)を表示/検索する方法はまだ興味があります。

1

「すべての機能」ではなく、すべてのシンボルが含まれていますが、obarrayの内容を確認できます。

また、(CLの互換性パッケージの一部に引っ張ってくる)トリックを行うことがあり、次の

(削減(ラムダ(それまで次)(もし(fboundp次)(短所次のSO-ここまで)それまで)) オブジェクト配列 :初期値nil)
4

aproposの代わりapropos-command試してみてください。それはあなただけのインタラクティブなものではなく、すべての機能を提供します。 C-h aはデフォルトで後者にバインドされていますが、多くのelispハッキングを行っている場合は、前者にバインドすることをおすすめします。

関連する問題