Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
emacs
emacs
Commits
94396ace
Commit
94396ace
authored
Aug 18, 2005
by
Richard M. Stallman
Browse files
*** empty log message ***
parent
25d98a97
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
155 additions
and
0 deletions
+155
-0
etc/NEWS
etc/NEWS
+6
-0
lisp/ChangeLog
lisp/ChangeLog
+4
-0
lisp/scroll-lock.el
lisp/scroll-lock.el
+130
-0
man/ChangeLog
man/ChangeLog
+15
-0
No files found.
etc/NEWS
View file @
94396ace
...
...
@@ -1747,6 +1747,12 @@ recognized.
---
** The TCL package tcl-mode.el was replaced by tcl.el.
This was actually done in Emacs-21.1, and was not documented.
** The new package scroll-lock.el provides the Scroll Lock minor mode
for pager-like scrolling. Keys which normally move point by line or
paragraph will scroll the buffer by the respective amount of lines
instead and point will be kept vertically fixed relative to window
boundaries during scrolling.
* Changes in Specialized Modes and Packages in Emacs 22.1:
...
...
lisp/ChangeLog
View file @
94396ace
2005-08-18 Richard M. Stallman <rms@gnu.org>
* scroll-lock.el: New file.
2005-08-18 Thien-Thi Nguyen <ttn@gnu.org>
* dired.el (dired-move-to-end-of-filename):
...
...
lisp/scroll-lock.el
0 → 100644
View file @
94396ace
;;; scroll-lock.el --- Scroll lock scrolling.
;; Copyright (C) 2005 Free Software Foundation, Inc.
;; Author: Ralf Angeli <angeli@iwi.uni-sb.de>
;; Maintainer: FSF
;; Created: 2005-06-18
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; By activating Scroll Lock mode, keys for moving point by line or
;; paragraph will scroll the buffer by the respective amount of lines
;; instead. Point will be kept vertically fixed relative to window
;; boundaries.
;;; Code:
(
defvar
scroll-lock-mode-map
(
let
((
map
(
make-sparse-keymap
)))
(
define-key
map
[remap
next-line]
'scroll-lock-next-line
)
(
define-key
map
[remap
previous-line]
'scroll-lock-previous-line
)
(
define-key
map
[remap
forward-paragraph]
'scroll-lock-forward-paragrap=
h
)
(
define-key
map
[remap
backward-paragraph]
'scroll-lock-backward-paragr=
aph
)
map
)
"Keymap for Scroll Lock mode."
)
(
defvar
scroll-lock-preserve-screen-pos-save
scroll-preserve-screen-position
"Used for saving the state of `scroll-preserve-screen-position'."
)
(
make-variable-buffer-local
'scroll-lock-preserve-screen-pos-save
)
(
defvar
scroll-lock-temporary-goal-column
0
"Like `temporary-goal-column' but for scroll-lock-* commands."
)
;;;###autoload
(
define-minor-mode
scroll-lock-mode
"Minor mode for pager-like scrolling.
Keys which normally move point by line or paragraph will scroll
the buffer by the respective amount of lines instead and point
will be kept vertically fixed relative to window boundaries
during scrolling."
:lighter
" ScrLck"
:keymap
scroll-lock-mode-map
(
if
scroll-lock-mode
(
progn
(
setq
scroll-lock-preserve-screen-pos-save
scroll-preserve-screen-position
)
(
set
(
make-local-variable
'scroll-preserve-screen-position
)
'always
))
(
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
))
(
next-line
arg
)
(
scroll-up
arg
))
(
scroll-lock-move-to-column
scroll-lock-temporary-goal-column
))
(
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
(
previous-line
arg
)))
(
scroll-lock-move-to-column
scroll-lock-temporary-goal-column
))
(
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
))
(
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
))
(
provide
'scroll-lock
)
;;; scroll-lock.el ends here
man/ChangeLog
View file @
94396ace
2005-08-18 Richard M. Stallman <rms@gnu.org>
* trouble.texi (Unasked-for Search): Delete xref to Keyboard Translations.
* glossary.texi (Glossary): Delete xref.
* faq.texi (Swapping keys): Xref for normal-erase-is-backspace-mode,
not keyboard-translate.
* custom.texi (Minor Modes): Say that the list here is not complete.
(Keyboard Translations): Node deleted.
(Disabling): Delete xref to it.
(Customization Groups): Fix Custom buffer example.
(Hooks): Mention remove-hooks.
2005-08-17 Luc Teirlinck <teirllm@auburn.edu>
* building.texi (GDB Graphical Interface): Improve filling of menu
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment