2013-07-31 36 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