2013-07-31 106 views
1

我设置了如下的关键字。如何调用放大窗口功能取决于Emacs的当前窗口

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

所以在M-up中,我可以放大窗口,否则用M-down。 但是,如果当前窗口偏低,我想用M-up来放大窗口。 如果当前窗口是M-up的上方,我想调用shrink-window函数。

同样欲收缩与M-向下窗口,如果当前窗口是下侧,并且放大如果当前窗口是上侧。

换句话说,我想表明窗口分离器的方向。

我该如何编写函数?

+0

而当你有多个拆分? – phils

回答

2

我刚刚完成这个代码,因为答案出现了。好吧。

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

真是巧合! :D非常感谢! – ironsand

1

趁着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规则可能并不总是做你想做的,所以一些进一步的定制会被需要。

+0

通常我只使用2个窗口,所以这不是问题。感谢您的回答! – ironsand