0

我正在从 alist 创建一个小部件,并且当小部件(通过 for 循环创建)正确显示时, :notify 指令永远不会被处理。我无法解释。

 (widget-create (get-data (author score num_comments title subreddit) a 
            (list 'push-button
              :action (lambda (&rest ignore)
                    (message "test"))
              :post-id n
              :reddit-author author
              :reddit-score score
              :reddit-comments num_comments
              :reddit-title title
              :reddit-subreddit subreddit
              (format "%s" author))))

我还尝试从头开始创建一个小部件,并且通知指令也被忽略了;

 (widget-create 'push-button 
   :notify (lambda (&rest ignore) 
             (message "trigger")) 
   "click me")

我还读到action关键字的作用类似于 notify,所以我试了一下。没啥事儿。

谁能指出我正确的方向?

2012 年 6 月 10 日在 MARVIN 上的 GNU Emacs 24.1.1 (i386-mingw-nt6.2.9200)

4

1 回答 1

0

弄清楚了。事实证明,您必须将它们的键映射设置为小部件的映射才能使此功能起作用。有道理,我只是没有看过这部分文档。如果您使用自己的键盘映射,则可以将小部件的键盘映射设为父级,如下所示:

(defvar your-mode-map
  (let ((map (make-sparse-keymap)))
    (set-keymap-parent map widget-keymap)
    (define-key map "q" 'your-quit)
    map)
  "Custom key map")
于 2013-02-16T22:28:06.087 回答