/* Definitions and global variables for intervals.
- Copyright (C) 1993, 1994, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of GNU Emacs.
{ \
(i)->total_length = (i)->position = 0; \
(i)->left = (i)->right = NULL_INTERVAL; \
- SET_INTERVAL_PARENT (i, NULL_INTERVAL); \
+ SET_INTERVAL_PARENT (i, NULL_INTERVAL); \
(i)->write_protect = 0; \
(i)->visible = 0; \
(i)->front_sticky = (i)->rear_sticky = 0; \
void extend_property_ranges P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
Lisp_Object get_char_property_and_overlay P_ ((Lisp_Object, Lisp_Object,
Lisp_Object, Lisp_Object*));
-extern int text_property_stickiness P_ ((Lisp_Object prop, Lisp_Object pos));
+extern int text_property_stickiness P_ ((Lisp_Object prop, Lisp_Object pos, Lisp_Object buffer));
extern void syms_of_textprop ();
/* Interface code for dealing with text properties.
- Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002
+ Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* Return the direction from which the text-property PROP would be
inherited by any new text inserted at POS: 1 if it would be
inherited from the char after POS, -1 if it would be inherited from
- the char before POS, and 0 if from neither. */
+ the char before POS, and 0 if from neither.
+ BUFFER can be either a buffer or nil (meaning current buffer). */
int
-text_property_stickiness (prop, pos)
- Lisp_Object prop;
- Lisp_Object pos;
+text_property_stickiness (prop, pos, buffer)
+ Lisp_Object prop, pos, buffer;
{
Lisp_Object prev_pos, front_sticky;
int is_rear_sticky = 1, is_front_sticky = 0; /* defaults */
- if (XINT (pos) > BEGV)
+ if (NILP (buffer))
+ XSETBUFFER (buffer, current_buffer);
+
+ if (XINT (pos) > BUF_BEGV (XBUFFER (buffer)))
/* Consider previous character. */
{
Lisp_Object rear_non_sticky;
prev_pos = make_number (XINT (pos) - 1);
- rear_non_sticky = Fget_text_property (prev_pos, Qrear_nonsticky, Qnil);
+ rear_non_sticky = Fget_text_property (prev_pos, Qrear_nonsticky, buffer);
if (!NILP (CONSP (rear_non_sticky)
? Fmemq (prop, rear_non_sticky)
}
/* Consider following character. */
- front_sticky = Fget_text_property (pos, Qfront_sticky, Qnil);
+ front_sticky = Fget_text_property (pos, Qfront_sticky, buffer);
if (EQ (front_sticky, Qt)
|| (CONSP (front_sticky)
disambiguate. Basically, rear-sticky wins, _except_ if the
property that would be inherited has a value of nil, in which case
front-sticky wins. */
- if (XINT (pos) == BEGV || NILP (Fget_text_property (prev_pos, prop, Qnil)))
+ if (XINT (pos) == BUF_BEGV (XBUFFER (buffer))
+ || NILP (Fget_text_property (prev_pos, prop, buffer)))
return 1;
else
return -1;