[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/buffer-expose c47728e 18/38: Don't use other-window whi
From: |
Clemens Radermacher |
Subject: |
[elpa] externals/buffer-expose c47728e 18/38: Don't use other-window which records the switch |
Date: |
Mon, 25 Feb 2019 13:38:00 -0500 (EST) |
branch: externals/buffer-expose
commit c47728ed4453ebc1eefbf94fa891f4f9cf5b38a6
Author: Clemens Radermacher <address@hidden>
Commit: Clemens Radermacher <address@hidden>
Don't use other-window which records the switch
---
buffer-expose.el | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 53 insertions(+), 4 deletions(-)
diff --git a/buffer-expose.el b/buffer-expose.el
index c03e6e9..a31c169 100644
--- a/buffer-expose.el
+++ b/buffer-expose.el
@@ -384,8 +384,57 @@ Windows are orderd by `buffer-expose--next-window'."
(push w ws))
(nreverse ws)))
-(defvar buffer-expose--window-list nil)
+(defun buffer-expose--other-window (count &optional all-frames)
+ "Like `other-window' but don't record."
+ (interactive "p")
+ (let* ((window (selected-window))
+ (function (and (not ignore-window-parameters)
+ (window-parameter window 'other-window)))
+ old-window old-count)
+ (if (functionp function)
+ (funcall function count all-frames)
+ ;; `next-window' and `previous-window' may return a window we are
+ ;; not allowed to select. Hence we need an exit strategy in case
+ ;; all windows are non-selectable.
+ (catch 'exit
+ (while (> count 0)
+ (setq window (next-window window nil all-frames))
+ (cond
+ ((eq window old-window)
+ (when (= count old-count)
+ ;; Keep out of infinite loops. When COUNT has not changed
+ ;; since we last looked at `window' we're probably in one.
+ (throw 'exit nil)))
+ ((window-parameter window 'no-other-window)
+ (unless old-window
+ ;; The first non-selectable window `next-window' got us:
+ ;; Remember it and the current value of COUNT.
+ (setq old-window window)
+ (setq old-count count)))
+ (t
+ (setq count (1- count)))))
+ (while (< count 0)
+ (setq window (previous-window window nil all-frames))
+ (cond
+ ((eq window old-window)
+ (when (= count old-count)
+ ;; Keep out of infinite loops. When COUNT has not changed
+ ;; since we last looked at `window' we're probably in one.
+ (throw 'exit nil)))
+ ((window-parameter window 'no-other-window)
+ (unless old-window
+ ;; The first non-selectable window `previous-window' got
+ ;; us: Remember it and the current value of COUNT.
+ (setq old-window window)
+ (setq old-count count)))
+ (t
+ (setq count (1+ count)))))
+
+ (select-window window :no-record)
+ ;; Always return nil.
+ nil))))
+(defvar buffer-expose--window-list nil)
(defun buffer-expose-create-grid (x y)
"Create window grid with X columns, Y rows."
@@ -398,12 +447,12 @@ Windows are orderd by `buffer-expose--next-window'."
(split-window-vertically)
(dotimes (_ (1- x))
(push (split-window-horizontally) ws)
- (other-window 1))
- (other-window 1)
+ (buffer-expose--other-window 1))
+ (buffer-expose--other-window 1)
(push (selected-window) ws))
(dotimes (_ (1- x))
(push (split-window-horizontally) ws)
- (other-window 1))
+ (buffer-expose--other-window 1))
(balance-windows)
(setq buffer-expose--window-list
(nreverse ws))))
- [elpa] externals/buffer-expose 5748ffb 34/38: Update docstrings, (continued)
- [elpa] externals/buffer-expose 5748ffb 34/38: Update docstrings, Clemens Radermacher, 2019/02/25
- [elpa] externals/buffer-expose c5eb139 16/38: Add custom command example, Clemens Radermacher, 2019/02/25
- [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 <=
- [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, 2019/02/25
- [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