# HG changeset patch # User Thierry Volpiatto # Date 1322632617 -3600 # Node ID 885228e9f341f392fc6886bf2855a66c5bdba6c5 # Parent c511f9c3f7a2cab8b3684b2f1ea4782176988ac6 * lisp/avoid.el: Allow setting in which corner banish move the mouse. (mouse-avoidance-banish-destination): New user variable, a cons pair to specify banish corner position. (mouse-avoidance-banish-destination): Set destination according to mouse-avoidance-banish-destination value. diff --git a/lisp/avoid.el b/lisp/avoid.el --- a/lisp/avoid.el +++ b/lisp/avoid.el @@ -115,6 +115,11 @@ :type 'integer :group 'avoid) +(defcustom mouse-avoidance-banish-destination '(left . top) + "Set the position to which Mouse Avoidance mode `banish' moves the mouse." + :group 'avoid + :type 'list) + ;; Internal variables (defvar mouse-avoidance-state nil) (defvar mouse-avoidance-pointer-shapes nil) @@ -183,10 +188,18 @@ (defun mouse-avoidance-banish-destination () "The position to which Mouse Avoidance mode `banish' moves the mouse. -You can redefine this if you want the mouse banished to a different corner." - (let* ((pos (window-edges))) - (cons (- (nth 2 pos) 2) - (nth 1 pos)))) +If you want the mouse banished to a different corner set +`mouse-avoidance-banish-destination' as you need." + (let* ((pos (loop for v in (window-edges) + for k in '(left top right bottom) + collect (cons k v))) + (side (car mouse-avoidance-banish-destination)) + (up-down (cdr mouse-avoidance-banish-destination)) + (fn (case side + (left '+) + (right '-)))) + (cons (funcall fn (assoc-default side pos) 2) + (assoc-default up-down pos)))) (defun mouse-avoidance-banish-mouse () ;; Put the mouse pointer in the upper-right corner of the current frame.