]> code.delx.au - gnu-emacs/commitdiff
(Fnext_property_change, Fnext_single_property_change)
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 25 Jan 2002 22:42:13 +0000 (22:42 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 25 Jan 2002 22:42:13 +0000 (22:42 +0000)
(Fprevious_property_change, Fprevious_single_property_change):
Stay within the narrowed-buffer boundaries.

src/ChangeLog
src/textprop.c

index 1de38454e55f12e99f3acae66bb36b2a1c456808..2d96bd9fb0de75159ea1c3a4e4fbdd8eed8fe4d3 100644 (file)
@@ -1,3 +1,9 @@
+2002-01-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * textprop.c (Fnext_property_change, Fnext_single_property_change)
+       (Fprevious_property_change, Fprevious_single_property_change):
+       Stay within the narrowed-buffer boundaries.
+
 2002-01-25  Eli Zaretskii  <eliz@is.elta.co.il>
 
        * term.c (Ftty_display_color_cells): New function.
 2002-01-07  Jason Rumney  <jasonr@gnu.org>
 
        * xmenu.c (set_frame_menubar, xmenu_show):
-       (xdialog_show): Initialize wv->help to Qnil. 
+       (xdialog_show): Initialize wv->help to Qnil.
 
        * w32menu.c (single_submenu, set_frame_menubar, w32_menu_show):
        (w32_dialog_show): Initialize wv->help to Qnil.
        (notice_overwritten_cursor): Don't depend on
        output_cursor and updated_area.  Compare pixel coordinates with
        window's cursor pixel coordinates.
-       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): Call
-       notice_overwritten_cursor with new arg list.
+       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
+       Call notice_overwritten_cursor with new arg list.
        (show_mouse_face): Fix bug setting a row's mouse_face_p flag
        unconditionally.
        (x_draw_image_relief): Use predefined macro instead of
        * keymap.c (Flookup_key): Error message if key has wrong data type.
        (Fdefine_key): Add error message for trying to bind [DEL], [RET], etc.
        (exclude_key): New variable.
-       
+
 2001-12-28  Gerd Moellmann  <gerd@gnu.org>
 
        * xterm.c (x_setup_relief_colors): Don't compute an image's
        background color if it doesn't have a Pixmap.
-       
+
        * xterm.c (notice_overwritten_cursor): Don't depend on
        output_cursor and updated_area.  Compare pixel coordinates with
        window's cursor pixel coordinates.
-       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face): Call
-       notice_overwritten_cursor with new arg list.
+       (x_draw_glyphs, x_clear_end_of_line, show_mouse_face):
+       Call notice_overwritten_cursor with new arg list.
        (show_mouse_face): Fix bug setting a row's mouse_face_p flag
        unconditionally.
 
        separated by mouse-movement.  When tracking mouse, only record
        first and last mouse-movement event in same window.
        Don't record mouse-movement events in keyboard macros.
-       
+
 2001-12-25  Richard M. Stallman  <rms@gnu.org>
 
        * window.c (enlarge_window): New arg PRESERVE_BEFORE.  Callers changed.
 
 2001-12-22  Pavel Jan\e,Bm\e(Bk  <Pavel@Janik.cz>
 
-       The following changes remove mocklisp support:
+       The following changes remove mocklisp support:
 
        * mocklisp.h, mocklisp.c: Files removed.
 
        `Qmocklisp' and `Qmocklisp_arguments'.
        Remove prototype of syms_of_mocklisp.
 
-       * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp
-       files.
+       * makefile.nt, makefile.w32-in, Makefile.in: Remove mocklisp files.
 
        * callint.c: Do not include mocklisp.h.
        (Fcall_interactively): Do not test for mocklisp case.
 
        * eval.c: Remove variables `Qmocklisp_arguments',
-       `Vmocklisp_arguments' and `Qmocklisp'.  Remove prototype of
-       ml_apply.
-       (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda): Do
-       not test for mocklisp case.
+       `Vmocklisp_arguments' and `Qmocklisp'.  Remove prototype of ml_apply.
+       (Fprogn, Fwhile, Fcommandp, Feval, Ffuncall, funcall_lambda):
+       Do not test for mocklisp case.
        (Fwhile): Remove unused variable `tem'.
        (syms_of_eval): Remove variable `moclisp-arguments'.
 
 
 2001-12-09  Jason Rumney  <jasonr@gnu.org>
 
-       * w32menu.c (_widget_value): Make `help' field a Lisp_Object. Add
-       comment to explain where the struct came from.
+       * w32menu.c (_widget_value): Make `help' field a Lisp_Object.
+       Add     comment to explain where the struct came from.
        (single_submenu, w32_menu_show): Set `help' field as Lisp_Object.
        (add_menu_item): Process pop-up menus first to avoid memory leak.
        (add_menu_item, w32_menu_display_help): Use `help' field as
        * alloc.c (inhibit_garbage_collection): Don't exceed value an int
        can hold.
 
-       * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum): Renamed
+       * data.c (Vmost_positive_fixnum, Vmost_negative_fixnum): Rename
        from most_positive_fixnum and most_negative_fixnum, resp., and
        type changed to Lisp_Object.
        (syms_of_data): DEFVAR_LISP them.
index 7c6a5e6d68643ced6d50dcaf9c528910eff07783..14fce396a2115201efa47cd50fca05b8acc29da8 100644 (file)
@@ -883,7 +883,7 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT.  */)
   if (NILP (object))
     XSETBUFFER (object, current_buffer);
 
-  if (! NILP (limit) && ! EQ (limit, Qt))
+  if (!NILP (limit) && !EQ (limit, Qt))
     CHECK_NUMBER_COERCE_MARKER (limit);
 
   i = validate_interval_range (object, &position, &position, soft);
@@ -911,13 +911,17 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT.  */)
 
   next = next_interval (i);
 
-  while (! NULL_INTERVAL_P (next) && intervals_equal (i, next)
+  while (!NULL_INTERVAL_P (next) && intervals_equal (i, next)
         && (NILP (limit) || next->position < XFASTINT (limit)))
     next = next_interval (next);
 
   if (NULL_INTERVAL_P (next))
     return limit;
-  if (! NILP (limit) && !(next->position < XFASTINT (limit)))
+  if (NILP (limit))
+    XSETFASTINT (limit, (STRINGP (object)
+                        ? XSTRING (object)->size
+                        : BUF_ZV (XBUFFER (object))));
+  if (!(next->position < XFASTINT (limit)))
     return limit;
 
   XSETFASTINT (position, next->position);
@@ -993,7 +997,11 @@ past position LIMIT; return LIMIT if nothing is found before LIMIT.  */)
 
   if (NULL_INTERVAL_P (next))
     return limit;
-  if (! NILP (limit) && !(next->position < XFASTINT (limit)))
+  if (NILP (limit))
+    XSETFASTINT (limit, (STRINGP (object)
+                        ? XSTRING (object)->size
+                        : BUF_ZV (XBUFFER (object))));
+  if (!(next->position < XFASTINT (limit)))
     return limit;
 
   return make_number (next->position);
@@ -1030,14 +1038,15 @@ back past position LIMIT; return LIMIT if nothing is found until LIMIT.  */)
     i = previous_interval (i);
 
   previous = previous_interval (i);
-  while (! NULL_INTERVAL_P (previous) && intervals_equal (previous, i)
+  while (!NULL_INTERVAL_P (previous) && intervals_equal (previous, i)
         && (NILP (limit)
             || (previous->position + LENGTH (previous) > XFASTINT (limit))))
     previous = previous_interval (previous);
   if (NULL_INTERVAL_P (previous))
     return limit;
-  if (!NILP (limit)
-      && !(previous->position + LENGTH (previous) > XFASTINT (limit)))
+  if (NILP (limit))
+    XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
+  if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
     return limit;
 
   return make_number (previous->position + LENGTH (previous));
@@ -1070,7 +1079,7 @@ back past position LIMIT; return LIMIT if nothing is found until LIMIT.  */)
   i = validate_interval_range (object, &position, &position, soft);
 
   /* Start with the interval containing the char before point.  */
-  if (! NULL_INTERVAL_P (i) && i->position == XFASTINT (position))
+  if (!NULL_INTERVAL_P (i) && i->position == XFASTINT (position))
     i = previous_interval (i);
 
   if (NULL_INTERVAL_P (i))
@@ -1078,15 +1087,16 @@ back past position LIMIT; return LIMIT if nothing is found until LIMIT.  */)
 
   here_val = textget (i->plist, prop);
   previous = previous_interval (i);
-  while (! NULL_INTERVAL_P (previous)
+  while (!NULL_INTERVAL_P (previous)
         && EQ (here_val, textget (previous->plist, prop))
         && (NILP (limit)
             || (previous->position + LENGTH (previous) > XFASTINT (limit))))
     previous = previous_interval (previous);
   if (NULL_INTERVAL_P (previous))
     return limit;
-  if (!NILP (limit)
-      && !(previous->position + LENGTH (previous) > XFASTINT (limit)))
+  if (NILP (limit))
+    XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
+  if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
     return limit;
 
   return make_number (previous->position + LENGTH (previous));