unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: pillule <pillule@riseup.net>
To: pillule <pillule@riseup.net>
Cc: Robert Pluim <rpluim@gmail.com>,
	48916@debbugs.gnu.org, Juri Linkov <juri@linkov.net>
Subject: bug#48916: 28.0.50; allow windmove to select windows with the 'no-other-window parameter
Date: Tue, 15 Jun 2021 21:50:03 +0200	[thread overview]
Message-ID: <87o8c6525z.fsf@riseup.net> (raw)
In-Reply-To: <878s3kzm66.fsf@riseup.net>

[-- Attachment #1: Type: text/plain, Size: 892 bytes --]

References: <878s3kzm66.fsf@riseup.net> <83czswfunl.fsf@gnu.org> <87zgw0xxya.fsf@riseup.net> <83y2bke98n.fsf@gnu.org> <878s3k76pe.fsf@gmail.com> <87mtryj28g.fsf@riseup.net> <87lf7ibxxf.fsf@mail.linkov.net> <87a6nyks9y.fsf@riseup.net>
User-agent: mu4e 1.5.11; emacs 28.0.50
In-reply-to: <87a6nyks9y.fsf@riseup.net>

pillule <pillule@riseup.net> writes:

> Juri Linkov <juri@linkov.net> writes:
>
>>> Should we --for these windmove-commands :
>>> 1. keep them as they are
>>> 2. make aliases and clean-up 'windmove-display-in-direction'
>>> 3. delete them and clean-up 'windmove-display-in-direction'
>>> ?
>>
>> Please keep them as they are.  It's very convenient
>> to bind these commands to use the same prefix keys
>> that are configured by windmove customization
>> (that was greatly improved recently!)
>
> Ok fine.

Hi, here the patch for this one  with v28.1 and an updated docstring.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: user-option for no-other-window --]
[-- Type: text/x-diff, Size: 6662 bytes --]

From e1052bbfb919e9988b14a12e136dfebac86521f1 Mon Sep 17 00:00:00 2001
From: Trust me I am a doctor <pillule@riseup.net>
Date: Tue, 8 Jun 2021 11:51:55 +0200
Subject: [PATCH] User-option to select 'no-other-window' with windmove
 (bug#48916)

* lisp/windmove.el (windmove-wrap-around): Remove superfluous :group
tag.
(windmove-create-window): Remove superfluous :group tag.
(windmove-window-distance-delta): Remove superfluous :group tag.
(windmove-allow-all-windows): Add new user option to allow the
commands of windmove to target windows with the 'no-other-window
parameter.
(windmove-find-other-window): Use windmove-allow-all-windows.
(windmove-display-no-select): Remove superfluous :group tag.
(windmove-display-in-direction): Use windmove-allow-all-windows.
(windmove-delete-in-direction): Use windmove-allow-all-windows.
(windmove-swap-states-in-direction): Use windmove-allow-all-windows.
(windmove-default-keybindings): Remove superfluous :group tag.
(windmove-display-default-keybindings): Remove superfluous :group tag.
(windmove-delete-default-keybindings): Remove superfluous :group tag.
(windmove-swap-states-default-keybindings): Remove superfluous :group tag.
---
 lisp/windmove.el | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/lisp/windmove.el b/lisp/windmove.el
index f558903681..3df4a01116 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -138,8 +138,7 @@ windmove-wrap-around
 a frame will find the rightmost one, and similarly for the other
 directions.  The minibuffer is skipped over in up/down movements if it
 is inactive."
-  :type 'boolean
-  :group 'windmove)
+  :type 'boolean)
 
 (defcustom windmove-create-window nil
   "Whether movement off the edge of the frame creates a new window.
@@ -147,7 +146,6 @@ windmove-create-window
 a frame will create a new window on the left, and similarly for the other
 directions."
   :type 'boolean
-  :group 'windmove
   :version "27.1")
 
 ;; If your Emacs sometimes places an empty column between two adjacent
@@ -157,11 +155,18 @@ windmove-window-distance-delta
 Measured in characters either horizontally or vertically; setting this
 to a value larger than 1 may be useful in getting around window-
 placement bugs in old versions of Emacs."
-  :type 'number
-  :group 'windmove)
+  :type 'number)
 (make-obsolete-variable 'windmove-window-distance-delta
                         "no longer used." "27.1")
 
+(defcustom windmove-allow-all-windows nil
+  "Whether the windmove commands are allowed to target all type of windows.
+If this variable is set to non-nil, all windmove commmands will
+ignore the no-other-window parameter applied by `display-buffer-alist'
+or `set-window-parameter'."
+  :type 'boolean
+  :version "28.1")
+
 \f
 ;; Note:
 ;;
@@ -342,7 +347,8 @@ windmove-find-other-window
 Optional ARG, if negative, means to use the right or bottom edge of
 WINDOW as reference position, instead of `window-point'; if positive,
 use the left or top edge of WINDOW as reference point."
-  (window-in-direction dir window nil arg windmove-wrap-around t))
+  (window-in-direction dir window windmove-allow-all-windows
+                       arg windmove-wrap-around t))
 
 ;; Selects the window that's hopefully at the location returned by
 ;; `windmove-find-other-window', or screams if there's no window there.
@@ -480,7 +486,6 @@ windmove-default-keybindings
 (defcustom windmove-display-no-select nil
   "Whether the window should be selected after displaying the buffer in it."
   :type 'boolean
-  :group 'windmove
   :version "27.1")
 
 (defun windmove-display-in-direction (dir &optional arg)
@@ -517,7 +522,7 @@ windmove-display-in-direction
                        ((eq dir 'same-window)
                         (selected-window))
                        (t (window-in-direction
-                           dir nil nil
+                           dir nil windmove-allow-all-windows
                            (and arg (prefix-numeric-value arg))
                            windmove-wrap-around 'nomini)))))
          (unless window
@@ -606,8 +611,8 @@ windmove-delete-in-direction
 select the window at direction DIR.
 When `windmove-wrap-around' is non-nil, takes the window
 from the opposite side of the frame."
-  (let ((other-window (window-in-direction dir nil nil arg
-                                           windmove-wrap-around 'nomini)))
+  (let ((other-window (window-in-direction dir nil windmove-allow-all-windows
+                                           arg windmove-wrap-around 'nomini)))
     (cond ((null other-window)
            (user-error "No window %s from selected window" dir))
           (t
@@ -680,8 +685,8 @@ windmove-swap-states-in-direction
   "Swap the states of the selected window and the window at direction DIR.
 When `windmove-wrap-around' is non-nil, takes the window
 from the opposite side of the frame."
-  (let ((other-window (window-in-direction dir nil nil nil
-                                           windmove-wrap-around 'nomini)))
+  (let ((other-window (window-in-direction dir nil windmove-allow-all-windows
+                                           nil windmove-wrap-around 'nomini)))
     (cond ((or (null other-window) (window-minibuffer-p other-window))
            (user-error "No window %s from selected window" dir))
           (t
@@ -761,8 +766,7 @@ windmove-default-keybindings
           (null val))
          (set-default sym val))
   :type windmove--default-keybindings-type
-  :version "28.1"
-  :group 'windmove)
+  :version "28.1")
 
 (defcustom windmove-display-default-keybindings nil
   "Default keybindings for windmove directional buffer display commands.
@@ -780,8 +784,7 @@ windmove-display-default-keybindings
           (null val))
          (set-default sym val))
   :type windmove--default-keybindings-type
-  :version "28.1"
-  :group 'windmove)
+  :version "28.1")
 
 (defcustom windmove-delete-default-keybindings nil
   "Default keybindings for windmove directional window deletion commands.
@@ -796,8 +799,7 @@ windmove-delete-default-keybindings
           (null val))
          (set-default sym val))
   :type windmove--default-keybindings-type
-  :version "28.1"
-  :group 'windmove)
+  :version "28.1")
 
 (defcustom windmove-swap-states-default-keybindings nil
   "Default keybindings for windmove's directional window swap-state commands.
@@ -812,8 +814,7 @@ windmove-swap-states-default-keybindings
           (null val))
          (set-default sym val))
   :type windmove--default-keybindings-type
-  :version "28.1"
-  :group 'windmove)
+  :version "28.1")
 
 \f
 (provide 'windmove)
-- 
2.20.1


[-- Attachment #3: Type: text/plain, Size: 4 bytes --]


--

  parent reply	other threads:[~2021-06-15 19:50 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-08 10:09 bug#48916: 28.0.50; allow windmove to select windows with the 'no-other-window parameter pillule
2021-06-08 11:44 ` Eli Zaretskii
2021-06-08 13:28   ` pillule
2021-06-08 14:12     ` Eli Zaretskii
2021-06-08 14:48       ` Robert Pluim
2021-06-09 17:37         ` pillule
2021-06-09 20:13           ` Juri Linkov
2021-06-10  8:58             ` pillule
2021-06-08 13:57   ` pillule
2021-06-08 14:13     ` Eli Zaretskii
2021-06-08 14:26       ` pillule
2021-06-08 16:46 ` Juri Linkov
2021-06-15 19:50 ` pillule [this message]
2021-06-15 23:27   ` Juri Linkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87o8c6525z.fsf@riseup.net \
    --to=pillule@riseup.net \
    --cc=48916@debbugs.gnu.org \
    --cc=juri@linkov.net \
    --cc=rpluim@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).