5

我想编写一个 Emacs 函数来调用describe-function. current-word如果没有命名函数current-word,那么它会调用describe-variable.

我试图写它,但我什至无法describe-function呼吁current-word......

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

我该怎么写?

4

2 回答 2

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)))))
于 2013-07-19T21:26:14.367 回答
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。在尝试描述它之前,它还确保变量是绑定的。

于 2013-07-20T13:15:16.433 回答