emacs-elpa-diffs
[Top][All Lists]
Advanced

[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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]