1

我想有一个快捷方式在 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 中的一个非常有用的功能,所以如果我把所有这些都弄清楚了,我一定会编辑这篇文章以添加我完成的代码供任何人使用。

4

1 回答 1

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)))))))
于 2013-01-06T05:32:43.560 回答