unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Interval tree
@ 2002-07-17  5:51 Freddy Chik
  2002-07-17 13:13 ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Freddy Chik @ 2002-07-17  5:51 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 783 bytes --]

Hi guys

I am trying to understand how are text organized in emacs, I come across this data structure call interval tree, which is built on top of a buffer, can anyone point me to any paper which talks about what an interval tree is and how this interval concepts is used in emacs? thanks

Yu Fai Freddy Chik 
4A Computer Science / Combinatorics and Optimization
University of Waterloo
Waterloo, ON
------------------------------------------------------------ 
-- Computer Science is the study of algorithmic processes --
-- that limit the amount of time one has to perform daily --
----- activities such as sleeping, eating, exercising, ----- 
---- bathing, dating and improving ones social skills. ----- 
------------------------------------------------------------ 

[-- Attachment #2: Type: text/html, Size: 1283 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-17  5:51 Interval tree Freddy Chik
@ 2002-07-17 13:13 ` Stefan Monnier
  2002-07-17 22:39   ` Freddy Chik
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2002-07-17 13:13 UTC (permalink / raw)
  Cc: emacs-devel

> I am trying to understand how are text organized in emacs,
> I come across this data structure call interval tree, which
> is built on top of a buffer, can anyone point me to any paper
> which talks about what an interval tree is and how this interval
> concepts is used in emacs? thanks

Please don't use HTML for such email (and complain to the author of
the software you use that it should not use HTML if the text doesn't
use any attribute annotation).

As for the actual question: I don't think there's any paper about it.
It's just a balanced binary tree used to implement text-properties
(which associate with each buffer location a set of properties).
Since text-properties tend to stay the same over several consecutive
chars, the mapping only records the place where those properties
change: each node of the tree corresponds to an interval that starts
at a particular position and spans some number of chars.


	Stefan

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-17 13:13 ` Stefan Monnier
@ 2002-07-17 22:39   ` Freddy Chik
  2002-07-18 21:13     ` Richard Stallman
  0 siblings, 1 reply; 7+ messages in thread
From: Freddy Chik @ 2002-07-17 22:39 UTC (permalink / raw)
  Cc: emacs-devel

it sounds like text properties are things like fonts?

I jumped into places such as lisp.h, buffer.h, textprop.c, hoping to find a
definition for this thing, but all I got is a Lisp_Object plist (even for
functions that adds to the property list or removes from it), where is this
mysterious text property structure described?

Yu Fai Freddy Chik
4A Computer Science / Combinatorics and Optimization
University of Waterloo
Waterloo, ON
------------------------------------------------------------
-- Computer Science is the study of algorithmic processes --
-- that limit the amount of time one has to perform daily --
----- activities such as sleeping, eating, exercising, -----
---- bathing, dating and improving ones social skills. -----
------------------------------------------------------------
----- Original Message -----
From: "Stefan Monnier" <monnier+gnu/emacs@rum.cs.yale.edu>
To: "Freddy Chik" <yffchik_ura@hotmail.com>
Cc: <emacs-devel@gnu.org>
Sent: Wednesday, July 17, 2002 9:13 AM
Subject: Re: Interval tree


> > I am trying to understand how are text organized in emacs,
> > I come across this data structure call interval tree, which
> > is built on top of a buffer, can anyone point me to any paper
> > which talks about what an interval tree is and how this interval
> > concepts is used in emacs? thanks
>
> Please don't use HTML for such email (and complain to the author of
> the software you use that it should not use HTML if the text doesn't
> use any attribute annotation).
>
> As for the actual question: I don't think there's any paper about it.
> It's just a balanced binary tree used to implement text-properties
> (which associate with each buffer location a set of properties).
> Since text-properties tend to stay the same over several consecutive
> chars, the mapping only records the place where those properties
> change: each node of the tree corresponds to an interval that starts
> at a particular position and spans some number of chars.
>
>
> Stefan
>
>
> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://mail.gnu.org/mailman/listinfo/emacs-devel
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-17 22:39   ` Freddy Chik
@ 2002-07-18 21:13     ` Richard Stallman
  2002-07-19  2:45       ` Freddy Chik
  0 siblings, 1 reply; 7+ messages in thread
From: Richard Stallman @ 2002-07-18 21:13 UTC (permalink / raw)
  Cc: monnier+gnu/emacs, emacs-devel

    it sounds like text properties are things like fonts?

We store many kinds of things on text properties, including font
specifications.

    I jumped into places such as lisp.h, buffer.h, textprop.c, hoping to find a
    definition for this thing, but all I got is a Lisp_Object plist (even for
    functions that adds to the property list or removes from it), where is this
    mysterious text property structure described?

The interval data structure is not precisely defined anywhere, but don't
worry about it--you don't need to do anything at that low a level.
You can do all this work at one level up, where the text property list
is just a standard plist (property value property value...).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-18 21:13     ` Richard Stallman
@ 2002-07-19  2:45       ` Freddy Chik
  2002-07-19 20:56         ` Richard Stallman
  0 siblings, 1 reply; 7+ messages in thread
From: Freddy Chik @ 2002-07-19  2:45 UTC (permalink / raw)
  Cc: emacs-devel

I am trying to put in another data structure to make line searching faster,
which must be maintained during every insert/delete operation.  It looks
like interval tree is not something I should touch.  It looks like all those
functions (e.g. scan_newline) in search.c and insert functions in insdel.c
are things I should take a deeper look at, does that sound right?

Yu Fai Freddy Chik
4A Computer Science / Combinatorics and Optimization
University of Waterloo
Waterloo, ON
------------------------------------------------------------
-- Computer Science is the study of algorithmic processes --
-- that limit the amount of time one has to perform daily --
----- activities such as sleeping, eating, exercising, -----
---- bathing, dating and improving ones social skills. -----
------------------------------------------------------------
----- Original Message -----
From: "Richard Stallman" <rms@gnu.org>
To: <yffchik_ura@hotmail.com>
Cc: <monnier+gnu/emacs@rum.cs.yale.edu>; <emacs-devel@gnu.org>
Sent: Thursday, July 18, 2002 5:13 PM
Subject: Re: Interval tree


>     it sounds like text properties are things like fonts?
>
> We store many kinds of things on text properties, including font
> specifications.
>
>     I jumped into places such as lisp.h, buffer.h, textprop.c, hoping to
find a
>     definition for this thing, but all I got is a Lisp_Object plist (even
for
>     functions that adds to the property list or removes from it), where is
this
>     mysterious text property structure described?
>
> The interval data structure is not precisely defined anywhere, but don't
> worry about it--you don't need to do anything at that low a level.
> You can do all this work at one level up, where the text property list
> is just a standard plist (property value property value...).
>
> _______________________________________________
> Emacs-devel mailing list
> Emacs-devel@gnu.org
> http://mail.gnu.org/mailman/listinfo/emacs-devel
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-19  2:45       ` Freddy Chik
@ 2002-07-19 20:56         ` Richard Stallman
  2002-08-01  4:54           ` Thien-Thi Nguyen
  0 siblings, 1 reply; 7+ messages in thread
From: Richard Stallman @ 2002-07-19 20:56 UTC (permalink / raw)
  Cc: emacs-devel

    I am trying to put in another data structure to make line searching faster,
    which must be maintained during every insert/delete operation.

This sounds like a lot of complexity.  Is it worth while?
I doubt we would want to install it.  Searching is pretty fast nowadays.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Interval tree
  2002-07-19 20:56         ` Richard Stallman
@ 2002-08-01  4:54           ` Thien-Thi Nguyen
  0 siblings, 0 replies; 7+ messages in thread
From: Thien-Thi Nguyen @ 2002-08-01  4:54 UTC (permalink / raw)
  Cc: rms, emacs-devel

Richard Stallman <rms@gnu.org> writes:

       I am trying to put in another data structure to make line searching faster,
       which must be maintained during every insert/delete operation.

   This sounds like a lot of complexity.  Is it worth while?
   I doubt we would want to install it.  Searching is pretty fast nowadays.

what in the line is being searched?

thi

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2002-08-01  4:54 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-07-17  5:51 Interval tree Freddy Chik
2002-07-17 13:13 ` Stefan Monnier
2002-07-17 22:39   ` Freddy Chik
2002-07-18 21:13     ` Richard Stallman
2002-07-19  2:45       ` Freddy Chik
2002-07-19 20:56         ` Richard Stallman
2002-08-01  4:54           ` Thien-Thi Nguyen

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).