在emacs中,我如何打开一个总是显示其父帧的活动缓冲区的新帧?



我想要一个在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这样的函数是什么样的,它的作用就像current-buffer,除了它会把一个帧作为参数,而不仅仅是使用当前帧。我还需要找出将父框架的名称传递给此函数的方法。我也不确定使用无限while循环有多聪明。如果有人知道更好的方法,请告诉我。

我觉得这可能是一个非常有用的特性,可以添加到emacs中,所以如果我弄清楚了所有这些,我一定会编辑这篇文章,添加我完成的代码供任何人使用。

我不知道你为什么要这样做,但我认为这做了你所描述的:

(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)))))))

最新更新