From cf9007ce6fdba60a1c27b0952833139731c9fe8c Mon Sep 17 00:00:00 2001 From: Trust me I am a doctor 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