From: Martin Rudalics Date: Mon, 2 Sep 2013 07:11:26 +0000 (+0200) Subject: In avoid.el handle case where posn-at-point returns nil. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1686^2~22 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/f167c27b1973c9f2f7a8755c07f23ea671ba1bf1 In avoid.el handle case where posn-at-point returns nil. * avoid.el (mouse-avoidance-point-position) (mouse-avoidance-too-close-p): Handle case where posn-at-point returns nil. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f99a4e8b1f..c9cdc559a1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2013-09-02 Martin Rudalics + + * avoid.el (mouse-avoidance-point-position) + (mouse-avoidance-too-close-p): Handle case where posn-at-point + returns nil. + 2013-09-02 Fabián Ezequiel Gallina * progmodes/python.el (python-shell-completion-get-completions): diff --git a/lisp/avoid.el b/lisp/avoid.el index aaccd0974a..72f90a30ff 100644 --- a/lisp/avoid.el +++ b/lisp/avoid.el @@ -154,13 +154,15 @@ TOP-OR-BOTTOM-POS: Distance from top or bottom edge of frame or window." (defun mouse-avoidance-point-position () "Return the position of point as (FRAME X . Y). Analogous to `mouse-position'." - (let ((edges (window-inside-edges)) - (x-y (posn-x-y (posn-at-point)))) - (cons (selected-frame) - (cons (+ (car edges) - (/ (car x-y) (frame-char-width))) - (+ (car (cdr edges)) - (/ (cdr x-y) (frame-char-height))))))) + (let* ((edges (window-inside-edges)) + (posn-at-point (posn-at-point)) + (x-y (and posn-at-point (posn-x-y posn-at-point)))) + (when x-y + (cons (selected-frame) + (cons (+ (car edges) + (/ (car x-y) (frame-char-width))) + (+ (car (cdr edges)) + (/ (cdr x-y) (frame-char-height)))))))) ;(defun mouse-avoidance-point-position-test () ; (interactive) @@ -185,19 +187,21 @@ MOUSE is the current mouse position as returned by `mouse-position'. Acceptable distance is defined by `mouse-avoidance-threshold'." (let* ((frame (car mouse)) (mouse-y (cdr (cdr mouse))) - (tool-bar-lines (frame-parameter nil 'tool-bar-lines))) + (tool-bar-lines (frame-parameter nil 'tool-bar-lines)) + point) (or tool-bar-lines (setq tool-bar-lines 0)) - (if (and mouse-y (< mouse-y tool-bar-lines)) - nil - (let ((point (mouse-avoidance-point-position)) - (mouse-x (car (cdr mouse)))) + (cond + ((and mouse-y (< mouse-y tool-bar-lines)) + nil) + ((setq point (mouse-avoidance-point-position)) + (let ((mouse-x (car (cdr mouse)))) (and (eq frame (car point)) (not (null mouse-x)) (< (abs (- mouse-x (car (cdr point)))) mouse-avoidance-threshold) (< (abs (- mouse-y (cdr (cdr point)))) - mouse-avoidance-threshold)))))) + mouse-avoidance-threshold))))))) (defun mouse-avoidance-banish-destination () "The position to which Mouse Avoidance mode `banish' moves the mouse.