Есть ли команда `описывает-команда ', подобная команде` описать-функция'?

14

Я C-h fинтенсивно использую , но это все функции в Emacs. Меня часто интересуют только интерактивные функции, то есть команды.

Есть ли эквивалент для команд? В идеале я бы тоже хотел завершить идо.

Уилфред Хьюз
источник
1
Следующий вопрос, почему это не в Emacs?
Джонатан Лич-Пепин
1
@ JonathanLeech-Pepin: Предложено, но отклонено Emacs Dev.
Дрю

Ответы:

12

Да. Библиотека help-fns+.elопределяет команду describe-command.

И он переопределяет describe-functionтак, что он делает, describe-commandесли вы даете ему префикс arg.

Библиотека связывается describe-commandс C-h c( describe-key-brieflyперемещается в C-h C-c).

Та же библиотека определяет другие команды справки, такие как describe-file, describe-buffer, describe-keymap, и describe-option-of-type. Вот больше информации о библиотеке.

Нарисовалась
источник
1
Мне действительно нравится help-fns +, но он добавляет большой пробел и общий комментарий к каждой функции, на которую я смотрю: imgur.com/NiDlkjS - есть идеи?
Уилфред Хьюз
@WilfredHughes: теперь все должно быть в порядке . (Следует также отразить на MELPA в течение 24 часов.)
Дрю
Ссылка Дрю из комментария @ 18:25 не работает. emacswiki.org/emacs/download/help-fns%2b.el работает.
Realraptor
1
@Realraptor: Спасибо. URL-адреса EmacsWiki изменились несколько лет назад.
Дрю
9

apropos-command может быть достаточно близко.

Он не предлагает describe-functionзавершение вкладки, но позволяет искать только с помощью команд и переносит вас на страницу документации.

Malabarba
источник
8

если у вас установлен smex, просто позвоните в smex. Начните печатать, когда появится нужный, нажмите Ch f.

Ха Ли
источник
7

Я не могу найти это встроенным. Довольно легко создать оболочку, describe-functionкоторая завершает имена команд только при интерактивном вызове. В приведенной ниже реализации я продублировал интерактивную форму describe-functionи изменил fboundpтест на commandp. В качестве дополнительного бонуса эта функция предлагает имена всех функций при вызове с префиксным аргументом. Измените if current-prefix-argна, if (not current-prefix-arg)чтобы сделать описание всех функций по умолчанию.

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

Я не проверял это с ido, но оно должно нормально интегрироваться.

Жиль "ТАК - перестань быть злым"
источник
Быстрый тест показывает, что он работает с IDO. Скопировал *scratch*, оценил, затем запустил M-x describe-command. Команды отображаются в вертикальном списке благодаря ido-vertical.
Джонатан Лич-Пепин
Не должна быть последняя строка (describe-function command)?
npostavs
5

Если вы используете helm и helm-M-x, вы можете нажать C-jна команды, чтобы открыть их документацию.

Куница
источник