summaryrefslogtreecommitdiff
path: root/lisp/scroll-lock.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/scroll-lock.el')
-rw-r--r--lisp/scroll-lock.el11
1 files changed, 11 insertions, 0 deletions
diff --git a/lisp/scroll-lock.el b/lisp/scroll-lock.el
index 8281edb1720..3a74c11b7a1 100644
--- a/lisp/scroll-lock.el
+++ b/lisp/scroll-lock.el
@@ -36,6 +36,7 @@
(define-key map [remap previous-line] 'scroll-lock-previous-line)
(define-key map [remap forward-paragraph] 'scroll-lock-forward-paragraph)
(define-key map [remap backward-paragraph] 'scroll-lock-backward-paragraph)
+ (define-key map [S-down] 'scroll-lock-next-line-always-scroll)
map)
"Keymap for Scroll Lock mode.")
@@ -81,6 +82,16 @@ boundaries during scrolling."
(move-to-column column)
(forward-char (min column (- (line-end-position) (point))))))
+(defun scroll-lock-next-line-always-scroll (&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-up arg)
+ (end-of-buffer (goto-char (point-max)) (recenter 1)))
+ (scroll-lock-move-to-column scroll-lock-temporary-goal-column))
+
(defun scroll-lock-next-line (&optional arg)
"Scroll up ARG lines keeping point fixed."
(interactive "p")