Commit cdf3e5a2 authored by Richard M. Stallman's avatar Richard M. Stallman

Style of comments corrected.

(interval_of): New function.
parent b745025d
/* Interface code for dealing with text properties.
Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
This file is part of GNU Emacs.
......@@ -44,12 +44,12 @@ Boston, MA 02111-1307, USA. */
only once on the list. Although some code i.e., remove_properties,
handles the more general case, the uniqueness of properties is
necessary for the system to remain consistent. This requirement
is enforced by the subrs installing properties onto the intervals. */
is enforced by the subrs installing properties onto the intervals. */
/* The rest of the file is within this conditional */
#ifdef USE_TEXT_PROPERTIES
/* Types of hooks. */
/* Types of hooks. */
Lisp_Object Qmouse_left;
Lisp_Object Qmouse_entered;
Lisp_Object Qpoint_left;
......@@ -57,7 +57,7 @@ Lisp_Object Qpoint_entered;
Lisp_Object Qcategory;
Lisp_Object Qlocal_map;
/* Visual properties text (including strings) may have. */
/* Visual properties text (including strings) may have. */
Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
Lisp_Object Qinvisible, Qread_only, Qintangible;
......@@ -116,7 +116,7 @@ validate_interval_range (object, begin, end, force)
CHECK_NUMBER_COERCE_MARKER (*end, 0);
/* If we are asked for a point, but from a subr which operates
on a range, then return nothing. */
on a range, then return nothing. */
if (EQ (*begin, *end) && begin != end)
return NULL_INTERVAL;
......@@ -137,7 +137,7 @@ validate_interval_range (object, begin, end, force)
args_out_of_range (*begin, *end);
i = BUF_INTERVALS (b);
/* If there's no text, there are no properties. */
/* If there's no text, there are no properties. */
if (BUF_BEGV (b) == BUF_ZV (b))
return NULL_INTERVAL;
......@@ -171,7 +171,7 @@ validate_interval_range (object, begin, end, force)
/* Validate LIST as a property list. If LIST is not a list, then
make one consisting of (LIST nil). Otherwise, verify that LIST
is even numbered and thus suitable as a plist. */
is even numbered and thus suitable as a plist. */
static Lisp_Object
validate_plist (list)
......@@ -198,7 +198,7 @@ validate_plist (list)
}
/* Return nonzero if interval I has all the properties,
with the same values, of list PLIST. */
with the same values, of list PLIST. */
static int
interval_has_all_properties (plist, i)
......@@ -208,7 +208,7 @@ interval_has_all_properties (plist, i)
register Lisp_Object tail1, tail2, sym1, sym2;
register int found;
/* Go through each element of PLIST. */
/* Go through each element of PLIST. */
for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1)))
{
sym1 = Fcar (tail1);
......@@ -219,11 +219,11 @@ interval_has_all_properties (plist, i)
if (EQ (sym1, Fcar (tail2)))
{
/* Found the same property on both lists. If the
values are unequal, return zero. */
values are unequal, return zero. */
if (! EQ (Fcar (Fcdr (tail1)), Fcar (Fcdr (tail2))))
return 0;
/* Property has same value on both lists; go to next one. */
/* Property has same value on both lists; go to next one. */
found = 1;
break;
}
......@@ -236,7 +236,7 @@ interval_has_all_properties (plist, i)
}
/* Return nonzero if the plist of interval I has any of the
properties of PLIST, regardless of their values. */
properties of PLIST, regardless of their values. */
static INLINE int
interval_has_some_properties (plist, i)
......@@ -245,7 +245,7 @@ interval_has_some_properties (plist, i)
{
register Lisp_Object tail1, tail2, sym;
/* Go through each element of PLIST. */
/* Go through each element of PLIST. */
for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1)))
{
sym = Fcar (tail1);
......@@ -349,7 +349,7 @@ add_properties (plist, i, object)
I and its plist are also protected, via OBJECT. */
GCPRO3 (tail1, sym1, val1);
/* Go through each element of PLIST. */
/* Go through each element of PLIST. */
for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1)))
{
sym1 = Fcar (tail1);
......@@ -365,11 +365,11 @@ add_properties (plist, i, object)
register Lisp_Object this_cdr;
this_cdr = Fcdr (tail2);
/* Found the property. Now check its value. */
/* Found the property. Now check its value. */
found = 1;
/* The properties have the same value on both lists.
Continue to the next property. */
Continue to the next property. */
if (EQ (val1, Fcar (this_cdr)))
break;
......@@ -418,7 +418,7 @@ remove_properties (plist, i, object)
register int changed = 0;
current_plist = i->plist;
/* Go through each element of plist. */
/* Go through each element of plist. */
for (tail1 = plist; ! NILP (tail1); tail1 = Fcdr (Fcdr (tail1)))
{
sym = Fcar (tail1);
......@@ -465,7 +465,7 @@ remove_properties (plist, i, object)
#if 0
/* Remove all properties from interval I. Return non-zero
if this changes the interval. */
if this changes the interval. */
static INLINE int
erase_properties (i)
......@@ -479,6 +479,48 @@ erase_properties (i)
}
#endif
/* Returns the interval of the POSITION in OBJECT.
POSITION is BEG-based. */
INTERVAL
interval_of (position, object)
int position;
Lisp_Object object;
{
register INTERVAL i;
int beg, end;
if (NILP (object))
XSETBUFFER (object, current_buffer);
CHECK_STRING_OR_BUFFER (object, 0);
if (BUFFERP (object))
{
register struct buffer *b = XBUFFER (object);
beg = BUF_BEGV (b);
end = BUF_ZV (b);
i = BUF_INTERVALS (b);
}
else
{
register struct Lisp_String *s = XSTRING (object);
/* We expect position to be 1-based. */
beg = BEG;
end = s->size + BEG;
i = s->intervals;
}
if (!(beg <= position && position <= end))
args_out_of_range (position, position);
if (beg == end || NULL_INTERVAL_P (i))
return NULL_INTERVAL;
return find_interval (i, position);
}
DEFUN ("text-properties-at", Ftext_properties_at,
Stext_properties_at, 1, 2, 0,
"Return the list of properties held by the character at POSITION\n\
......@@ -900,11 +942,11 @@ Return t if any property value actually changed, nil otherwise.")
GCPRO1 (properties);
/* If we're not starting on an interval boundary, we have to
split this interval. */
split this interval. */
if (i->position != s)
{
/* If this interval already has the properties, we can
skip it. */
skip it. */
if (interval_has_all_properties (properties, i))
{
int got = (LENGTH (i) - (s - i->position));
......@@ -1155,7 +1197,7 @@ Return t if any property was actually removed, nil otherwise.")
if (i->position != s)
{
/* No properties on this first interval -- return if
it covers the entire region. */
it covers the entire region. */
if (! interval_has_some_properties (properties, i))
{
int got = (LENGTH (i) - (s - i->position));
......@@ -1315,7 +1357,7 @@ is the string or buffer containing the text.")
register int got;
register INTERVAL unchanged = i;
/* If there are properties here, then this text will be modified. */
/* If there are properties here, then this text will be modified. */
if (! NILP (i->plist))
{
i = split_interval_right (unchanged, s - unchanged->position);
......@@ -1340,7 +1382,7 @@ is the string or buffer containing the text.")
else if (LENGTH (i) - (s - i->position) <= len)
return Qnil;
/* The amount of text to change extends past I, so just note
how much we've gotten. */
how much we've gotten. */
else
got = LENGTH (i) - (s - i->position);
......@@ -1349,7 +1391,7 @@ is the string or buffer containing the text.")
i = next_interval (i);
}
/* We are starting at the beginning of an interval, I. */
/* We are starting at the beginning of an interval, I. */
while (len > 0)
{
if (LENGTH (i) >= len)
......@@ -1383,7 +1425,7 @@ is the string or buffer containing the text.")
else
{
modified += ! NILP (i->plist);
/* Merging I will give it the properties of PREV_CHANGED. */
/* Merging I will give it the properties of PREV_CHANGED. */
prev_changed = i = merge_interval_left (i);
}
......@@ -1463,7 +1505,7 @@ copy_text_properties (start, end, src, pos, dest, prop)
if (! NILP (plist))
{
/* Must defer modifications to the interval tree in case src
and dest refer to the same string or buffer. */
and dest refer to the same string or buffer. */
stuff = Fcons (Fcons (make_number (p),
Fcons (make_number (p + len),
Fcons (plist, Qnil))),
......@@ -1572,7 +1614,7 @@ verify_interval_modification (buf, start, end)
if (NILP (Vinhibit_read_only) || CONSP (Vinhibit_read_only))
{
/* If I and PREV differ we need to check for the read-only
property together with its stickiness. If either I or
property together with its stickiness. If either I or
PREV are 0, this check is all we need.
We have to take special care, since read-only may be
indirectly defined via the category property. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment