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))))
解決
基本的な考え方は次のとおりです- Emacs Lispマニュアル不明確な概念。
(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")))))
他のヒント
apropos-command
の代わりに apropos
を試してください。これにより、インタラクティブな機能だけでなく、すべての機能が提供されます。 C-h a
はデフォルトで後者にバインドされていますが、多くのelispハッキングを行っている場合は、前者にバインドすることをお勧めします。
「すべての関数」ではなく、すべてのシンボルを含むobarrayの内容を確認できます。
別の方法として、次の方法を使用することもできます(CL互換性パッケージの一部を取り込みます):
((lambda(so-far next)(if(fboundp next)(cons next so-far)so-far)を減らします)) 厄介 :初期値nil)
空の入力でaproposコマンドを試してください。
ネバーマインド。 Ch f(記述関数)には非対話型関数が含まれていることがわかりますが、非対話型関数(特に組み込み関数のみ)のみを表示/検索する方法を見つけることに興味があります。
所属していません StackOverflow