aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--evil-commands.el20
-rw-r--r--evil-maps.el2
2 files changed, 22 insertions, 0 deletions
diff --git a/evil-commands.el b/evil-commands.el
index 0c6945d..6c5da91 100644
--- a/evil-commands.el
+++ b/evil-commands.el
@@ -4555,6 +4555,26 @@ If ARG is empty, maximize the current window height."
slist (cdr slist)))
(select-window (cadr (window-list))))))
+(evil-define-command evil-window-exchange (count)
+ "Without COUNT: exchange current window with next one.
+With COUNT: Exchange current window with COUNTth window."
+ :repeat nil
+ (interactive "<c>")
+ (let ((this-buffer (window-buffer)))
+ (if (not count)
+ (let ((next-buffer (window-buffer (next-window))))
+ (switch-to-buffer next-buffer nil t)
+ (select-window (next-window))
+ (switch-to-buffer this-buffer nil t))
+ (let (other-window other-buffer)
+ (save-window-excursion
+ (evil-window-next count)
+ (setq other-window (selected-window)
+ other-buffer (window-buffer)))
+ (switch-to-buffer other-buffer nil t)
+ (select-window other-window)
+ (switch-to-buffer this-buffer nil t)))))
+
(evil-define-command evil-window-move-very-top ()
"Closes the current window, splits the upper-left one horizontally
and redisplays the current buffer there."
diff --git a/evil-maps.el b/evil-maps.el
index 63f52f9..3afb46d 100644
--- a/evil-maps.el
+++ b/evil-maps.el
@@ -142,6 +142,7 @@
(define-key evil-window-map "v" 'evil-window-vsplit)
(define-key evil-window-map "w" 'evil-window-next)
(define-key evil-window-map "W" 'evil-window-prev)
+(define-key evil-window-map "x" 'evil-window-exchange)
(define-key evil-window-map "+" 'evil-window-increase-height)
(define-key evil-window-map "-" 'evil-window-decrease-height)
(define-key evil-window-map ":" 'evil-ex)
@@ -177,6 +178,7 @@
(define-key evil-window-map "\C-v" 'evil-window-vsplit)
(define-key evil-window-map "\C-w" 'evil-window-next)
(define-key evil-window-map (kbd "C-S-W") 'evil-window-prev)
+(define-key evil-window-map "\C-x" 'evil-window-exchange)
(define-key evil-window-map "\C-_" 'evil-window-set-height)
(define-key evil-window-map [C-down] 'evil-window-down)
(define-key evil-window-map [C-up] 'evil-window-up)