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.


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.


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.


8

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


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.