Gibt es einen Befehl "describe-command", ähnlich dem Befehl "describe-function"?


14

Ich benutze C-h fstark, aber das ist alles Funktionen in Emacs. Ich interessiere mich oft nur für interaktive Funktionen, also Befehle.

Gibt es eine Entsprechung für Befehle? Idealerweise möchte ich auch Ido-Vervollständigung.


1
Nächste Frage, warum ist das nicht in Emacs?
Jonathan Leech-Pepin

1
@ JonathanLeech-Pepin: Vorgeschlagen, aber von Emacs Dev abgelehnt.
Drew

Antworten:


12

Ja. Bibliothek help-fns+.eldefiniert Befehl describe-command.

Und es definiert neu, describe-functionso dass es tut, describe-commandwenn Sie ihm ein Präfix arg geben.

Die Bibliotheks Binds describe-commandzu C-h c( describe-key-brieflybewegt wird C-h C-c).

Die gleiche Bibliothek definiert andere Hilfebefehle, wie zum Beispiel describe-file, describe-buffer, describe-keymap, und describe-option-of-type. Hier finden Sie weitere Informationen zur Bibliothek.


1
Ich mag help-fns + sehr, aber es fügt jeder Funktion, die ich mir anschaue, ein großes Leerzeichen und einen allgemeinen Kommentar hinzu: imgur.com/NiDlkjS - irgendwelche Ideen?
Wilfred Hughes

@WilfredHughes: Sollte jetzt in Ordnung sein . (Sollte auch innerhalb von 24 Stunden auf MELPA gespiegelt werden.)
Drew

Drews Link aus dem Kommentar @ 18:25 ist kaputt. emacswiki.org/emacs/download/help-fns%2b.el funktioniert.
Realraptor

1
@ Realraptor: Danke. EmacsWiki-URLs haben sich vor einigen Jahren geändert.
Drew

9

apropos-command könnte ausreichend nahe sein.

Die describe-functionRegisterkarte wird nicht vollständig angezeigt, Sie können jedoch nur nach Befehlen suchen und zu deren Dokumentseite gelangen.


8

Wenn Sie smex installiert haben, rufen Sie einfach smex an. Beginnen Sie mit der Eingabe, und drücken Sie nach dem Aufrufen der richtigen Taste Ch f.


7

Ich kann das nicht finden. Es ist ziemlich einfach, einen Wrapper zu erstellen describe-function, der nur dann Befehlsnamen vervollständigt, wenn er interaktiv aufgerufen wird. In der folgenden Implementierung habe ich das interaktive Formular von dupliziert describe-functionund den fboundpTest in geändert commandp. Als zusätzlichen Bonus bietet diese Funktion alle Funktionsnamen, wenn sie mit einem Präfixargument aufgerufen werden. Wechseln Sie if current-prefix-argzu if (not current-prefix-arg), um die Beschreibung aller Funktionen als Standard festzulegen.

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

Ich habe das noch nicht mit ido getestet, aber es sollte sich normal integrieren lassen.


Schnelltest zeigt, dass es mit IDO funktioniert. Kopiert *scratch*, ausgewertet und dann ausgeführt M-x describe-command. Befehle wurden dank in einer vertikalen Liste angezeigt ido-vertical.
Jonathan Leech-Pepin

Sollte nicht die letzte Zeile sein (describe-function command)?
Npostavs

5

Wenn Sie Helm und verwenden helm-M-x, können Sie C-jauf die Befehle drücken , um deren Dokumentation aufzurufen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.