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
相同,但针对每个工作组