5

describe-functionを呼び出す Emacs 関数を書きたいと思いますcurrent-word。という名前の関数がない場合はcurrent-word、 を呼び出しますdescribe-variable

書いてみたのですが、呼び出すこともできませんでしdescribe-functioncurrent-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 に答える