Existe um comando `descrever-comando ', semelhante ao comando` descrever-função'?

14

Eu uso C-h fmuito, mas isso são todas as funções no Emacs. Geralmente, estou interessado apenas em funções interativas, como comandos.

Existe um equivalente para comandos? Idealmente, eu gostaria de concluir também.

Wilfred Hughes
fonte
1
Próxima pergunta: por que isso não está no Emacs?
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Proposta, mas rejeitada por Emacs Dev.
Tirou

Respostas:

12

Sim. Biblioteca help-fns+.eldefine comando describe-command.

E redefine describe-functionpara que sim, describe-commandse você der um prefixo arg.

A biblioteca se liga describe-commanda C-h c( describe-key-brieflyé movida para C-h C-c).

A mesma biblioteca define outros comandos de ajuda, como describe-file, describe-buffer, describe-keymap, e describe-option-of-type. Aqui está mais informações sobre a biblioteca.

Desenhou
fonte
1
Eu realmente gosto de help-fns +, mas está adicionando um grande espaço e um comentário genérico sobre todas as funções que eu olho: imgur.com/NiDlkjS - alguma idéia?
Wilfred Hughes
@ WilfredHughes: Deve estar OK agora . (Deve também ser espelhadas sobre Melpa dentro de 24 horas.)
Desenhou
O link de Drew do comentário @ 18:25 está quebrado. O emacswiki.org/emacs/download/help-fns%2b.el funciona.
Realraptor 4/04/19
1
@Realraptor: Obrigado. Os URLs do EmacsWiki foram alterados alguns anos atrás.
Desenhou
9

apropos-command pode estar suficientemente perto.

Ele não oferece describe-functiona conclusão da guia, mas permite pesquisar apenas por meio de comandos e leva à página de documentos deles.

Malabarba
fonte
8

se você tiver o smex instalado, basta ligar para o smex. Comece a digitar, quando o correto surgir, pressione Ch f.

Xah Lee
fonte
7

Não consigo encontrar isso embutido. É bastante fácil criar um invólucro describe-functionque apenas conclua os nomes dos comandos quando chamados de maneira interativa. Na implementação abaixo, dupliquei o formulário interativo describe-functione mudei o fboundpteste para commandp. Como um bônus adicional, esta função oferece todos os nomes de funções quando chamados com um argumento de prefixo. Mude if current-prefix-argpara if (not current-prefix-arg)para tornar a descrição de todas as funções o padrão.

(defun describe-command (function &optional all-functions)
  "Display the full documentation of FUNCTION (a symbol).
When called interactively with a prefix argument, prompt for all functions,
not just interactive commands, like `describe-function'."
  (interactive (if current-prefix-arg
                   (eval (car (cdr (interactive-form 'describe-function))))
                 (list (let ((fn (function-called-at-point))
                             (enable-recursive-minibuffers t)
                             val)
                         (setq val (completing-read (if (and fn (commandp fn))
                                                        (format "Describe command (default %s): " fn)
                                                      "Describe command: ")
                                                    obarray 'commandp t nil nil
                                                    (and fn (commandp fn)
                                                         (symbol-name fn))))
                         (if (equal val "") fn (intern val)))
                       current-prefix-arg)))
  (describe-function function))

Eu não testei isso com ido, mas ele deve se integrar normalmente.

Gilles 'SO- parar de ser mau'
fonte
O teste rápido mostra que ele funciona com o IDO. Copiado para *scratch*, avaliado e executado M-x describe-command. Os comandos apareceram em uma lista vertical graças a ido-vertical.
Jonathan Leech-Pepin
A última linha não deveria ser (describe-function command)?
npostavs 3/09/18
5

Se você estiver usando o leme e helm-M-x, poderá pressionar C-jos comandos para exibir a documentação.

Marta
fonte