如何在emacs中获取当前小部件次要模式缓冲区中所有小部件的值?

如何在emacs中获取当前小部件次要模式缓冲区中所有小部件的值?,emacs,widget,elisp,Emacs,Widget,Elisp,例如,我们有由提供的缓冲区。所以我想获得一个函数,它将返回关联的“((widget name.widget value)…”列表 比如: (widget-create 'push-button :notify 'get-widgets-alist "Get Widgets") 我不完全确定你在问什么。在第一段中,您似乎要求提供一个函数,该函数将返回缓冲区中的所有小部件。但是您的示例表明您需要一个小部件通知功能。那么,你到底想要什么 (

例如,我们有由提供的缓冲区。所以我想获得一个函数,它将返回关联的“((widget name.widget value)…”列表

比如:

(widget-create 'push-button
               :notify 'get-widgets-alist
               "Get Widgets")

我不完全确定你在问什么。在第一段中,您似乎要求提供一个函数,该函数将返回缓冲区中的所有小部件。但是您的示例表明您需要一个小部件通知功能。那么,你到底想要什么

(require 'cl)
(defun get-widgets ()
  "Return a list of widgets in the current buffer."
  (save-excursion
    (goto-char (point-min))
    (loop while (not (eobp))
          for new = (widget-at)
          and old = nil then new
          when (and new (not (eq new old))) collect new
          do (goto-char (next-overlay-change (point))))))

你好你的方法很有趣。在我的例子中,我定义了缓冲区中所有可写小部件的列表,然后将
mapcar'小部件值应用于它。谢谢你回答我的模糊问题。