"सबसे आसान तरीका" सिर्फ अपने स्वयं के संस्करण को परिभाषित करना है describe-function
, और इसे बांधना है C-h f
।
वेनिला कोड लें, और केवल कॉल को बदल दें completing-read
ताकि वह उसी इतिहास सूची का उपयोग करे जो M-x
( execute-extended-command
) उपयोग करता है, जो है extended-command-history
।
(defun my-describe-function (function)
"Display the full documentation of FUNCTION (a symbol)."
(interactive
(let ((fn (function-called-at-point))
(enable-recursive-minibuffers t)
val)
(setq val (completing-read
(if fn
(format "Describe function (default %s): " fn)
"Describe function: ")
obarray 'fboundp t nil
'extended-command-history ; <======================
(and fn (symbol-name fn))))
(list (if (equal val "") fn (intern val)))))
(if (null function)
(message "You didn't specify a function")
(help-setup-xref (list #'describe-function function)
(called-interactively-p 'interactive))
(save-excursion
(with-help-window (help-buffer)
(prin1 function)
(princ " is ")
(describe-function-1 function)
(with-current-buffer standard-output
(buffer-string))))))
(global-set-key "\C-hf" 'my-describe-function)
मुझे मूल कोड कैसे मिला? C-h f describe-function
, C-h k M-x
, C-h f execute-extended-command
। कोड में execute-extended-command
मैंने देखा कि यह कमांड नाम का उपयोग करके पढ़ता है read-extended-command
, और यह तर्क के रूप में completing-read
गुजरता है।extended-command-history
HISTORY
smex
औरhelm-M-x
? पूर्व MELPA में है, बाद वाले कोhelm
MELPA में शामिल किया गया है।