如何调用放大窗口函数取决于Emacs中的当前窗口



我设置了如下键绑定。

(global-set-key [M-down] 'shrink-window)
(global-set-key [M-up] 'enlarge-window)

所以用M-向上,我可以放大窗口,用M-向下,否则。但如果当前窗口在下侧,我想用M-up放大窗口。如果当前窗口是M向上的上侧,我想调用收缩窗口函数。

同样,如果当前窗口在下侧,我想用M-向下缩小窗口,如果当前窗在上侧,我想放大窗口。

换句话说,我想指出窗口分隔符的方向。

如何编写函数?

当答案出现时,我刚刚完成这段代码。哦,好吧。

(require 'windmove)
(global-set-key [M-up] 
                (lambda() (interactive)
                       (call-interactively
                        (if (windmove-find-other-window 'up)
                            'enlarge-window
                          'shrink-window))))
(global-set-key [M-down] 
                (lambda() (interactive)
                       (call-interactively
                        (if (not (windmove-find-other-window 'up))
                            'enlarge-window
                          'shrink-window))))

利用windmove作为emacs的一部分,您可以这样做:

(require 'windmove)
(defun move-separator-up (arg)
       (interactive "p")
       (if (< (cdr (windmove-other-window-loc 'up)) 0)
           (shrink-window arg)
         (enlarge-window arg)))

(defun move-separator-down (arg)
       (interactive "p")
       (if (< (cdr (windmove-other-window-loc 'up)) 0)
           (enlarge-window arg)
         (shrink-window arg)))

当您有3个窗口时,enlarge-windowshrink-window规则可能并不总是符合您的要求,因此可能需要进行一些进一步的自定义。

最新更新