Existe-t-il une commande `describe-command ', similaire à la commande` describe-function'?

14

J'utilise C-h fbeaucoup, mais ce sont toutes les fonctions d'Emacs. Je ne m'intéresse souvent qu'aux fonctions interactives, c'est-à-dire aux commandes.

Existe-t-il un équivalent pour les commandes? Idéalement, j'aimerais aussi l'achèvement de l'idéo.

Wilfred Hughes
la source
1
Question suivante, pourquoi n'est-ce pas dans Emacs?
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Proposé, mais rejeté par Emacs Dev.
Drew

Réponses:

12

Oui. La bibliothèque help-fns+.eldéfinit la commande describe-command.

Et il redéfinit describe-functionpour qu'il le fasse describe-commandsi vous lui donnez un préfixe arg.

La bibliothèque se lie describe-commandà C-h c( describe-key-brieflyest déplacée vers C-h C-c).

La même bibliothèque définit d' autres commandes d'aide, telles que describe-file, describe-buffer, describe-keymap, et describe-option-of-type. Voici plus d'informations sur la bibliothèque.

A dessiné
la source
1
J'aime vraiment help-fns +, mais cela ajoute un grand espace et un commentaire générique sur chaque fonction que je regarde: imgur.com/NiDlkjS - des idées?
Wilfred Hughes
@WilfredHughes: Ça devrait aller maintenant . (Devrait également être mis en miroir sur Melpa dans les 24 heures.)
Drew
Le lien de Drew à partir du commentaire @ 18:25 est rompu. emacswiki.org/emacs/download/help-fns%2b.el fonctionne.
Realraptor
1
@Realraptor: Merci. Les URL d'EmacsWiki ont changé il y a quelques années.
Tiré le
9

apropos-command pourrait être suffisamment proche.

Il n'offre pas describe-functionla complétion de l'onglet, mais il vous permet de rechercher uniquement via des commandes, et il vous amène à leur page doc.

Malabarba
la source
8

si vous avez installé smex, appelez simplement smex. Commencez à taper, lorsque celui de droite apparaît, appuyez sur Ch f.

Xah Lee
la source
7

Je ne trouve pas cette fonction intégrée. Il est assez facile de créer un wrapper describe-functionqui ne complète les noms de commandes que lorsqu'il est appelé de manière interactive. Dans l'implémentation ci-dessous, j'ai dupliqué le formulaire interactif de describe-functionet changé le fboundptest en commandp. En prime, cette fonction offre tous les noms de fonction lorsqu'elle est appelée avec un argument préfixe. Changez if current-prefix-argpour if (not current-prefix-arg)faire de la description de toutes les fonctions la valeur par défaut.

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

Je n'ai pas testé cela avec ido mais il devrait s'intégrer normalement.

Gilles 'SO- arrête d'être méchant'
la source
Un test rapide montre qu'il fonctionne avec IDO. Copié *scratch*, évalué puis exécuté M-x describe-command. Les commandes sont apparues dans une liste verticale grâce à ido-vertical.
Jonathan Leech-Pepin
La dernière ligne ne devrait-elle pas l'être (describe-function command)?
npostavs le
5

Si vous utilisez helm et helm-M-x, vous pouvez appuyer C-jsur les commandes pour faire apparaître leur documentation.

Martre
la source