Como faço para obter uma lista de Emacs funções lisp não-interativas?
Pergunta
Como faço para obter uma lista completa de funções não-interativas que eu posso usar em Emacs Lisp?
Os interactivas são bastante fáceis de encontrar no sistema de ajuda, mas eu quero uma lista completa de todas as outras funções que eu possa usar. Por exemplo concat
, car
, cdr
, etc. (e de preferência com documentação).
Graças
Ed
Edit: atendida graças a Jouni. Eu brinquei com a sua resposta um pouco, e consegui-lo para classificar os resultados (usando os resultados de seu código para me ajudar a encontrar a função de classificação correta!)
(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))))
Solução
Aqui está a idéia básica - veja a Emacs Lisp manual para qualquer conceitos pouco claros.
(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")))))
Outras dicas
apropos
Tente em vez de apropos-command
. Isso vai dar-lhe todas as funções, não apenas os interativas. C-h a
é obrigado por padrão para o último, mas se você está fazendo um monte de pirataria elisp, eu recomendo que o vincule a do primeiro.
Você pode verificar o conteúdo de obarray, no entanto, que contém todos os símbolos, em vez de "todas as funções".
Como alternativa, podem fazer o truque (vai puxar a partes do pacote de compatibilidade CL):
(Reduzir (lambda (assim muito próxima) (if (fboundp seguinte) (cons próxima tão distante) tão distante)) obarray : Nil de valor inicial)
você poderia fazer pior do que olhada no site
Tente o comando apropos com uma entrada vazia.
de Nevermind. Acontece que Ch f (função de descrever) não inclui funções não-interativas, embora eu ainda estaria interessado em encontrar uma maneira de ver / procura apenas os não-interativas (especialmente apenas o construído em ones).