[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r99913: Add the `scroll-command' prop
From: |
Juri Linkov |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r99913: Add the `scroll-command' property. |
Date: |
Fri, 16 Apr 2010 02:51:12 +0300 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 99913
committer: Juri Linkov <address@hidden>
branch nick: trunk
timestamp: Fri 2010-04-16 02:51:12 +0300
message:
Add the `scroll-command' property.
* window.c: Add Qscroll_command.
Remove Vscroll_preserve_screen_position_commands.
(window_scroll_pixel_based, window_scroll_line_based): Check the
`scroll-command' property on the last command instead of searching
the last command in Vscroll_preserve_screen_position_commands.
(syms_of_window): Initialize and staticpro `Qscroll_command'.
Put Qscroll_command property on Qscroll_up and Qscroll_down.
(scroll-preserve-screen-position): Doc fix.
(Vscroll_preserve_screen_position_commands): Remove variable.
* simple.el (scroll-up-command, scroll-down-command)
(scroll-up-line, scroll-down-line): Put `scroll-command'
property on the these symbols. Remove them from
`scroll-preserve-screen-position-commands'.
* mwheel.el (mwheel-scroll): Put `scroll-command' and
`isearch-scroll' properties on the `mwheel-scroll' symbol.
Remove it from `scroll-preserve-screen-position-commands'.
* isearch.el (isearch-allow-scroll): Doc fix.
modified:
etc/NEWS
lisp/ChangeLog
lisp/isearch.el
lisp/mwheel.el
lisp/simple.el
src/ChangeLog
src/window.c
=== modified file 'etc/NEWS'
--- a/etc/NEWS 2010-04-14 00:43:54 +0000
+++ b/etc/NEWS 2010-04-15 23:51:12 +0000
@@ -76,8 +76,8 @@
** New scrolling commands `scroll-up-line' and `scroll-down-line'
scroll a line instead of full screen.
-** New variable `scroll-preserve-screen-position-commands' defines
-a list of scroll command affected by `scroll-preserve-screen-position.
+** New property `scroll-command' should be set on a command's symbol to
+define it as a scroll command affected by `scroll-preserve-screen-position.
* Editing Changes in Emacs 24.1
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-04-15 22:19:01 +0000
+++ b/lisp/ChangeLog 2010-04-15 23:51:12 +0000
@@ -1,3 +1,16 @@
+2010-04-15 Juri Linkov <address@hidden>
+
+ * simple.el (scroll-up-command, scroll-down-command)
+ (scroll-up-line, scroll-down-line): Put `scroll-command'
+ property on the these symbols. Remove them from
+ `scroll-preserve-screen-position-commands'.
+
+ * mwheel.el (mwheel-scroll): Put `scroll-command' and
+ `isearch-scroll' properties on the `mwheel-scroll' symbol.
+ Remove it from `scroll-preserve-screen-position-commands'.
+
+ * isearch.el (isearch-allow-scroll): Doc fix.
+
2010-04-15 Michael Albinus <address@hidden>
* net/tramp.el (tramp-error-with-buffer): Don't show the
=== modified file 'lisp/isearch.el'
--- a/lisp/isearch.el 2010-02-19 21:36:29 +0000
+++ b/lisp/isearch.el 2010-04-15 23:51:12 +0000
@@ -1757,7 +1757,7 @@
"Whether scrolling is allowed during incremental search.
If non-nil, scrolling commands can be used in Isearch mode.
However, the current match will never scroll offscreen.
-If nil, scolling commands will first cancel Isearch mode."
+If nil, scrolling commands will first cancel Isearch mode."
:type 'boolean
:group 'isearch)
=== modified file 'lisp/mwheel.el'
--- a/lisp/mwheel.el 2010-04-14 00:11:21 +0000
+++ b/lisp/mwheel.el 2010-04-15 23:51:12 +0000
@@ -246,7 +246,8 @@
(run-with-timer mouse-wheel-inhibit-click-time nil
'mwheel-inhibit-click-timeout))))
-(add-to-list 'scroll-preserve-screen-position-commands 'mwheel-scroll)
+(put 'mwheel-scroll 'scroll-command t)
+(put 'mwheel-scroll 'isearch-scroll t)
(defvar mwheel-installed-bindings nil)
=== modified file 'lisp/simple.el'
--- a/lisp/simple.el 2010-04-14 15:24:17 +0000
+++ b/lisp/simple.el 2010-04-15 23:51:12 +0000
@@ -4792,8 +4792,8 @@
;; move to the bottom of the buffer.
(goto-char (point-max))))))))
+(put 'scroll-up-command 'scroll-command t)
(put 'scroll-up-command 'isearch-scroll t)
-(add-to-list 'scroll-preserve-screen-position-commands 'scroll-up-command)
(defun scroll-down-command (&optional arg)
"Scroll text of selected window down ARG lines; or near full screen if no
ARG.
@@ -4825,8 +4825,8 @@
;; move to the top of the buffer.
(goto-char (point-min))))))))
+(put 'scroll-down-command 'scroll-command t)
(put 'scroll-down-command 'isearch-scroll t)
-(add-to-list 'scroll-preserve-screen-position-commands 'scroll-down-command)
;;; Scrolling commands which scroll a line instead of full screen.
@@ -4837,8 +4837,8 @@
(interactive "p")
(scroll-up (or arg 1)))
+(put 'scroll-up-line 'scroll-command t)
(put 'scroll-up-line 'isearch-scroll t)
-(add-to-list 'scroll-preserve-screen-position-commands 'scroll-up-line)
(defun scroll-down-line (&optional arg)
"Scroll text of selected window down ARG lines; or one line if no ARG.
@@ -4847,8 +4847,8 @@
(interactive "p")
(scroll-down (or arg 1)))
+(put 'scroll-down-line 'scroll-command t)
(put 'scroll-down-line 'isearch-scroll t)
-(add-to-list 'scroll-preserve-screen-position-commands 'scroll-down-line)
(defun scroll-other-window-down (lines)
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-04-15 21:52:27 +0000
+++ b/src/ChangeLog 2010-04-15 23:51:12 +0000
@@ -1,3 +1,15 @@
+2010-04-15 Juri Linkov <address@hidden>
+
+ * window.c: Add Qscroll_command.
+ Remove Vscroll_preserve_screen_position_commands.
+ (window_scroll_pixel_based, window_scroll_line_based): Check the
+ `scroll-command' property on the last command instead of searching
+ the last command in Vscroll_preserve_screen_position_commands.
+ (syms_of_window): Initialize and staticpro `Qscroll_command'.
+ Put Qscroll_command property on Qscroll_up and Qscroll_down.
+ (scroll-preserve-screen-position): Doc fix.
+ (Vscroll_preserve_screen_position_commands): Remove variable.
+
2010-04-15 Dan Nicolaescu <address@hidden>
* xdisp.c (message): Do not use NO_ARG_ARRAY.
=== modified file 'src/window.c'
--- a/src/window.c 2010-04-14 00:33:32 +0000
+++ b/src/window.c 2010-04-15 23:51:12 +0000
@@ -54,7 +54,7 @@
Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configuration_p;
Lisp_Object Qdisplay_buffer;
-Lisp_Object Qscroll_up, Qscroll_down;
+Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
Lisp_Object Qwindow_size_fixed;
extern Lisp_Object Qleft_margin, Qright_margin;
@@ -168,10 +168,6 @@
Lisp_Object Vscroll_preserve_screen_position;
-/* List of commands affected by `Vscroll_preserve_screen_position'. */
-
-Lisp_Object Vscroll_preserve_screen_position_commands;
-
/* Non-nil means that text is inserted before window's markers. */
Lisp_Object Vwindow_point_insertion_type;
@@ -4946,12 +4942,13 @@
if (!NILP (Vscroll_preserve_screen_position))
{
/* We preserve the goal pixel coordinate across consecutive
- calls to scroll-up or scroll-down. This avoids the
+ calls to scroll-up, scroll-down and other commands that
+ have the `scroll-command' property. This avoids the
possibility of point becoming "stuck" on a tall line when
scrolling by one line. */
if (window_scroll_pixel_based_preserve_y < 0
- || NILP (Fmemq (current_kboard->Vlast_command,
- Vscroll_preserve_screen_position_commands)))
+ || !SYMBOLP (current_kboard->Vlast_command)
+ || NILP (Fget (current_kboard->Vlast_command, Qscroll_command)))
{
start_display (&it, w, start);
move_it_to (&it, PT, -1, -1, -1, MOVE_TO_POS);
@@ -5211,8 +5208,8 @@
if (!NILP (Vscroll_preserve_screen_position))
{
if (window_scroll_preserve_vpos <= 0
- || NILP (Fmemq (current_kboard->Vlast_command,
- Vscroll_preserve_screen_position_commands)))
+ || !SYMBOLP (current_kboard->Vlast_command)
+ || NILP (Fget (current_kboard->Vlast_command, Qscroll_command)))
{
struct position posit
= *compute_motion (startpos, 0, 0, 0,
@@ -7180,6 +7177,12 @@
Qscroll_down = intern_c_string ("scroll-down");
staticpro (&Qscroll_down);
+ Qscroll_command = intern_c_string ("scroll-command");
+ staticpro (&Qscroll_command);
+
+ Fput (Qscroll_up, Qscroll_command, Qt);
+ Fput (Qscroll_down, Qscroll_command, Qt);
+
Qwindow_size_fixed = intern_c_string ("window-size-fixed");
staticpro (&Qwindow_size_fixed);
Fset (Qwindow_size_fixed, Qnil);
@@ -7270,18 +7273,10 @@
command moved it vertically out of the window, e.g. when scrolling
by full screens.
Any other value means point always keeps its screen position.
-Scroll commands are defined by the variable
-`scroll-preserve-screen-position-commands'. */);
+Scroll commands should have the `scroll-command' property
+on their symbols to be controlled by this variable. */);
Vscroll_preserve_screen_position = Qnil;
- DEFVAR_LISP ("scroll-preserve-screen-position-commands",
- &Vscroll_preserve_screen_position_commands,
- doc: /* A list of commands whose scrolling should keep screen
position unchanged.
-This list defines the names of scroll commands affected by the variable
-`scroll-preserve-screen-position'. */);
- Vscroll_preserve_screen_position_commands =
- Fcons (Qscroll_down, Fcons (Qscroll_up, Qnil));
-
DEFVAR_LISP ("window-point-insertion-type", &Vwindow_point_insertion_type,
doc: /* Type of marker to use for `window-point'. */);
Vwindow_point_insertion_type = Qnil;
- [Emacs-diffs] /srv/bzr/emacs/trunk r99913: Add the `scroll-command' property.,
Juri Linkov <=