annotate src/intervals.h @ 45079:bf76420e3297

(occur-mode-map): Bind "q" to `delete-window'. (occur-1): If one of the buffers we're searching is the *Occur* buffer itself, handle it by creating a temporary buffer. If any of the buffers being searched are killed, note that in the search result message. Also, set local variables before we possibly kill the buffer.
author Colin Walters <walters@gnu.org>
date Thu, 02 May 2002 21:22:47 +0000
parents c246c4abd79e
children 322be4c4e11d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
1 /* Definitions and global variables for intervals.
43895
c246c4abd79e (text_property_stickiness): New declaration.
Miles Bader <miles@gnu.org>
parents: 43517
diff changeset
2 Copyright (C) 1993, 1994, 2000, 2002 Free Software Foundation, Inc.
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
3
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
4 This file is part of GNU Emacs.
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
5
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
12244
ac7375e60931 Update GPL to version 2.
Karl Heuer <kwzh@gnu.org>
parents: 11132
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9 any later version.
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 12244
diff changeset
19 Boston, MA 02111-1307, USA. */
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
21 #include "dispextern.h"
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
22
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
23 #define NULL_INTERVAL ((INTERVAL)0)
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
24 #define INTERVAL_DEFAULT NULL_INTERVAL
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
25
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
26 /* These are macros for dealing with the interval tree. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
27
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
28 /* Size of the structure used to represent an interval */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
29 #define INTERVAL_SIZE (sizeof (struct interval))
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
31 /* Size of a pointer to an interval structure */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
32 #define INTERVAL_PTR_SIZE (sizeof (struct interval *))
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
34 /* True if an interval pointer is null, or is a Lisp_Buffer or
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
35 Lisp_String pointer (meaning it points to the owner of this
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
36 interval tree). */
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 17462
diff changeset
37 #ifdef NO_UNION_TYPE
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
38 #define INT_LISPLIKE(i) (BUFFERP ((Lisp_Object)(i)) \
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
39 || STRINGP ((Lisp_Object)(i)))
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 17462
diff changeset
40 #else
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
41 #define INT_LISPLIKE(i) (BUFFERP ((Lisp_Object){(EMACS_INT)(i)}) \
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
42 || STRINGP ((Lisp_Object){(EMACS_INT)(i)}))
18613
614b916ff5bf Fix bugs with inappropriate mixing of Lisp_Object with int.
Richard M. Stallman <rms@gnu.org>
parents: 17462
diff changeset
43 #endif
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
44 #define NULL_INTERVAL_P(i) (CHECK(!INT_LISPLIKE(i),"non-interval"),(i) == NULL_INTERVAL)
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
45 /* old #define NULL_INTERVAL_P(i) ((i) == NULL_INTERVAL || INT_LISPLIKE (i)) */
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
46
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
47 /* True if this interval has no right child. */
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
48 #define NULL_RIGHT_CHILD(i) ((i)->right == NULL_INTERVAL)
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
49
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
50 /* True if this interval has no left child. */
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
51 #define NULL_LEFT_CHILD(i) ((i)->left == NULL_INTERVAL)
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
52
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
53 /* True if this interval has no parent. */
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
54 #define NULL_PARENT(i) ((i)->up_obj || (i)->up.interval == 0)
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
55
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
56 /* True if this interval is the left child of some other interval. */
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
57 #define AM_LEFT_CHILD(i) (! NULL_PARENT (i) \
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
58 && INTERVAL_PARENT (i)->left == (i))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
59
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
60 /* True if this interval is the right child of some other interval. */
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
61 #define AM_RIGHT_CHILD(i) (! NULL_PARENT (i) \
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
62 && INTERVAL_PARENT (i)->right == (i))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
63
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
64 /* True if this interval has no children. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
65 #define LEAF_INTERVAL_P(i) ((i)->left == NULL_INTERVAL \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66 && (i)->right == NULL_INTERVAL)
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
67
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
68 /* True if this interval has no parent and is therefore the root. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
69 #define ROOT_INTERVAL_P(i) (NULL_PARENT (i))
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
70
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
71 /* True if this interval is the only interval in the interval tree. */
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
72 #define ONLY_INTERVAL_P(i) (ROOT_INTERVAL_P ((i)) && LEAF_INTERVAL_P ((i)))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
73
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
74 /* True if this interval has both left and right children. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
75 #define BOTH_KIDS_P(i) ((i)->left != NULL_INTERVAL \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
76 && (i)->right != NULL_INTERVAL)
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
77
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
78 /* The total size of all text represented by this interval and all its
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
79 children in the tree. This is zero if the interval is null. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
80 #define TOTAL_LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (i)->total_length)
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
81
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
82 /* The size of text represented by this interval alone. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
83 #define LENGTH(i) ((i) == NULL_INTERVAL ? 0 : (TOTAL_LENGTH ((i)) \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
84 - TOTAL_LENGTH ((i)->right) \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
85 - TOTAL_LENGTH ((i)->left)))
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
86
10112
3fc246695491 (INTERVAL_LAST_POS): Don't subtract 1 here.
Richard M. Stallman <rms@gnu.org>
parents: 9142
diff changeset
87 /* The position of the character just past the end of I. Note that
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
88 the position cache i->position must be valid for this to work. */
10112
3fc246695491 (INTERVAL_LAST_POS): Don't subtract 1 here.
Richard M. Stallman <rms@gnu.org>
parents: 9142
diff changeset
89 #define INTERVAL_LAST_POS(i) ((i)->position + LENGTH ((i)))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
90
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
91 /* The total size of the left subtree of this interval. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
92 #define LEFT_TOTAL_LENGTH(i) ((i)->left ? (i)->left->total_length : 0)
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
93
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
94 /* The total size of the right subtree of this interval. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
95 #define RIGHT_TOTAL_LENGTH(i) ((i)->right ? (i)->right->total_length : 0)
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
96
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
97
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
98 /* These macros are for dealing with the interval properties. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
99
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
100 /* True if this is a default interval, which is the same as being null
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
101 or having no properties. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
102 #define DEFAULT_INTERVAL_P(i) (NULL_INTERVAL_P (i) || EQ ((i)->plist, Qnil))
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
103
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
104 /* Test what type of parent we have. Three possibilities: another
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
105 interval, a buffer or string object, or NULL_INTERVAL. */
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
106 #define INTERVAL_HAS_PARENT(i) ((i)->up_obj == 0 && (i)->up.interval != 0)
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
107 #define INTERVAL_HAS_OBJECT(i) ((i)->up_obj)
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
108
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
109 /* Set/get parent of an interval.
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
110
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
111 The choice of macros is dependent on the type needed. Don't add
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
112 casts to get around this, it will break some development work in
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
113 progress. */
28509
022a7fd54bfe * intervals.h (SET_INTERVAL_PARENT): Use INT_LISPLIKE to test for a pointer
Ken Raeburn <raeburn@raeburn.org>
parents: 28406
diff changeset
114 #define SET_INTERVAL_PARENT(i,p) (eassert (!INT_LISPLIKE (p)),(i)->up_obj = 0, (i)->up.interval = (p))
022a7fd54bfe * intervals.h (SET_INTERVAL_PARENT): Use INT_LISPLIKE to test for a pointer
Ken Raeburn <raeburn@raeburn.org>
parents: 28406
diff changeset
115 #define SET_INTERVAL_OBJECT(i,o) (eassert (!INTEGERP (o)), eassert (BUFFERP (o) || STRINGP (o)),(i)->up_obj = 1, (i)->up.obj = (o))
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
116 #define INTERVAL_PARENT(i) (eassert((i) != 0 && (i)->up_obj == 0),(i)->up.interval)
28509
022a7fd54bfe * intervals.h (SET_INTERVAL_PARENT): Use INT_LISPLIKE to test for a pointer
Ken Raeburn <raeburn@raeburn.org>
parents: 28406
diff changeset
117 #define GET_INTERVAL_OBJECT(d,s) (eassert((s)->up_obj == 1), (d) = (s)->up.obj)
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
118
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
119 /* Make the parent of D be whatever the parent of S is, regardless of
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
120 type. This is used when balancing an interval tree. */
28406
451721e784a8 Stop assuming interval pointers and lisp objects can be distinguished by
Ken Raeburn <raeburn@raeburn.org>
parents: 28269
diff changeset
121 #define COPY_INTERVAL_PARENT(d,s) ((d)->up = (s)->up, (d)->up_obj = (s)->up_obj)
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
122
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
123 /* Get the parent interval, if any, otherwise a null pointer. Useful
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
124 for walking up to the root in a "for" loop; use this to get the
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
125 "next" value, and test the result to see if it's NULL_INTERVAL. */
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
126 #define INTERVAL_PARENT_OR_NULL(i) (INTERVAL_HAS_PARENT (i) ? INTERVAL_PARENT (i) : 0)
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
127
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
128 /* Reset this interval to its vanilla, or no-property state. */
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
129 #define RESET_INTERVAL(i) \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
130 { \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
131 (i)->total_length = (i)->position = 0; \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
132 (i)->left = (i)->right = NULL_INTERVAL; \
28269
fd13be8ae190 Changes towards better type safety regarding intervals, primarily
Ken Raeburn <raeburn@raeburn.org>
parents: 26861
diff changeset
133 SET_INTERVAL_PARENT (i, NULL_INTERVAL); \
5414
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
134 (i)->write_protect = 0; \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
135 (i)->visible = 0; \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
136 (i)->front_sticky = (i)->rear_sticky = 0; \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
137 (i)->plist = Qnil; \
39f0a30bb163 (NULL_RIGHT_CHILD, NULL_LEFT_CHILD):
Richard M. Stallman <rms@gnu.org>
parents: 4382
diff changeset
138 }
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
139
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
140 /* Copy the cached property values of interval FROM to interval TO. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
141 #define COPY_INTERVAL_CACHE(from,to) \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
142 { \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
143 (to)->write_protect = (from)->write_protect; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
144 (to)->visible = (from)->visible; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
145 (to)->front_sticky = (from)->front_sticky; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
146 (to)->rear_sticky = (from)->rear_sticky; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
147 }
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
148
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
149 /* Copy only the set bits of FROM's cache. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
150 #define MERGE_INTERVAL_CACHE(from,to) \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
151 { \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
152 if ((from)->write_protect) (to)->write_protect = 1; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
153 if ((from)->visible) (to)->visible = 1; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
154 if ((from)->front_sticky) (to)->front_sticky = 1; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
155 if ((from)->rear_sticky) (to)->rear_sticky = 1; \
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
156 }
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
157
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
158 /* Macro determining whether the properties of an interval being
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
159 inserted should be merged with the properties of the text where
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
160 they are being inserted. */
4382
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
161 #define MERGE_INSERTIONS(i) 1
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
162
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
163 /* Macro determining if an invisible interval should be displayed
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
164 as a special glyph, or not at all. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
165 #define DISPLAY_INVISIBLE_GLYPH(i) 0
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
166
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
167 /* Is this interval visible? Replace later with cache access */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
168 #define INTERVAL_VISIBLE_P(i) \
3534
2323f2160053 (INTERVAL_VISIBLE_P): Use textget.
Richard M. Stallman <rms@gnu.org>
parents: 2961
diff changeset
169 (! NULL_INTERVAL_P (i) && NILP (textget ((i)->plist, Qinvisible)))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
170
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
171 /* Is this interval writable? Replace later with cache access */
3579
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
172 #define INTERVAL_WRITABLE_P(i) \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
173 (! NULL_INTERVAL_P (i) \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
174 && (NILP (textget ((i)->plist, Qread_only)) \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
175 || ((CONSP (Vinhibit_read_only) \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
176 ? !NILP (Fmemq (textget ((i)->plist, Qread_only), \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
177 Vinhibit_read_only)) \
f6eeb536beda (INTERVAL_WRITABLE_P): Fix backwards tests.
Richard M. Stallman <rms@gnu.org>
parents: 3534
diff changeset
178 : !NILP (Vinhibit_read_only))))) \
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
179
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
180 /* Macros to tell whether insertions before or after this interval
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
181 should stick to it. */
4382
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
182 /* Replace later with cache access */
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
183 /*#define FRONT_STICKY_P(i) ((i)->front_sticky != 0)
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
184 #define END_STICKY_P(i) ((i)->rear_sticky != 0)*/
26861
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
185 /* As we now have Vtext_property_default_nonsticky, these macros are
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
186 unreliable now. Currently, they are never used. */
4382
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
187 #define FRONT_STICKY_P(i) \
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
188 (! NULL_INTERVAL_P (i) && ! NILP (textget ((i)->plist, Qfront_sticky)))
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
189 #define END_NONSTICKY_P(i) \
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
190 (! NULL_INTERVAL_P (i) && ! NILP (textget ((i)->plist, Qrear_nonsticky)))
16739
41dc4644dec9 (FRONT_NONSTICKY_P): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
191 #define FRONT_NONSTICKY_P(i) \
41dc4644dec9 (FRONT_NONSTICKY_P): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
192 (! NULL_INTERVAL_P (i) && ! EQ (Qt, textget ((i)->plist, Qfront_sticky)))
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
193
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
194
10963
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
195 /* If PROP is the `invisible' property of a character,
39939
758ba590ccfe (TEXT_PROP_MEANS_INVISIBLE_WITH_ELLIPSIS)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39926
diff changeset
196 this is 1 if the character should be treated as invisible,
758ba590ccfe (TEXT_PROP_MEANS_INVISIBLE_WITH_ELLIPSIS)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39926
diff changeset
197 and 2 if it is invisible but with an ellipsis. */
10963
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
198
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
199 #define TEXT_PROP_MEANS_INVISIBLE(prop) \
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
200 (EQ (current_buffer->invisibility_spec, Qt) \
39855
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
201 ? !NILP (prop) \
10963
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
202 : invisible_p (prop, current_buffer->invisibility_spec))
7fd3688d36a3 (TEXT_PROP_MEANS_INVISIBLE): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 10926
diff changeset
203
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
204 /* Declared in alloc.c */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
205
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
206 extern INTERVAL make_interval P_ ((void));
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
207
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
208 /* Declared in intervals.c */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
209
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
210 extern INTERVAL create_root_interval P_ ((Lisp_Object));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
211 extern void copy_properties P_ ((INTERVAL, INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
212 extern int intervals_equal P_ ((INTERVAL, INTERVAL));
39855
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
213 extern void traverse_intervals P_ ((INTERVAL, int,
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
214 void (*) (INTERVAL, Lisp_Object),
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
215 Lisp_Object));
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
216 extern void traverse_intervals_noorder P_ ((INTERVAL,
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
217 void (*) (INTERVAL, Lisp_Object),
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
218 Lisp_Object));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
219 extern INTERVAL split_interval_right P_ ((INTERVAL, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
220 extern INTERVAL split_interval_left P_ ((INTERVAL, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
221 extern INTERVAL find_interval P_ ((INTERVAL, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
222 extern INTERVAL next_interval P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
223 extern INTERVAL previous_interval P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
224 extern INTERVAL merge_interval_left P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
225 extern INTERVAL merge_interval_right P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
226 extern void delete_interval P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
227 extern INLINE void offset_intervals P_ ((struct buffer *, int, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
228 extern void graft_intervals_into_buffer P_ ((INTERVAL, int, int,
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
229 struct buffer *, int));
20550
75e0cdf05001 (set_point, temp_set_point): Swap args in decl.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
230 extern void set_point P_ ((struct buffer *, int));
75e0cdf05001 (set_point, temp_set_point): Swap args in decl.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
231 extern INLINE void temp_set_point P_ ((struct buffer *, int));
75e0cdf05001 (set_point, temp_set_point): Swap args in decl.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
232 extern void set_point_both P_ ((struct buffer *, int, int));
75e0cdf05001 (set_point, temp_set_point): Swap args in decl.
Richard M. Stallman <rms@gnu.org>
parents: 20318
diff changeset
233 extern INLINE void temp_set_point_both P_ ((struct buffer *, int, int));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
234 extern void verify_interval_modification P_ ((struct buffer *, int, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
235 extern INTERVAL balance_intervals P_ ((INTERVAL));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
236 extern INLINE void copy_intervals_to_string P_ ((Lisp_Object, struct buffer *,
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
237 int, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
238 extern INTERVAL copy_intervals P_ ((INTERVAL, int, int));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
239 extern Lisp_Object textget P_ ((Lisp_Object, Lisp_Object));
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
240 extern void move_if_not_intangible P_ ((int));
26861
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
241 extern int get_property_and_range P_ ((int, Lisp_Object, Lisp_Object *,
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
242 int *, int *, Lisp_Object));
35257
187c0b3da663 (enum map_property): Removed.
Gerd Moellmann <gerd@gnu.org>
parents: 32848
diff changeset
243 extern Lisp_Object get_local_map P_ ((int, struct buffer *, Lisp_Object));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
244 extern INTERVAL update_interval P_ ((INTERVAL, int));
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
245 extern void set_intervals_multibyte P_ ((int));
25023
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
246 extern INTERVAL validate_interval_range P_ ((Lisp_Object, Lisp_Object *,
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
247 Lisp_Object *, int));
20318
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
248
1507c5324f4c Add prototypes and more function declarations.
Andreas Schwab <schwab@suse.de>
parents: 18613
diff changeset
249 /* Defined in xdisp.c */
39855
cfc5c411cd06 (TEXT_PROP_MEANS_INVISIBLE_NOELLIPSIS): New macro.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 35257
diff changeset
250 extern int invisible_p P_ ((Lisp_Object, Lisp_Object));
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
252 /* Declared in textprop.c */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
253
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
254 /* Types of hooks. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
255 extern Lisp_Object Qmouse_left;
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
256 extern Lisp_Object Qmouse_entered;
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
257 extern Lisp_Object Qpoint_left;
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
258 extern Lisp_Object Qpoint_entered;
2062
79a2651d9de3 Declare Qcategory, Qlocal_map. Declare textget, get_local_map.
Richard M. Stallman <rms@gnu.org>
parents: 1970
diff changeset
259 extern Lisp_Object Qmodification_hooks;
79a2651d9de3 Declare Qcategory, Qlocal_map. Declare textget, get_local_map.
Richard M. Stallman <rms@gnu.org>
parents: 1970
diff changeset
260 extern Lisp_Object Qcategory;
79a2651d9de3 Declare Qcategory, Qlocal_map. Declare textget, get_local_map.
Richard M. Stallman <rms@gnu.org>
parents: 1970
diff changeset
261 extern Lisp_Object Qlocal_map;
29279
618b9ba6a8c2 (map_property): New enum.
Dave Love <fx@gnu.org>
parents: 28509
diff changeset
262 extern Lisp_Object Qkeymap;
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
263
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
264 /* Visual properties text (including strings) may have. */
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
265 extern Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
6754
09278b56193e (Qintangible): New symbol, replacing Qhidden.
Karl Heuer <kwzh@gnu.org>
parents: 5414
diff changeset
266 extern Lisp_Object Qinvisible, Qintangible, Qread_only;
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
267
4241
64cfb6d569e4 (Vinhibit_point_motion_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4211
diff changeset
268 extern Lisp_Object Vinhibit_point_motion_hooks;
11132
e4770cb46861 Vdefault_text_properties: name changed from Vdefault_properties.
Boris Goldowsky <boris@gnu.org>
parents: 10963
diff changeset
269 extern Lisp_Object Vdefault_text_properties;
26861
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
270 extern Lisp_Object Vtext_property_default_nonsticky;
4241
64cfb6d569e4 (Vinhibit_point_motion_hooks): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 4211
diff changeset
271
4382
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
272 /* Sticky properties */
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
273 extern Lisp_Object Qfront_sticky, Qrear_nonsticky;
c11d710e0403 (MERGE_INSERTIONS): Define as 1.
Richard M. Stallman <rms@gnu.org>
parents: 4241
diff changeset
274
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
275 EXFUN (Fget_char_property, 3);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
276 EXFUN (Fget_text_property, 3);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
277 EXFUN (Ftext_properties_at, 2);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
278 EXFUN (Fnext_property_change, 3);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
279 EXFUN (Fprevious_property_change, 3);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
280 EXFUN (Fadd_text_properties, 4);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
281 EXFUN (Fset_text_properties, 4);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
282 EXFUN (Fremove_text_properties, 4);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
283 EXFUN (Ftext_property_any, 5);
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
284 EXFUN (Ftext_property_not_all, 5);
30679
4b6b1069c0ff (Fprevious_single_char_property_change): Declare.
Ken Raeburn <raeburn@raeburn.org>
parents: 29279
diff changeset
285 EXFUN (Fprevious_single_char_property_change, 4);
21515
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
286 extern Lisp_Object copy_text_properties P_ ((Lisp_Object, Lisp_Object,
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
287 Lisp_Object, Lisp_Object,
fb4c986db0e2 Add more prototypes.
Andreas Schwab <schwab@suse.de>
parents: 20550
diff changeset
288 Lisp_Object, Lisp_Object));
40924
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
289 extern Lisp_Object set_text_properties P_ ((Lisp_Object, Lisp_Object,
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
290 Lisp_Object, Lisp_Object,
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
291 Lisp_Object));
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
292 extern void set_text_properties_1 P_ ((Lisp_Object, Lisp_Object,
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
293 Lisp_Object, Lisp_Object, INTERVAL));
42cb41c42e7b Declare set_text_properties and set_text_properties_1.
Richard M. Stallman <rms@gnu.org>
parents: 39939
diff changeset
294
25023
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
295 Lisp_Object text_property_list P_ ((Lisp_Object, Lisp_Object, Lisp_Object,
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
296 Lisp_Object));
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
297 int add_text_properties_from_list P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
6e3de2f65704 Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 21515
diff changeset
298 void extend_property_ranges P_ ((Lisp_Object, Lisp_Object, Lisp_Object));
32848
6957ecbc11fe (get_char_property_and_overlay): Add declaration.
Miles Bader <miles@gnu.org>
parents: 30679
diff changeset
299 Lisp_Object get_char_property_and_overlay P_ ((Lisp_Object, Lisp_Object,
6957ecbc11fe (get_char_property_and_overlay): Add declaration.
Miles Bader <miles@gnu.org>
parents: 30679
diff changeset
300 Lisp_Object, Lisp_Object*));
43895
c246c4abd79e (text_property_stickiness): New declaration.
Miles Bader <miles@gnu.org>
parents: 43517
diff changeset
301 extern int text_property_stickiness (Lisp_Object prop, Lisp_Object pos);
1164
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
302
adfaeccad01d entered into RCS
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
303 extern void syms_of_textprop ();
26861
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
304
7d3ca36657cb Include composite.h.
Kenichi Handa <handa@m17n.org>
parents: 26404
diff changeset
305 #include "composite.h"