GNU bug report logs - #48917
28.0.50; allow user to choose what function is used when windmove create a window

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: pillule <pillule@HIDDEN>; Keywords: fixed patch; Done: Juri Linkov <juri@HIDDEN>; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
bug marked as fixed in version 28.0.50, send any further explanations to 48917 <at> debbugs.gnu.org and pillule <pillule@HIDDEN> Request was from Juri Linkov <juri@HIDDEN> to control <at> debbugs.gnu.org. Full text available.
Added tag(s) fixed. Request was from Juri Linkov <juri@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 15 Jun 2021 23:33:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 15 19:33:48 2021
Received: from localhost ([127.0.0.1]:51057 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ltIZ1-00078x-UU
	for submit <at> debbugs.gnu.org; Tue, 15 Jun 2021 19:33:48 -0400
Received: from relay6-d.mail.gandi.net ([217.70.183.198]:42339)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <juri@HIDDEN>)
 id 1ltIYz-00078F-HM; Tue, 15 Jun 2021 19:33:45 -0400
Received: (Authenticated sender: juri@HIDDEN)
 by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 68EF9C0004;
 Tue, 15 Jun 2021 23:33:36 +0000 (UTC)
From: Juri Linkov <juri@HIDDEN>
To: pillule <pillule@HIDDEN>
Subject: Re: bug#48917: 28.0.50; allow user to choose what function is used
 when windmove create a window
Organization: LINKOV.NET
References: <875yyozkpj.fsf@HIDDEN> <83a6o0fue0.fsf@HIDDEN>
 <87tum8xx0z.fsf@HIDDEN> <871r96envu.fsf@HIDDEN>
 <87lf7a4vzx.fsf@HIDDEN>
Date: Wed, 16 Jun 2021 02:32:46 +0300
In-Reply-To: <87lf7a4vzx.fsf@HIDDEN> (pillule@HIDDEN's message of
 "Wed, 16 Jun 2021 00:04:12 +0200")
Message-ID: <87r1h2k8kh.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48917
Cc: Eli Zaretskii <eliz@HIDDEN>, 48917 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

tags 48917 fixed
close 48917 28.0.50
thanks

>> If you have not signed papers yet, I guess
>> these patches are small enough to push.
>>
>> But in both patches please change the :version tag to "28.1".
>
> I get the papers now \o/

Good news.  So now your patch is pushed.  Thanks for this useful feature.

> I was a little bit worried that this user-option is quite obscure to understand,
> so among other little docstring fixes, I documented an usage with
> 'display-buffer-alist' in the commentary section of the package.
>
> Please let me know if it is not desirable, in which case I will remove it.

It doesn't look like a suitable place to document its possible uses.
So pushed without commentary.

> Also I added the parent function ARG to be passed, it is an universal-argument.

This is a good change.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 15 Jun 2021 22:22:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 15 18:22:08 2021
Received: from localhost ([127.0.0.1]:50999 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ltHRf-0005OY-RM
	for submit <at> debbugs.gnu.org; Tue, 15 Jun 2021 18:22:08 -0400
Received: from mx1.riseup.net ([198.252.153.129]:45070)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <pillule@HIDDEN>) id 1ltHRe-0005O4-BU
 for 48917 <at> debbugs.gnu.org; Tue, 15 Jun 2021 18:22:07 -0400
Received: from fews1.riseup.net (fews1-pn.riseup.net [10.0.1.83])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "Sectigo RSA Domain Validation Secure Server CA" (not verified))
 by mx1.riseup.net (Postfix) with ESMTPS id 4G4N8m5nvLzDqB4;
 Tue, 15 Jun 2021 15:22:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1623795720; bh=j8cP7CCcwOy2y6UMAHGp10az1dN1Can0NDshIesKEcs=;
 h=References:From:To:Cc:Subject:Date:In-reply-to:From;
 b=GFWhqK2nQMvREJZ7qzF4LZkGvY6Cnb/NjbxpOz+4pwqbVo56bQwaOiIS9FjTM/igE
 uY7LoBYkgt2TIwvI9enYBzy3QDHw2DpajC3ZCx0SKlLXyrzvudXsF7gIIQOptVnY3G
 DLbhRMl8t+rwfm3vDCVNUmCsoBqEBoNc7XqWDQ6A=
X-Riseup-User-ID: 630A3C5559578D3C1D1EDC8465CB2BF8CA2E5928F19F5F4C0CBB2186BC6FB57D
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by fews1.riseup.net (Postfix) with ESMTPSA id 4G4N8k13gBz5vY3;
 Tue, 15 Jun 2021 15:21:57 -0700 (PDT)
References: <875yyozkpj.fsf@HIDDEN> <83a6o0fue0.fsf@HIDDEN>
 <87tum8xx0z.fsf@HIDDEN> <871r96envu.fsf@HIDDEN>
 <87lf7a4vzx.fsf@HIDDEN>
From: pillule <pillule@HIDDEN>
To: pillule <pillule@HIDDEN>
Subject: Re: bug#48917: 28.0.50; allow user to choose what function is used
 when windmove create a window
Date: Wed, 16 Jun 2021 00:20:31 +0200
In-reply-to: <87lf7a4vzx.fsf@HIDDEN>
Message-ID: <87im2e4vlt.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48917
Cc: Eli Zaretskii <eliz@HIDDEN>, 48917 <at> debbugs.gnu.org,
 Juri Linkov <juri@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--=-=-=
Content-Type: text/plain


pillule <pillule@HIDDEN> writes:

> Juri Linkov <juri@HIDDEN> writes:
>
>>>>>    :version "27.1")
>>>>
>>>> The :version tag should be updated, because the defcustom was changed.
>>>
>>> -  :version "27.1")
>>> +  :version "28.0.50")
>
> Done.
>
>> Thanks for sending two patches in bug#48916 and bug#48917.
>> If you have not signed papers yet, I guess
>> these patches are small enough to push.
>>
>> But in both patches please change the :version tag to "28.1".
>
> I get the papers now \o/
>
> I was a little bit worried that this user-option is quite obscure to understand,
> so among other little docstring fixes, I documented an usage with
> 'display-buffer-alist' in the commentary section of the package.
>
> Please let me know if it is not desirable, in which case I will remove it.
>
> Also I added the parent function ARG to be passed, it is an universal-argument.

hm I'm still making typos :/


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0004-User-option-to-choose-a-function-triggered-by-windmo.patch
Content-Description: user-option windmove-create-window with function

From 8dce7c9c4aa0457f5f921cb6f7af8ca681da5467 Mon Sep 17 00:00:00 2001
From: Trust me I am a doctor <pillule@HIDDEN>
Date: Tue, 8 Jun 2021 11:44:54 +0200
Subject: [PATCH] User option to choose a function triggered by windmove-create

* lisp/windmove.el (windmove-create-window): Add a defcustom choice.
(windmove-do-window-select): Trigger custom functions, update the
docstring.

Commentary: document the usage of this user option with a basic
'display-buffer-alist', a dispatcher function for
'windmove-create-window' and an alist to hold the dispatch.
---
 lisp/windmove.el | 90 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 84 insertions(+), 6 deletions(-)

diff --git a/lisp/windmove.el b/lisp/windmove.el
index f558903681..0ef20fb498 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -110,6 +110,72 @@
 ;;    (setq windmove-wrap-around t)
 ;;
 
+;; Configuring windmove to display side windows :
+;;
+;; Assuming you have customized your 'display-buffer-alist' to
+;; uses side-windows, see (info "(elisp) Choosing Window")
+;;
+;; Or refer to this basic example :
+;;
+;; (customize-set-variable 'display-buffer-alist
+;; 			'(("\\*Ibuffer\\*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . left) (window-width . 42))
+;; 			  ("\\*Info.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . right) (window-width . 80))
+;; 			  ("\\*e?shell.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . top))
+;; 			  ("\\*Messages.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . bottom))))
+;;
+;; You can create a function that will dispatch the calls by direction :
+;;
+;; (defun windmove-create-side-window (dir arg window)
+;;   "Intermedary function choosing what to call on direction DIR.
+;; If the selected-window is a side-window, delete it, otherwise,
+;; select the relevant function from `windmove-dispatch-sides-functions'.
+;; Only pass ARG and WINDOW to the childs functions."
+;;   ;; normalise the direction
+;;   (let ((dir (pcase dir (`up 'top) (`down 'bottom) (_ dir))))
+;;     (funcall (if (eq dir (window-parameter window 'window-side))
+;;                  (lambda (_dir _arg window)
+;;                    (prog1 (get-mru-window) (delete-window window)))
+;;                (alist-get dir windmove-dispatch-sides-functions))
+;;              dir arg window)))
+;;
+;; Then assign it to 'windmove-create-window'
+;;
+;; (customize-set-variable 'windmove-create-window
+;;                         #'windmove-create-side-window)
+;;
+;; You can then specify an alist to actually hold the functions
+;; to be called with their directions :
+;;
+;; (defvar windmove-dispatch-sides-functions
+;;   '((left . (lambda (_dir _arg _window)
+;;               (ibuffer 'other-window)
+;;               (get-buffer-window "*Ibuffer*")))
+;;     (right . (lambda (_dir _arg _window)
+;;                (let ((buffer (get-buffer "*info*")))
+;;                  (if buffer
+;;                      (display-buffer buffer)
+;;                    (info))
+;;                  (get-buffer-window "*info*"))))
+;;     (top . (lambda (_dir _arg _window)
+;;              (shell)
+;;              (get-buffer-window "*shell*")))
+;;     (bottom . (lambda (_arg _dir _window)
+;;                 (view-echo-area-messages)
+;;                 'no-select)))
+;;   "Alist to dispatch by direction the calls of `windmove-create-side-window'")
+;;
+;; And also activate this recommended setting :
+;;
+;; (customize-set-variable 'windmove-allow-all-windows t)
+
 ;; Acknowledgments:
 ;;
 ;; Special thanks to Julian Assange (proff@HIDDEN), whose
@@ -145,10 +211,18 @@ windmove-create-window
   "Whether movement off the edge of the frame creates a new window.
 If this variable is set to t, moving left from the leftmost window in
 a frame will create a new window on the left, and similarly for the other
-directions."
-  :type 'boolean
-  :group 'windmove
-  :version "27.1")
+directions.
+This variable may also be a function to be called in this circumstance
+by `windmove-do-window-select'.  The function should accept then as
+argument the DIRECTION targeted, an interactive ARG and a WINDOW
+corresponding to the currently selected window.  It should also return
+or a valid window that `windmove-do-window-select' will select,
+or the symbol 'no-select to ignore that final selection.
+The commentary section of windmove.el show an example of this utilisation."
+  :type '(choice (const :tag "Don't create new windows" nil)
+          (const :tag "Create new windows" t)
+          (function :tag "Provide a function"))
+  :version "28.1")
 
 ;; If your Emacs sometimes places an empty column between two adjacent
 ;; windows, you may wish to set this delta to 2.
@@ -350,19 +424,23 @@ windmove-do-window-select
   "Move to the window at direction DIR as seen from WINDOW.
 DIR, ARG, and WINDOW are handled as by `windmove-find-other-window'.
 If no window is at direction DIR, an error is signaled.
-If `windmove-create-window' is non-nil, try to create a new window
+If `windmove-create-window' is a function, call that function with
+DIR, ARG and WINDOW, if it is non-nil, try to create a new window
 in direction DIR instead."
   (let ((other-window (windmove-find-other-window dir arg window)))
     (when (and windmove-create-window
                (or (null other-window)
                    (and (window-minibuffer-p other-window)
                         (not (minibuffer-window-active-p other-window)))))
-      (setq other-window (split-window window nil dir)))
+      (setq other-window (if (functionp windmove-create-window)
+                             (funcall windmove-create-window dir arg window)
+                           (split-window window nil dir))))
     (cond ((null other-window)
            (user-error "No window %s from selected window" dir))
           ((and (window-minibuffer-p other-window)
                 (not (minibuffer-window-active-p other-window)))
            (user-error "Minibuffer is inactive"))
+          ((eq other-window 'no-select))
           (t
            (select-window other-window)))))
 
-- 
2.20.1


--=-=-=
Content-Type: text/plain




--

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 15 Jun 2021 22:13:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 15 18:13:40 2021
Received: from localhost ([127.0.0.1]:50985 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ltHJT-0005Bj-Mk
	for submit <at> debbugs.gnu.org; Tue, 15 Jun 2021 18:13:40 -0400
Received: from mx1.riseup.net ([198.252.153.129]:53124)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <pillule@HIDDEN>) id 1ltHJR-0005BV-0K
 for 48917 <at> debbugs.gnu.org; Tue, 15 Jun 2021 18:13:38 -0400
Received: from fews1.riseup.net (fews1-pn.riseup.net [10.0.1.83])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "Sectigo RSA Domain Validation Secure Server CA" (not verified))
 by mx1.riseup.net (Postfix) with ESMTPS id 4G4Myz47XkzDsdc;
 Tue, 15 Jun 2021 15:13:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1623795211; bh=NSjoIUosDffC9pImYXH+D+yafk/CWvVfv+3NfBehhl8=;
 h=References:From:To:Cc:Subject:Date:In-reply-to:From;
 b=JledFDmqp9j95aCg2Aew8GWaCp9CAI/Oa6plBphhTRy4ia5YDFFfmVxzy8Ycb5eN2
 Ms1MF46KWVmeeY5LQCZSYvyxpLtVwBCOLGDw1ER+2kFYsXJ5UaHUwWhNF7OwIlQFtU
 dUEiFTPCPiz/xvgubPRXpaAROvfdhcSgZH8viF74=
X-Riseup-User-ID: E61050BA1D3D6F8F49727AEE50750A54CED6DCD6C27DEDA7FCB141444D05B80A
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by fews1.riseup.net (Postfix) with ESMTPSA id 4G4Myx3t3Wz5vhJ;
 Tue, 15 Jun 2021 15:13:29 -0700 (PDT)
References: <875yyozkpj.fsf@HIDDEN> <83a6o0fue0.fsf@HIDDEN>
 <87tum8xx0z.fsf@HIDDEN> <871r96envu.fsf@HIDDEN>
From: pillule <pillule@HIDDEN>
To: Juri Linkov <juri@HIDDEN>
Subject: Re: bug#48917: 28.0.50; allow user to choose what function is used
 when windmove create a window
Date: Wed, 16 Jun 2021 00:04:12 +0200
In-reply-to: <871r96envu.fsf@HIDDEN>
Message-ID: <87lf7a4vzx.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48917
Cc: pillule <pillule@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 48917 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--=-=-=
Content-Type: text/plain


Juri Linkov <juri@HIDDEN> writes:

>>>>    :version "27.1")
>>>
>>> The :version tag should be updated, because the defcustom was changed.
>>
>> -  :version "27.1")
>> +  :version "28.0.50")

Done.

> Thanks for sending two patches in bug#48916 and bug#48917.
> If you have not signed papers yet, I guess
> these patches are small enough to push.
>
> But in both patches please change the :version tag to "28.1".

I get the papers now \o/

I was a little bit worried that this user-option is quite obscure to understand,
so among other little docstring fixes, I documented an usage with
'display-buffer-alist' in the commentary section of the package.

Please let me know if it is not desirable, in which case I will remove it.

Also I added the parent function ARG to be passed, it is an universal-argument.


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0003-User-option-to-choose-a-function-triggered-by-windmo.patch
Content-Description: allow user to choose what function is used when windmove create a window

From f276e2b7fe96512b1ed88be8f8da66faab7a24e4 Mon Sep 17 00:00:00 2001
From: Trust me I am a doctor <pillule@HIDDEN>
Date: Tue, 8 Jun 2021 11:44:54 +0200
Subject: [PATCH] User option to choose a function triggered by windmove-create

* lisp/windmove.el (windmove-create-window): Add a defcustom choice.
(windmove-do-window-select): Trigger custom functions, update the
docstring.

Commentary: document the usage of this user option with a basic
'display-buffer-alist', a dispatcher function for
'windmove-create-window' and an alist to hold the dispatch.
---
 lisp/windmove.el | 92 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 85 insertions(+), 7 deletions(-)

diff --git a/lisp/windmove.el b/lisp/windmove.el
index f558903681..e49b6ad654 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -110,6 +110,72 @@
 ;;    (setq windmove-wrap-around t)
 ;;
 
+;; Configuring windmove to display side windows :
+;;
+;; Assuming you have customized your 'display-buffer-alist' to
+;; uses side-windows, see (info "(elisp) Choosing Window")
+;;
+;; Or refer to this basic example :
+;;
+;; (customize-set-variable 'display-buffer-alist
+;; 			'(("\\*Ibuffer\\*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . left) (window-width . 42))
+;; 			  ("\\*Info.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . right) (window-width . 80))
+;; 			  ("\\*e?shell.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . top))
+;; 			  ("\\*Messages.*"
+;; 			   (display-buffer-in-side-window)
+;; 			   (side . bottom))))
+;;
+;; You can create a function that will dispatch the calls by direction :
+;;
+;; (defun windmove-create-side-window (dir arg window)
+;;   "Intermedary function choosing what to call on direction DIR.
+;; If the selected-window is a side-window, delete it, otherwise,
+;; select the relevant window from `windmove-dispatch-sides-functions'.
+;; Only pass ARG and WINDOW to the childs functions."
+;;   ;; normalise the direction
+;;   (let ((dir (pcase dir (`up 'top) (`down 'bottom) (_ dir))))
+;;     (funcall (if (eq dir (window-parameter window 'window-side))
+;;                  (lambda (_dir _arg window)
+;;                    (prog1 (get-mru-window) (delete-window window)))
+;;                (alist-get dir windmove-dispatch-sides-functions))
+;;              dir arg window)))
+;;
+;; Then assign it to 'windmove-create-window'
+;;
+;; (customize-set-variable 'windmove-create-window
+;;                         #'windmove-create-side-window)
+;;
+;; You can then specify an alist to actually hold the functions
+;; to be called with their directions :
+;;
+;; (defvar windmove-dispatch-sides-functions
+;;   '((left . (lambda (_dir _arg _window)
+;;               (ibuffer 'other-window)
+;;               (get-buffer-window "*Ibuffer*")))
+;;     (right . (lambda (_dir _arg _window)
+;;                (let ((buffer (get-buffer "*info*")))
+;;                  (if buffer
+;;                      (display-buffer buffer)
+;;                    (info))
+;;                  (get-buffer-window "*info*"))))
+;;     (top . (lambda (_dir _arg _window)
+;;              (shell)
+;;              (get-buffer-window "*shell*")))
+;;     (bottom . (lambda (_arg _dir _window)
+;;                 (view-echo-area-messages)
+;;                 'no-select)))
+;;   "Alist to dispatch by direction the calls of `windmove-create-side-window'")
+;;
+;; And also activate this recommended setting :
+;;
+;; (customize-set-variable 'windmove-allow-all-windows t)
+
 ;; Acknowledgments:
 ;;
 ;; Special thanks to Julian Assange (proff@HIDDEN), whose
@@ -142,13 +208,21 @@ windmove-wrap-around
   :group 'windmove)
 
 (defcustom windmove-create-window nil
-  "Whether movement off the edge of the frame creates a new window.
+  "Whether movement off the edge of the frame create a new window.
 If this variable is set to t, moving left from the leftmost window in
 a frame will create a new window on the left, and similarly for the other
-directions."
-  :type 'boolean
-  :group 'windmove
-  :version "27.1")
+directions.
+This variable may also be a function to be called in this circumstance
+by `windmove-do-window-select'.  The function should accept then as
+argument the DIRECTION targeted, an interactive ARG and a WINDOW
+corresponding to the currently selected window.  It should also returns
+or a valid window that `windmove-do-window-select' will select,
+or the symbol 'no-select to ignore that final selection.
+The comments of windmove.el show an example of this utilisation."
+  :type '(choice (const :tag "Don't create new windows" nil)
+          (const :tag "Create new windows" t)
+          (function :tag "Provide a function"))
+  :version "28.1")
 
 ;; If your Emacs sometimes places an empty column between two adjacent
 ;; windows, you may wish to set this delta to 2.
@@ -350,19 +424,23 @@ windmove-do-window-select
   "Move to the window at direction DIR as seen from WINDOW.
 DIR, ARG, and WINDOW are handled as by `windmove-find-other-window'.
 If no window is at direction DIR, an error is signaled.
-If `windmove-create-window' is non-nil, try to create a new window
+If `windmove-create-window' is a function, call that function with
+DIR, ARG and WINDOW, if it is non-nil, try to create a new window
 in direction DIR instead."
   (let ((other-window (windmove-find-other-window dir arg window)))
     (when (and windmove-create-window
                (or (null other-window)
                    (and (window-minibuffer-p other-window)
                         (not (minibuffer-window-active-p other-window)))))
-      (setq other-window (split-window window nil dir)))
+      (setq other-window (if (functionp windmove-create-window)
+                             (funcall windmove-create-window dir arg window)
+                           (split-window window nil dir))))
     (cond ((null other-window)
            (user-error "No window %s from selected window" dir))
           ((and (window-minibuffer-p other-window)
                 (not (minibuffer-window-active-p other-window)))
            (user-error "Minibuffer is inactive"))
+          ((eq other-window 'no-select))
           (t
            (select-window other-window)))))
 
-- 
2.20.1


--=-=-=
Content-Type: text/plain


--

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 12 Jun 2021 22:12:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 12 18:12:27 2021
Received: from localhost ([127.0.0.1]:42304 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lsBrf-0001Dg-6v
	for submit <at> debbugs.gnu.org; Sat, 12 Jun 2021 18:12:27 -0400
Received: from relay11.mail.gandi.net ([217.70.178.231]:48171)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <juri@HIDDEN>) id 1lsBrd-0001DT-O3
 for 48917 <at> debbugs.gnu.org; Sat, 12 Jun 2021 18:12:26 -0400
Received: (Authenticated sender: juri@HIDDEN)
 by relay11.mail.gandi.net (Postfix) with ESMTPSA id 7CDD4100004;
 Sat, 12 Jun 2021 22:12:17 +0000 (UTC)
From: Juri Linkov <juri@HIDDEN>
To: pillule <pillule@HIDDEN>
Subject: Re: bug#48917: 28.0.50; allow user to choose what function is used
 when windmove create a window
Organization: LINKOV.NET
References: <875yyozkpj.fsf@HIDDEN> <83a6o0fue0.fsf@HIDDEN>
 <87tum8xx0z.fsf@HIDDEN>
Date: Sun, 13 Jun 2021 01:09:25 +0300
In-Reply-To: <87tum8xx0z.fsf@HIDDEN> (pillule@HIDDEN's message of
 "Tue, 08 Jun 2021 16:12:56 +0200")
Message-ID: <871r96envu.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48917
Cc: Eli Zaretskii <eliz@HIDDEN>, 48917 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

>>>    :version "27.1")
>>
>> The :version tag should be updated, because the defcustom was changed.
>
> -  :version "27.1")
> +  :version "28.0.50")

Thanks for sending two patches in bug#48916 and bug#48917.
If you have not signed papers yet, I guess
these patches are small enough to push.

But in both patches please change the :version tag to "28.1".




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.
Added tag(s) patch. Request was from Lars Ingebrigtsen <larsi@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 8 Jun 2021 14:15:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 08 10:15:54 2021
Received: from localhost ([127.0.0.1]:59414 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lqcWI-0000Ir-KY
	for submit <at> debbugs.gnu.org; Tue, 08 Jun 2021 10:15:54 -0400
Received: from mx1.riseup.net ([198.252.153.129]:51664)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <pillule@HIDDEN>) id 1lqcWG-0000Ic-R6
 for 48917 <at> debbugs.gnu.org; Tue, 08 Jun 2021 10:15:53 -0400
Received: from fews1.riseup.net (fews1-pn.riseup.net [10.0.1.83])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "Sectigo RSA Domain Validation Secure Server CA" (not verified))
 by mx1.riseup.net (Postfix) with ESMTPS id 4Fzshz3Y2FzDv6W;
 Tue,  8 Jun 2021 07:15:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1623161747; bh=dPSbv4rqgBJup7+y3WCxNFIl+8hq+69TUt00TNaHYps=;
 h=References:From:To:Cc:Subject:Date:In-reply-to:From;
 b=PczJjNayoSNvd0qT3Y76qS228v3PXBJVxeFCz3gOMWzH2ugZE0ySxIG1o9wX/Q+79
 ntRVm65SLa6dhoB6VKGtwZqfTblS6MsyUo7CZ5lNjOwMpHuVAARaizsvj+VEBX92ms
 BP8nBxbuAZHM7baQSdq3s3WQ3qKX4HSihQSmWQwI=
X-Riseup-User-ID: 9928475AF052E345BC3DB32161351BD02E932C83B71CFFDBB837D291F36C3699
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by fews1.riseup.net (Postfix) with ESMTPSA id 4Fzshy108dz5vSN;
 Tue,  8 Jun 2021 07:15:45 -0700 (PDT)
References: <875yyozkpj.fsf@HIDDEN> <83a6o0fue0.fsf@HIDDEN>
From: pillule <pillule@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#48917: 28.0.50; allow user to choose what function is used
 when windmove create a window
Date: Tue, 08 Jun 2021 16:12:56 +0200
In-reply-to: <83a6o0fue0.fsf@HIDDEN>
Message-ID: <87tum8xx0z.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48917
Cc: pillule <pillule@HIDDEN>, 48917 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--=-=-=
Content-Type: text/plain; format=flowed


Eli Zaretskii <eliz@HIDDEN> writes:

>> From: pillule <pillule@HIDDEN>
>> Date: Tue, 08 Jun 2021 12:31:58 +0200
>>
>>  (defcustom windmove-create-window nil
>> -  "Whether movement off the edge of the frame creates a new 
>> window.
>> +  "Whether movement off the edge of the frame creates a new 
>> window or
>> +trigger a custom function.
>
> The first line of a doc string should be a single complete 
> sentence.
> (The reason for this is that some Emacs commands, like "M-x 
> apropos",
> show only the first line of the doc string.)
>
>>  If this variable is set to t, moving left from the leftmost 
>>  window in
>>  a frame will create a new window on the left, and similarly 
>>  for the other
>>  directions."
>> -  :type 'boolean
>> +  :type '(choice (const :tag "Don't create new windows" nil)
>> +          (const :tag "Create new windows" t)
>> +          (function :tag "Provide a function"))
>>    :group 'windmove
>>    :version "27.1")
>
> The :version tag should be updated, because the defcustom was 
> changed.


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0002-User-option-to-choose-a-function-triggered-by-windmo.patch
Content-Description: allow user to choose what function is used when windmove create a window

From 6438107565875ff69f533c244a9601192218e7c9 Mon Sep 17 00:00:00 2001
From: Trust me I am a doctor <pillule@HIDDEN>
Date: Tue, 8 Jun 2021 11:44:54 +0200
Subject: [PATCH] User option to choose a function triggered by windmove-create

* lisp/windmove.el (windmove-create-window): Add a defcustom choice.
(windmove-do-window-select): Trigger custom functions.
---
 lisp/windmove.el | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/lisp/windmove.el b/lisp/windmove.el
index f558903681..d410e387d4 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -142,13 +142,16 @@ windmove-wrap-around
   :group 'windmove)
 
 (defcustom windmove-create-window nil
-  "Whether movement off the edge of the frame creates a new window.
+  "Whether movement off the edge of the frame create a window.
 If this variable is set to t, moving left from the leftmost window in
 a frame will create a new window on the left, and similarly for the other
-directions."
-  :type 'boolean
-  :group 'windmove
-  :version "27.1")
+directions.
+The variable may also be a function to be called in this circumstance,
+the function should accept as agument a DIRECTION, and the selected WINDOW."
+  :type '(choice (const :tag "Don't create new windows" nil)
+          (const :tag "Create new windows" t)
+          (function :tag "Provide a function"))
+  :version "28.0.50")
 
 ;; If your Emacs sometimes places an empty column between two adjacent
 ;; windows, you may wish to set this delta to 2.
@@ -357,7 +360,9 @@ windmove-do-window-select
                (or (null other-window)
                    (and (window-minibuffer-p other-window)
                         (not (minibuffer-window-active-p other-window)))))
-      (setq other-window (split-window window nil dir)))
+      (setq other-window (if (functionp windmove-create-window)
+                             (funcall windmove-create-window dir window)
+                           (split-window window nil dir))))
     (cond ((null other-window)
            (user-error "No window %s from selected window" dir))
           ((and (window-minibuffer-p other-window)
-- 
2.20.1


--=-=-=
Content-Type: text/plain; format=flowed


--

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.

Message received at 48917 <at> debbugs.gnu.org:


Received: (at 48917) by debbugs.gnu.org; 8 Jun 2021 11:50:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 08 07:50:23 2021
Received: from localhost ([127.0.0.1]:57580 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lqaFT-0004Ww-3i
	for submit <at> debbugs.gnu.org; Tue, 08 Jun 2021 07:50:23 -0400
Received: from eggs.gnu.org ([209.51.188.92]:56734)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1lqaFR-0004Wk-9X
 for 48917 <at> debbugs.gnu.org; Tue, 08 Jun 2021 07:50:21 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:59018)
 by eggs.gnu.org with esmtp (Exim 4.90_1)
 (envelope-from <eliz@HIDDEN>)
 id 1lqaFM-00077X-17; Tue, 08 Jun 2021 07:50:16 -0400
Received: from 84.94.185.95.cable.012.net.il ([84.94.185.95]:4452
 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1lqaFL-00057W-Kd; Tue, 08 Jun 2021 07:50:15 -0400
Date: Tue, 08 Jun 2021 14:49:59 +0300
Message-Id: <83a6o0fue0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: pillule <pillule@HIDDEN>
In-Reply-To: <875yyozkpj.fsf@HIDDEN> (message from pillule on Tue, 08 Jun
 2021 12:31:58 +0200)
Subject: Re: bug#48917: 28.0.50;
 allow user to choose what function is used when windmove create a
 window
References: <875yyozkpj.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 48917
Cc: 48917 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: pillule <pillule@HIDDEN>
> Date: Tue, 08 Jun 2021 12:31:58 +0200
> 
>  (defcustom windmove-create-window nil
> -  "Whether movement off the edge of the frame creates a new window.
> +  "Whether movement off the edge of the frame creates a new window or
> +trigger a custom function.

The first line of a doc string should be a single complete sentence.
(The reason for this is that some Emacs commands, like "M-x apropos",
show only the first line of the doc string.)

>  If this variable is set to t, moving left from the leftmost window in
>  a frame will create a new window on the left, and similarly for the other
>  directions."
> -  :type 'boolean
> +  :type '(choice (const :tag "Don't create new windows" nil)
> +          (const :tag "Create new windows" t)
> +          (function :tag "Provide a function"))
>    :group 'windmove
>    :version "27.1")

The :version tag should be updated, because the defcustom was changed.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 8 Jun 2021 10:59:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jun 08 06:59:20 2021
Received: from localhost ([127.0.0.1]:57539 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lqZS0-00014b-62
	for submit <at> debbugs.gnu.org; Tue, 08 Jun 2021 06:59:19 -0400
Received: from lists.gnu.org ([209.51.188.17]:34854)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <pillule@HIDDEN>) id 1lqZRu-00014R-S2
 for submit <at> debbugs.gnu.org; Tue, 08 Jun 2021 06:59:14 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:37978)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <pillule@HIDDEN>)
 id 1lqZRu-000672-Hj
 for bug-gnu-emacs@HIDDEN; Tue, 08 Jun 2021 06:59:10 -0400
Received: from mx1.riseup.net ([198.252.153.129]:55048)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <pillule@HIDDEN>)
 id 1lqZRr-0001Df-BQ
 for bug-gnu-emacs@HIDDEN; Tue, 08 Jun 2021 06:59:10 -0400
Received: from fews2.riseup.net (fews2-pn.riseup.net [10.0.1.84])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (Client CN "*.riseup.net",
 Issuer "Sectigo RSA Domain Validation Secure Server CA" (not verified))
 by mx1.riseup.net (Postfix) with ESMTPS id 4FznL13RJmzDq9s
 for <bug-gnu-emacs@HIDDEN>; Tue,  8 Jun 2021 03:59:05 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak;
 t=1623149945; bh=SzrxieIzo57peHAbXDxrFNcFDsp43Y2pbs9StlnWs+E=;
 h=From:To:Subject:Date:From;
 b=fJXzTXdXYGxda39U6qOe0XEHwQ0hfMBU5zWNWOH5Ao9apGU0YQu9YcvMN5mQywx31
 gYm0k9pAzNJmRQIj/988y1QToPeWvp7SIpimMEDvdPTCb3YBfVBabkGi5wAT8mKN+X
 Rl2kPQaHbVBXcosJKDFofa7PUVmr8/NxDVKEgzMk=
X-Riseup-User-ID: FD3035E8097E660ECB63B9919328A46E778F7D3AF2515FF04A37079B86D770A0
Received: from [127.0.0.1] (localhost [127.0.0.1])
 by fews2.riseup.net (Postfix) with ESMTPSA id 4FznKz59xcz1y6h
 for <bug-gnu-emacs@HIDDEN>; Tue,  8 Jun 2021 03:59:03 -0700 (PDT)
From: pillule <pillule@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 28.0.50; allow user to choose what function is used when windmove
 create a window
Date: Tue, 08 Jun 2021 12:31:58 +0200
Message-ID: <875yyozkpj.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Received-SPF: pass client-ip=198.252.153.129; envelope-from=pillule@HIDDEN;
 helo=mx1.riseup.net
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.4 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.4 (--)

--=-=-=
Content-Type: text/plain; format=flowed


Hi,

This is not directly related to bug#48916 but nonetheless derive 
from a same logic of window management.

Actually the user can choose if windmove will create a window when 
it encounter the edges of the frame. I propose to let the user 
eventually provides instead a function that will be triggered in 
that case.

The function will receive as arguments the `dir' and `window' 
bindings of `windmove-do-window-select' so it can adapt its 
behavior accordingly.

The simplest use case I found for this feature is to creates a 
dispatch function that choose from the direction to display eg, a 
dired side window on the left, a shell side window on the top, a 
message side window on the bottom, another thing on the right ; 
and that act as a toggle, eg :

windmove-left : creates a dired side window
windmove-left again : delete the dired side window

From here the function can be tuned again to behave differently in 
different contexts with eg, a local binding or by inspecting the 
WINDOW argument.


--=-=-=
Content-Type: text/x-diff
Content-Disposition: attachment;
 filename=0001-User-option-to-choose-a-function-triggered-by-windmo.patch
Content-Description: allow user to choose what function is used when windmove create a window

From cf9007ce6fdba60a1c27b0952833139731c9fe8c Mon Sep 17 00:00:00 2001
From: Trust me I am a doctor <pillule@HIDDEN>
Date: Tue, 8 Jun 2021 11:44:54 +0200
Subject: [PATCH] User option to choose a function triggered by windmove-create

* lisp/windmove.el
  (windmove-create-window): add a defcustom choice
  (windmove-do-window-select): trigger custom functions
---
 lisp/windmove.el | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/lisp/windmove.el b/lisp/windmove.el
index f558903681..d648613e10 100644
--- a/lisp/windmove.el
+++ b/lisp/windmove.el
@@ -142,11 +142,14 @@ windmove-wrap-around
   :group 'windmove)
 
 (defcustom windmove-create-window nil
-  "Whether movement off the edge of the frame creates a new window.
+  "Whether movement off the edge of the frame creates a new window or
+trigger a custom function.
 If this variable is set to t, moving left from the leftmost window in
 a frame will create a new window on the left, and similarly for the other
 directions."
-  :type 'boolean
+  :type '(choice (const :tag "Don't create new windows" nil)
+          (const :tag "Create new windows" t)
+          (function :tag "Provide a function"))
   :group 'windmove
   :version "27.1")
 
@@ -357,7 +360,9 @@ windmove-do-window-select
                (or (null other-window)
                    (and (window-minibuffer-p other-window)
                         (not (minibuffer-window-active-p other-window)))))
-      (setq other-window (split-window window nil dir)))
+      (setq other-window (if (functionp windmove-create-window)
+                             (funcall windmove-create-window dir window)
+                           (split-window window nil dir))))
     (cond ((null other-window)
            (user-error "No window %s from selected window" dir))
           ((and (window-minibuffer-p other-window)
-- 
2.20.1


--=-=-=
Content-Type: text/plain; format=flowed


The second attachment is a library I am currently working on that 
implement a functional dired side window and its windmove bindings 
in 200 loc, so you can eventually try it and feel what I am 
requesting.
I wrote it for testing purposes for bug#48493 so some of its 
functionalities relies on fixes that are not yet available, and it 
is less about dired in a side window than implementing local 
bindings on couples of buffer/windows.


--=-=-=
Content-Type: application/gzip
Content-Disposition: attachment; filename=dired-side-window.tar.gz
Content-Transfer-Encoding: base64
Content-Description: moirai early stage

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
/p8YvP9TpNZWRxacCPmnOv/h2L8Nk0Wv/3rnPwUuwP+OlL8pkVc12ikEPAz/zwXvf3UK+StKUeM/
UpkQnfc/yPv/gfw7g/x5KcEjXqIVRVIZBgkUHxcYnAOzcUHESbIgM4LCMQeTP9fa+X+KzpU/w9J0
EP8VpdV3GVh+wfgp1NrZFEdRLH3J2K0VF4z/XezVcVV/iL328oVbB7114Stw8ZJZU854+rlHU1/t
qHgDLThq3/V7tqa7hkI7esIghPox2z8tFxH/eU7gBdHZ/xfZYP+/k8hfFKCkxGVGleIcI/N8PAEl
VhFkGgk0p3AqyRYlpT3wPyt/hmUFLsD/DsH/aBPkH+/4Aoz/y5aITw7bt3PGG+++esUe8dXuV39/
D7+vT6jPzl7DAgj9Mdt/u/wdkEPP/wWW5QL87wTyZ+ii+n+RohjKqf8wQf7fSeTftvMQR+L//fNf
WfmTgxyB/y+S/79r+StLV1A9Xrjiq0kv05dceNTRRz0w5Q+rHv7V3hN6sxet7r3inZFjtz8jr5v+
GZwwbMBJX+39nr70qn4nDV9RNysKttzz1CLj2Cn7MlPXr9I+eeqTVWve/OziOaunnPXSyMsHnnrz
iR9/XbrqodX7mdsyMyb/LHXWS6se/cn08tVfzone+OSnS57pkX5oSffP++4aS5Vuuqbf8C0flHzx
9QvK6rtiB8Jn7xj6Wb/fT4guRdP6r1ijfzB35q4nL/7ltC3fb17/3r1XPrv4N68fc9+mAeO6mFf8
a93Cq7bdubl+qrX4+SEDZj777Eb26KpeB4afcVr/NWDRyvdCQ7v23PkfH/AXL6tM//yWVx8+7/7+
Pbjd3ww5/Z1ZidP/2p3aqcz7aNvv6Sf79tg7n7qgZOiC4+74+Iz5z75/Xf1u+s3Uoq5/qsn0vtn+
yzMTytclQ09cSc97vO+95+9YVzvi26VzJ+7cner//inMmft7lE+7efaws95e+JdPqDHxbtec2G9C
Ztmmiic/f+KtPvO+3V468IGfHNczMvCtO5e/cvurz5QkXr31xN3HMGVj1jbAKTvXzO2399OuDyDz
ouUf8p+f8NFvX5z/wvT/XLHy0hFn7eq54btRCz684dvlJ6VuqoePbf6y2wGl7rcbar6p6bVm8STl
5xv3oH3d5nz5fOnV5854+b4+1BVLd1y6uLuxfm30QJfpXUv+fIT2TxWz/scLNM25+C9SQf2/M+A/
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
--=-=-=--




Acknowledgement sent to pillule <pillule@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#48917; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 15 Jun 2021 23:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.