如何在Emacs中为current-word调用describe-function?

时间:2013-07-19 21:18:46

标签: emacs

我想编写一个为describe-function调用current-word的Emacs函数。如果没有名为current-word的函数,则会调用describe-variable

我试着写它,但我甚至无法拨打describe-function current-word ...

(defun describe-function-or-variable ()
(interactive)
(describe-function `(current-word)))

我怎么写呢?

2 个答案:

答案 0 :(得分:6)

这样的事情应该有效:

(defun describe-function-or-variable ()
  (interactive)
  (let ((sym (intern-soft (current-word))))
    (cond ((null sym)
           "nothing")
          ((functionp sym)
           (describe-function sym))
          (t
           (describe-variable sym)))))

答案 1 :(得分:2)

这是一个更通用的功能:

(defun describe-function-or-variable ()
  (interactive)
  (let ((sym (intern-soft (current-word))))
    (unless
        (cond ((null sym))
              ((not (eq t (help-function-arglist sym)))
               (describe-function sym))
              ((boundp sym)
               (describe-variable sym)))
      (message "nothing"))))

适用于特殊形式,例如: and,以及宏,例如case。 在尝试描述变量之前,它还确保变量被绑定。