emacs-diffs
[Top][All Lists]
Advanced

[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;


reply via email to

[Prev in Thread] Current Thread [Next in Thread]