/[emacs]/emacs/src/textprop.c
ViewVC logotype

Diff of /emacs/src/textprop.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.122 by rms, Mon Nov 26 20:10:04 2001 UTC revision 1.123 by monnier, Fri Jan 25 22:42:05 2002 UTC
# Line 883  past position LIMIT; return LIMIT if not Line 883  past position LIMIT; return LIMIT if not
883    if (NILP (object))    if (NILP (object))
884      XSETBUFFER (object, current_buffer);      XSETBUFFER (object, current_buffer);
885    
886    if (! NILP (limit) && ! EQ (limit, Qt))    if (!NILP (limit) && !EQ (limit, Qt))
887      CHECK_NUMBER_COERCE_MARKER (limit);      CHECK_NUMBER_COERCE_MARKER (limit);
888    
889    i = validate_interval_range (object, &position, &position, soft);    i = validate_interval_range (object, &position, &position, soft);
# Line 911  past position LIMIT; return LIMIT if not Line 911  past position LIMIT; return LIMIT if not
911    
912    next = next_interval (i);    next = next_interval (i);
913    
914    while (! NULL_INTERVAL_P (next) && intervals_equal (i, next)    while (!NULL_INTERVAL_P (next) && intervals_equal (i, next)
915           && (NILP (limit) || next->position < XFASTINT (limit)))           && (NILP (limit) || next->position < XFASTINT (limit)))
916      next = next_interval (next);      next = next_interval (next);
917    
918    if (NULL_INTERVAL_P (next))    if (NULL_INTERVAL_P (next))
919      return limit;      return limit;
920    if (! NILP (limit) && !(next->position < XFASTINT (limit)))    if (NILP (limit))
921        XSETFASTINT (limit, (STRINGP (object)
922                             ? XSTRING (object)->size
923                             : BUF_ZV (XBUFFER (object))));
924      if (!(next->position < XFASTINT (limit)))
925      return limit;      return limit;
926    
927    XSETFASTINT (position, next->position);    XSETFASTINT (position, next->position);
# Line 993  past position LIMIT; return LIMIT if not Line 997  past position LIMIT; return LIMIT if not
997    
998    if (NULL_INTERVAL_P (next))    if (NULL_INTERVAL_P (next))
999      return limit;      return limit;
1000    if (! NILP (limit) && !(next->position < XFASTINT (limit)))    if (NILP (limit))
1001        XSETFASTINT (limit, (STRINGP (object)
1002                             ? XSTRING (object)->size
1003                             : BUF_ZV (XBUFFER (object))));
1004      if (!(next->position < XFASTINT (limit)))
1005      return limit;      return limit;
1006    
1007    return make_number (next->position);    return make_number (next->position);
# Line 1030  back past position LIMIT; return LIMIT i Line 1038  back past position LIMIT; return LIMIT i
1038      i = previous_interval (i);      i = previous_interval (i);
1039    
1040    previous = previous_interval (i);    previous = previous_interval (i);
1041    while (! NULL_INTERVAL_P (previous) && intervals_equal (previous, i)    while (!NULL_INTERVAL_P (previous) && intervals_equal (previous, i)
1042           && (NILP (limit)           && (NILP (limit)
1043               || (previous->position + LENGTH (previous) > XFASTINT (limit))))               || (previous->position + LENGTH (previous) > XFASTINT (limit))))
1044      previous = previous_interval (previous);      previous = previous_interval (previous);
1045    if (NULL_INTERVAL_P (previous))    if (NULL_INTERVAL_P (previous))
1046      return limit;      return limit;
1047    if (!NILP (limit)    if (NILP (limit))
1048        && !(previous->position + LENGTH (previous) > XFASTINT (limit)))      XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
1049      if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
1050      return limit;      return limit;
1051    
1052    return make_number (previous->position + LENGTH (previous));    return make_number (previous->position + LENGTH (previous));
# Line 1070  back past position LIMIT; return LIMIT i Line 1079  back past position LIMIT; return LIMIT i
1079    i = validate_interval_range (object, &position, &position, soft);    i = validate_interval_range (object, &position, &position, soft);
1080    
1081    /* Start with the interval containing the char before point.  */    /* Start with the interval containing the char before point.  */
1082    if (! NULL_INTERVAL_P (i) && i->position == XFASTINT (position))    if (!NULL_INTERVAL_P (i) && i->position == XFASTINT (position))
1083      i = previous_interval (i);      i = previous_interval (i);
1084    
1085    if (NULL_INTERVAL_P (i))    if (NULL_INTERVAL_P (i))
# Line 1078  back past position LIMIT; return LIMIT i Line 1087  back past position LIMIT; return LIMIT i
1087    
1088    here_val = textget (i->plist, prop);    here_val = textget (i->plist, prop);
1089    previous = previous_interval (i);    previous = previous_interval (i);
1090    while (! NULL_INTERVAL_P (previous)    while (!NULL_INTERVAL_P (previous)
1091           && EQ (here_val, textget (previous->plist, prop))           && EQ (here_val, textget (previous->plist, prop))
1092           && (NILP (limit)           && (NILP (limit)
1093               || (previous->position + LENGTH (previous) > XFASTINT (limit))))               || (previous->position + LENGTH (previous) > XFASTINT (limit))))
1094      previous = previous_interval (previous);      previous = previous_interval (previous);
1095    if (NULL_INTERVAL_P (previous))    if (NULL_INTERVAL_P (previous))
1096      return limit;      return limit;
1097    if (!NILP (limit)    if (NILP (limit))
1098        && !(previous->position + LENGTH (previous) > XFASTINT (limit)))      XSETFASTINT (limit, (STRINGP (object) ? 0 : BUF_BEGV (XBUFFER (object))));
1099      if (!(previous->position + LENGTH (previous) > XFASTINT (limit)))
1100      return limit;      return limit;
1101    
1102    return make_number (previous->position + LENGTH (previous));    return make_number (previous->position + LENGTH (previous));

Legend:
Removed from v.1.122  
changed lines
  Added in v.1.123

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26