Czy istnieje polecenie „opis-polecenie”, podobne do polecenia „opis-funkcja”?

14

Używam C-h fdużo, ale to wszystko funkcje Emacsa. Często interesują mnie tylko interaktywne funkcje, tj. Polecenia.

Czy istnieje odpowiednik poleceń? Idealnie chciałbym też zakończyć ido.

Wilfred Hughes
źródło
1
Następne pytanie, dlaczego nie ma tego w Emacsie?
Jonathan Leech-Pepin
1
@ JonathanLeech-Pepin: Proponowane, ale odrzucone przez Emacsa Deva.
Drew

Odpowiedzi:

12

Tak. Biblioteka help-fns+.eldefiniuje polecenie describe-command.

I redefiniuje to describe-functiontak, że describe-commandjeśli zrobisz to z prefiksem arg.

Biblioteka wiąże się describe-commandz C-h c( describe-key-brieflyzostaje przeniesiona C-h C-c).

Ta sama biblioteka definiuje inne polecenia pomocy, takie jak describe-file, describe-buffer, describe-keymap, i describe-option-of-type. Oto więcej informacji o bibliotece.

Rysował
źródło
1
Naprawdę lubię help-fns +, ale dodaje dużą przestrzeń i ogólny komentarz do każdej funkcji, na którą patrzę: imgur.com/NiDlkjS - jakieś pomysły?
Wilfred Hughes
@WilfredHughes: Powinno być OK . (Powinny być również dublowane na MELPA w ciągu 24 godzin.)
Drew
Link Drew z komentarza @ 18:25 jest zepsuty. emacswiki.org/emacs/download/help-fns%2b.el działa.
Realraptor,
1
@Realraptor: Dzięki. Adresy URL EmacsWiki zmieniły się kilka lat temu.
Drew
9

apropos-command może być wystarczająco blisko.

Nie oferuje describe-functionuzupełniania tabulatorów, ale pozwala wyszukiwać tylko za pomocą poleceń i prowadzi do strony z dokumentami.

Malabarba
źródło
8

jeśli masz zainstalowany smex, po prostu zadzwoń do smex. Zacznij pisać, gdy pojawi się odpowiedni, naciśnij Ch f.

Xah Lee
źródło
7

Nie mogę znaleźć tego wbudowanego. Całkiem łatwo jest utworzyć opakowanie, describe-functionktóre uzupełnia nazwy poleceń tylko wtedy, gdy są wywoływane interaktywnie. W poniższej implementacji zduplikowałem interaktywny formularz describe-functioni zmieniłem fboundptest na commandp. Jako dodatkowy bonus, ta funkcja oferuje wszystkie nazwy funkcji, gdy są wywoływane z argumentem przedrostka. Zmień if current-prefix-argna, if (not current-prefix-arg)aby opisywanie wszystkich funkcji było domyślne.

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

Nie testowałem tego z ido, ale powinno się normalnie integrować.

Gilles „SO- przestań być zły”
źródło
Szybki test pokazuje, że działa z IDO. Skopiowano do *scratch*, oceniono, a następnie uruchomiono M-x describe-command. Dzięki nim polecenia pojawiły się na liście pionowej ido-vertical.
Jonathan Leech-Pepin
Czy nie powinna być ostatnia linia (describe-function command)?
npostavs
5

Jeśli używasz steru i helm-M-x, możesz nacisnąć C-jpolecenia, aby wyświetlić ich dokumentację.

Kuna
źródło