Mercurial > emacs
changeset 96623:40cc43cf4ef1
(line-move-visual): Handle null pixel position gracefully.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 12 Jul 2008 18:33:47 +0000 |
parents | 535c63e99ba4 |
children | f7f0696bac9b |
files | lisp/simple.el |
diffstat | 1 files changed, 14 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/simple.el Sat Jul 12 18:33:32 2008 +0000 +++ b/lisp/simple.el Sat Jul 12 18:33:47 2008 +0000 @@ -3993,21 +3993,20 @@ ;; specified number of lines. (defun line-move-visual (arg &optional noerror) (unless (and (floatp temporary-goal-column) - (or (memq last-command '(next-line previous-line)) - ;; In case we're called from some other command. - (eq last-command this-command))) - (setq temporary-goal-column - (/ (car (nth 2 (posn-at-point))) 1.0 (frame-char-width)))) - (let ((moved (vertical-motion - (cons (or goal-column - (truncate temporary-goal-column)) - arg)))) - (or (= arg moved) - (unless noerror - (signal (if (< arg 0) - 'beginning-of-buffer - 'end-of-buffer) - nil))))) + (or (memq last-command '(next-line previous-line)) + ;; In case we're called from some other command. + (eq last-command this-command))) + (let ((x (car (nth 2 (posn-at-point))))) + (when x + (setq temporary-goal-column (/ (float x) (frame-char-width)))))) + (or (= (vertical-motion + (cons (or goal-column (truncate temporary-goal-column)) arg)) + arg) + (unless noerror + (signal (if (< arg 0) + 'beginning-of-buffer + 'end-of-buffer) + nil)))) ;; This is the guts of next-line and previous-line. ;; Arg says how many lines to move.