[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/buffer-expose e4b865e 24/38: Introduce user option to w
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/buffer-expose e4b865e 24/38: Introduce user option to wrap around for vertical movement |
Date: |
Mon, 25 Feb 2019 13:38:01 -0500 (EST) |
branch: externals/buffer-expose
commit e4b865e2603c674a3f0941c6c393a4c858ea7020
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Introduce user option to wrap around for vertical movement
---
buffer-expose.el | 53 ++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 36 insertions(+), 17 deletions(-)
diff --git a/buffer-expose.el b/buffer-expose.el
index 82e710a..f539036 100644
--- a/buffer-expose.el
+++ b/buffer-expose.el
@@ -177,6 +177,10 @@ question as its argument."
"Whether to hide cursors in other windows in the overview."
:type 'boolean)
+(defcustom buffer-expose-wrap-vertically t
+ "Whether to wrap around on vertical movement."
+ :type 'boolean)
+
(defcustom buffer-expose-key-hint
(concat "Navigate with TAB, Shift-TAB, n, p, f, b, [, ]. "
"Press RET, SPC or click to choose a buffer, q to abort. "
@@ -782,25 +786,35 @@ show per page, which defaults to
`buffer-expose-max-num-windows'."
;; * grid commands
+(defun buffer-expose--first-window-in-col (&optional f)
+ "Get first window in column of window F.
+
+F defaults to the currently selected window."
+ (buffer-expose--last-to 'above f))
+(defun buffer-expose--last-window-in-col (&optional f)
+ "Get first window in column of window F.
+
+F defaults to the currently selected window."
+ (buffer-expose--last-to 'below f))
(defun buffer-expose--first-window-in-row (&optional f)
"Get first window in row of window F.
F defaults to the currently selected window."
- (let ((w (or f (selected-window)))
- (nw nil))
- (while (setq w (window-in-direction 'left w))
- (setq nw w))
- nw))
+ (buffer-expose--last-to 'left f))
(defun buffer-expose--last-window-in-row (&optional f)
"Get last window in row of window F.
F defaults to the currently selected window."
+ (buffer-expose--last-to 'right f))
+
+(defun buffer-expose--last-to (dir &optional f)
+ "Get last window in direction DIR from window F."
(let ((w (or f (selected-window)))
(nw nil))
- (while (setq w (window-in-direction 'right w))
+ (while (setq w (window-in-direction dir w))
(setq nw w))
nw))
@@ -869,28 +883,23 @@ F defaults to the currently selected window."
(buffer-expose-reset)
(switch-to-buffer buf)))))
-(defun buffer-expose-right-window ()
- "Switch to window at right side."
- (interactive)
- (let ((w (window-in-direction 'right)))
- (if w (buffer-expose--select-window w)
- (let ((row (buffer-expose--get-current-row)))
- (buffer-expose-next-page)
- (buffer-expose--select-window (buffer-expose--get-window-in-row
row))))))
-
(defun buffer-expose-up-window ()
"Switch to window above."
(interactive)
(let ((w (window-in-direction 'above)))
(if w (buffer-expose--select-window w)
- (user-error "No window above current window"))))
+ (if buffer-expose-wrap-vertically
+ (buffer-expose--select-window (buffer-expose--last-window-in-col))
+ (user-error "No window above current window")))))
(defun buffer-expose-down-window ()
"Switch to window below."
(interactive)
(let ((w (window-in-direction 'below)))
(if w (buffer-expose--select-window w)
- (user-error "No window below current window"))))
+ (if buffer-expose-wrap-vertically
+ (buffer-expose--select-window (buffer-expose--first-window-in-col))
+ (user-error "No window below current window")))))
(defun buffer-expose-left-window ()
"Switch to window at left side."
@@ -904,6 +913,16 @@ F defaults to the currently selected window."
row
(buffer-expose--last-window-in-row (frame-first-window))))))))
+(defun buffer-expose-right-window ()
+ "Switch to window at right side."
+ (interactive)
+ (let ((w (window-in-direction 'right)))
+ (if w (buffer-expose--select-window w)
+ (let ((row (buffer-expose--get-current-row)))
+ (buffer-expose-next-page)
+ (buffer-expose--select-window
+ (buffer-expose--get-window-in-row row))))))
+
(defun buffer-expose-next-window ()
"Switch to next window."
(interactive)
- [elpa] externals/buffer-expose e52f55d 06/38: Filter completions buffer by default, (continued)
- [elpa] externals/buffer-expose e52f55d 06/38: Filter completions buffer by default, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 07ac8cf 12/38: Create window list without redisplay, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 428568c 09/38: Add regex option for buffers to hide, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 814a557 36/38: Fix copyright, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 03fc259 17/38: Fix ordering of buffer view (left>right, top>down), Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 963b107 33/38: Update description, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 5e58e22 19/38: Refactor buffer-expose--other-window, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose eebf28a 30/38: Cleanup, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose c47728e 18/38: Don't use other-window which records the switch, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose bb95721 22/38: More cleanup, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose e4b865e 24/38: Introduce user option to wrap around for vertical movement,
Clemens Radermacher <=
- [elpa] externals/buffer-expose 972a18d 08/38: Add cl-lib to package requires, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 0c189ad 32/38: Add buffer-expose-major-mode binding, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 7e83772 23/38: Don't advice select-window. Use internal selection function instead., Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 6fbc680 37/38: Code reordering, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 1dea5ca 01/38: public release, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose 90675fa 05/38: Fixes according to checkdoc, Clemens Radermacher, 2019/02/25