我希望有一个快捷方式在emacs中创建一个新框架,它将始终显示创建它的框架的活动缓冲区。这样,框架可以移动到另一个工作区,以保持另一个emacs框架的小预览。
以下是我对一个函数的尝试,该函数将使新帧始终显示父帧的缓冲区。 get-active-buffer是伪代码,但除此之外,其余的应该可以解决问题。
(defun display-active-buffer (parent-frame)
(while t
(let ((active-buffer (get-current-buffer parent-frame)))
(cond (/= active-buffer (current-buffer))
(switch-to-buffer-other-frame active-buffer)))))
我真的只是想知道get-current-buffer这样的函数是什么样的,它会像当前缓冲区一样,除了它会将一个帧作为参数,而不仅仅是使用当前帧。我还需要找出一些方法将父框架的名称传递给这个函数。我也不确定为此使用无限循环是多么聪明。如果有人知道更好的方法,请告诉我们。
我觉得这可能是添加到emacs的一个非常有用的功能,所以如果我想出所有这些,我将确保编辑这篇文章,为任何人添加我完成的代码。
答案 0 :(得分:3)
我不知道你为什么要这样做,但我认为这就是你所描述的:
(defun make-frame-synced-to-current-frame-current-buffer ()
(interactive)
(let ((parent-frame (selected-frame))
(synced-frame (make-frame)))
(add-hook
'window-configuration-change-hook
`(lambda ()
(if (eq (selected-frame) ,parent-frame)
(save-excursion
(select-frame ,synced-frame)
(switch-to-buffer (window-buffer
(frame-selected-window
,parent-frame)))
(select-frame ,parent-frame)))))))