Emacs 如何将获胜者和工作组结合起来?

Emacs 如何将获胜者和工作组结合起来?,emacs,window,workflow,Emacs,Window,Workflow,我在工作流程中使用了许多工作组(包工作组或工作组2)。如果我切换到某个工作组并尝试winner undo,我将从以前的工作组获得窗口配置。 我可以为每个工作组使用单独的winner undo历史记录吗 如果您愿意编写elisp: winner ring alist是按帧键控的窗口配置环列表(即每帧配置一个窗口环) 我建议您定义一个按帧和工作组标识符(不管是什么)键控的新列表,您可以在其中为每个帧存储特定于工作组的winner配置环 我设想有一个“switch workgroup”钩子,您可以使用

我在工作流程中使用了许多工作组(包
工作组
工作组2
)。如果我切换到某个工作组并尝试
winner undo
,我将从以前的工作组获得窗口配置。 我可以为每个工作组使用单独的
winner undo
历史记录吗


如果您愿意编写elisp:

winner ring alist
是按帧键控的窗口配置环列表(即每帧配置一个窗口环)

我建议您定义一个按帧和工作组标识符(不管是什么)键控的新列表,您可以在其中为每个帧存储特定于工作组的winner配置环

我设想有一个“switch workgroup”钩子,您可以使用它将当前帧的配置环写入您的列表(对于您要切换的工作组),然后将当前帧的环替换为您要切换到的工作区的存储配置

可能没有更多的了。只要winner看到了它所需要的数据,它就可能“正常工作”


如果它工作得很好,请考虑将代码贡献给工作组项目。

UPD。上次测试

workgroups2
undo功能时,我犯了一个错误,误解了
wg undo wconfig change
wg redo wconfig change
)的行为。因此,
workgroups2
可以像
winner mode
那样保存每个工作组的历史记录。此解决方案只能用于
工作组
软件包

我写道:

(defvar wg winner vars nil)
(定义值为零)
(setq wg winner vars)(赢家戒指)
赢家电流
赢家积分榜
撤消数据
赢家撤销计数器
赢家(等待撤消环)
(setq-wg-winner散列(使散列表:test'equal))
(德芬wg赢家看跌期权(赢家名称)
(let((工作组(忽略错误)(工作组名称(工作组当前工作组()()))))
(如果工作组
(puthash(列出工作组获奖者姓名)(评估获奖者姓名)工作组获奖者哈希)
(德芬wg赢家获得(赢家名称)
(let((工作组(忽略错误)(工作组名称(工作组当前工作组()()))))
(如果工作组
(eval`(setq,winner name(gethash’(,wg,winner name)wg winner hash()()())))
(德芬wg赢家拯救()
(如果是赢家模式
(项目
(赢家模式-1)
(取消wg赢家模式还原()
(赢家模式1)
(defun wg winner mode restore())
(mapcar的工作组赢家put工作组赢家vars)
(卸载负载()
(mapcar的工作组赢家获得工作组赢家vars)
(工作组赢家模式恢复)
(defadvice工作组切换到工作组(工作组获胜者之前,激活之前)
(工作组胜利者拯救)
(defadvice工作组切换到工作组(工作组激活后)
(负载)
我刚推了一个按钮。
现在,
winner undo
winner redo
命令被重新映射到工作组的命令,这些命令的作用与
winner
相同,但针对每个工作组