From a7f07baa281dbfed19e1cf799db7ada961a8e200 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Mon, 10 Nov 2014 16:34:19 +0100 Subject: [PATCH] Add transpose-windows defun It exchanges the position of two windows. Works only if there are exactly two windows open. --- init.el | 1 + transpose-windows.el | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 transpose-windows.el diff --git a/init.el b/init.el index 4ad1c7b..b050365 100644 --- a/init.el +++ b/init.el @@ -67,6 +67,7 @@ (load "toggle-window-split.el") (load "round-number-to-decimals.el") (load "clearcase.el") +(load "transpose-windows.el") (add-hook 'c-mode-hook 'helm-gtags-mode) (add-hook 'c-mode-hook 'which-func-mode) diff --git a/transpose-windows.el b/transpose-windows.el new file mode 100644 index 0000000..1fd6240 --- /dev/null +++ b/transpose-windows.el @@ -0,0 +1,11 @@ +(defun transpose-windows (arg) + "Transpose the buffers shown in two windows." + (interactive "p") + (let ((selector (if (>= arg 0) 'next-window 'previous-window))) + (while (/= arg 0) + (let ((this-win (window-buffer)) + (next-win (window-buffer (funcall selector)))) + (set-window-buffer (selected-window) next-win) + (set-window-buffer (funcall selector) this-win) + (select-window (funcall selector))) + (setq arg (if (plusp arg) (1- arg) (1+ arg))))))