Index: scroll-lock.el =================================================================== RCS file: /sources/emacs/emacs/lisp/scroll-lock.el,v retrieving revision 1.10 diff -u -r1.10 scroll-lock.el --- scroll-lock.el 6 May 2008 07:57:49 -0000 1.10 +++ scroll-lock.el 30 Jun 2008 20:04:03 -0000 @@ -63,63 +63,44 @@ (setq scroll-preserve-screen-position scroll-lock-preserve-screen-pos-save))) -(defun scroll-lock-update-goal-column () - "Update `scroll-lock-temporary-goal-column' if necessary." - (unless (memq last-command '(scroll-lock-next-line - scroll-lock-previous-line - scroll-lock-forward-paragraph - scroll-lock-backward-paragraph)) - (setq scroll-lock-temporary-goal-column (current-column)))) - -(defun scroll-lock-move-to-column (column) - "Like `move-to-column' but cater for wrapped lines." - (if (or (bolp) - ;; Start of a screen line. - (not (zerop (mod (- (point) (line-beginning-position)) - (window-width))))) - (move-to-column column) - (forward-char (min column (- (line-end-position) (point)))))) - (defun scroll-lock-next-line (&optional arg) "Scroll up ARG lines keeping point fixed." (interactive "p") (or arg (setq arg 1)) - (scroll-lock-update-goal-column) (if (pos-visible-in-window-p (point-max)) (forward-line arg) - (scroll-up arg)) - (scroll-lock-move-to-column scroll-lock-temporary-goal-column)) + (scroll-up arg) + (setq this-command 'scroll-up))) (defun scroll-lock-previous-line (&optional arg) "Scroll up ARG lines keeping point fixed." (interactive "p") (or arg (setq arg 1)) - (scroll-lock-update-goal-column) (condition-case nil - (scroll-down arg) - (beginning-of-buffer (forward-line (- arg)))) - (scroll-lock-move-to-column scroll-lock-temporary-goal-column)) + (progn + (scroll-down arg) + (setq this-command 'scroll-down)) + (beginning-of-buffer (forward-line (- arg))))) (defun scroll-lock-forward-paragraph (&optional arg) "Scroll down ARG paragraphs keeping point fixed." (interactive "p") (or arg (setq arg 1)) - (scroll-lock-update-goal-column) (scroll-up (count-screen-lines (point) (save-excursion (forward-paragraph arg) (point)))) - (scroll-lock-move-to-column scroll-lock-temporary-goal-column)) + (setq this-command 'scroll-up)) (defun scroll-lock-backward-paragraph (&optional arg) "Scroll up ARG paragraphs keeping point fixed." (interactive "p") (or arg (setq arg 1)) - (scroll-lock-update-goal-column) (let ((goal (save-excursion (backward-paragraph arg) (point)))) (condition-case nil - (scroll-down (count-screen-lines goal (point))) - (beginning-of-buffer (goto-char goal)))) - (scroll-lock-move-to-column scroll-lock-temporary-goal-column)) + (progn + (scroll-down (count-screen-lines goal (point))) + (setq this-command 'scroll-down)) + (beginning-of-buffer (goto-char goal))))) (provide 'scroll-lock)