[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil a941e89a8c 1/2: Add evil-window-exchange
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil a941e89a8c 1/2: Add evil-window-exchange |
Date: |
Sun, 21 Aug 2022 17:58:18 -0400 (EDT) |
branch: elpa/evil
commit a941e89a8cdd743eeccc0eabb5b833f51bf51cd1
Author: Tom Dalziel <tom_dl@hotmail.com>
Commit: Tom Dalziel <33435574+tomdl89@users.noreply.github.com>
Add evil-window-exchange
Fixes #1385
---
evil-commands.el | 20 ++++++++++++++++++++
evil-maps.el | 2 ++
2 files changed, 22 insertions(+)
diff --git a/evil-commands.el b/evil-commands.el
index 0c6945d42c..6c5da915c7 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 63f52f9eb6..3afb46da97 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)