[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How is text properties stored?
From: |
Stefan Monnier |
Subject: |
Re: How is text properties stored? |
Date: |
Wed, 08 May 2019 20:58:23 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) |
> overlays). That’s probably not the case since text property is supposed to
> be more efficient than overlays. So how does it work?
It's all in src/intervals.[ch].
It starts with:
struct interval
{
/* The first group of entries deal with the tree structure. */
ptrdiff_t total_length; /* Length of myself and both children. */
ptrdiff_t position; /* Cache of interval's character
position. */
/* This field is valid in the final
target interval returned by
find_interval, next_interval,
previous_interval and
update_interval. It cannot be
depended upon in any intermediate
intervals traversed by these
functions, or any other
interval. */
struct interval *left; /* Intervals which precede me. */
struct interval *right; /* Intervals which succeed me. */
/* Parent in the tree, or the Lisp_Object containing this interval tree.
*/
union
{
struct interval *interval;
Lisp_Object obj;
} up;
bool_bf up_obj : 1;
bool_bf gcmarkbit : 1;
/* The remaining components are `properties' of the interval.
The first four are duplicates for things which can be on the list,
for purposes of speed. */
bool_bf write_protect : 1; /* True means can't modify. */
bool_bf visible : 1; /* False means don't display. */
bool_bf front_sticky : 1; /* True means text inserted just
before this interval goes into it. */
bool_bf rear_sticky : 1; /* Likewise for just after it. */
Lisp_Object plist; /* Other properties. */
};
As you can see from the left/right fields, it's a binary tree.
And we try to keep it balanced (tho IIRC it's not quite always
balanced).
Stefan
- How is text properties stored?, Yuan Fu, 2019/05/08
- Re: How is text properties stored?,
Stefan Monnier <=
- Re: How is text properties stored?, Yuan Fu, 2019/05/08
- Re: How is text properties stored?, Eli Zaretskii, 2019/05/09
- Re: How is text properties stored?, Yuan Fu, 2019/05/09
- Re: How is text properties stored?, Stefan Monnier, 2019/05/09
- Re: How is text properties stored?, Yuan Fu, 2019/05/09
- Re: How is text properties stored?, Eli Zaretskii, 2019/05/10