HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Convert (most) functions in src to standard C.
[bpt/emacs.git]
/
src
/
textprop.c
diff --git
a/src/textprop.c
b/src/textprop.c
index
711ee57
..
a3294a0
100644
(file)
--- a/
src/textprop.c
+++ b/
src/textprop.c
@@
-1,13
+1,13
@@
/* Interface code for dealing with text properties.
Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
/* Interface code for dealing with text properties.
Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ 2004, 2005, 2006, 2007
, 2008, 2009, 2010
Free Software Foundation, Inc.
This file is part of GNU Emacs.
This file is part of GNU Emacs.
-GNU Emacs is free software
;
you can redistribute it and/or modify
+GNU Emacs is free software
:
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
-the Free Software Foundation
; either version 3, or (at your option)
-any later version.
+the Free Software Foundation
, either version 3 of the License, or
+
(at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-15,11
+15,10
@@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-Boston, MA 02110-1301, USA. */
+along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <config.h>
#include <config.h>
+#include <setjmp.h>
#include "lisp.h"
#include "intervals.h"
#include "buffer.h"
#include "lisp.h"
#include "intervals.h"
#include "buffer.h"
@@
-59,6
+58,7
@@
Lisp_Object Qlocal_map;
/* Visual properties text (including strings) may have. */
Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
Lisp_Object Qinvisible, Qread_only, Qintangible, Qmouse_face;
/* Visual properties text (including strings) may have. */
Lisp_Object Qforeground, Qbackground, Qfont, Qunderline, Qstipple;
Lisp_Object Qinvisible, Qread_only, Qintangible, Qmouse_face;
+Lisp_Object Qminibuffer_prompt;
/* Sticky properties */
Lisp_Object Qfront_sticky, Qrear_nonsticky;
/* Sticky properties */
Lisp_Object Qfront_sticky, Qrear_nonsticky;
@@
-78,15
+78,14
@@
Lisp_Object Vtext_property_default_nonsticky;
Lisp_Object interval_insert_behind_hooks;
Lisp_Object interval_insert_in_front_hooks;
Lisp_Object interval_insert_behind_hooks;
Lisp_Object interval_insert_in_front_hooks;
-static void text_read_only
P_ ((Lisp_Object)
) NO_RETURN;
+static void text_read_only
(Lisp_Object
) NO_RETURN;
/* Signal a `text-read-only' error. This function makes it easier
to capture that error in GDB by putting a breakpoint on it. */
static void
/* Signal a `text-read-only' error. This function makes it easier
to capture that error in GDB by putting a breakpoint on it. */
static void
-text_read_only (propval)
- Lisp_Object propval;
+text_read_only (Lisp_Object propval)
{
if (STRINGP (propval))
xsignal1 (Qtext_read_only, propval);
{
if (STRINGP (propval))
xsignal1 (Qtext_read_only, propval);
@@
-123,9
+122,7
@@
text_read_only (propval)
#define hard 1
INTERVAL
#define hard 1
INTERVAL
-validate_interval_range (object, begin, end, force)
- Lisp_Object object, *begin, *end;
- int force;
+validate_interval_range (Lisp_Object object, Lisp_Object *begin, Lisp_Object *end, int force)
{
register INTERVAL i;
int searchpos;
{
register INTERVAL i;
int searchpos;
@@
-191,8
+188,7
@@
validate_interval_range (object, begin, end, force)
is even numbered and thus suitable as a plist. */
static Lisp_Object
is even numbered and thus suitable as a plist. */
static Lisp_Object
-validate_plist (list)
- Lisp_Object list;
+validate_plist (Lisp_Object list)
{
if (NILP (list))
return Qnil;
{
if (NILP (list))
return Qnil;
@@
-201,9
+197,9
@@
validate_plist (list)
{
register int i;
register Lisp_Object tail;
{
register int i;
register Lisp_Object tail;
- for (i = 0, tail = list;
!NIL
P (tail); i++)
+ for (i = 0, tail = list;
CONS
P (tail); i++)
{
{
- tail =
Fcdr
(tail);
+ tail =
XCDR
(tail);
QUIT;
}
if (i & 1)
QUIT;
}
if (i & 1)
@@
-218,26
+214,24
@@
validate_plist (list)
with the same values, of list PLIST. */
static int
with the same values, of list PLIST. */
static int
-interval_has_all_properties (plist, i)
- Lisp_Object plist;
- INTERVAL i;
+interval_has_all_properties (Lisp_Object plist, INTERVAL i)
{
register Lisp_Object tail1, tail2, sym1;
register int found;
/* Go through each element of PLIST. */
{
register Lisp_Object tail1, tail2, sym1;
register int found;
/* Go through each element of PLIST. */
- for (tail1 = plist;
! NILP (tail1); tail1 = Fcdr (Fcdr
(tail1)))
+ for (tail1 = plist;
CONSP (tail1); tail1 = Fcdr (XCDR
(tail1)))
{
{
- sym1 =
Fcar
(tail1);
+ sym1 =
XCAR
(tail1);
found = 0;
/* Go through I's plist, looking for sym1 */
found = 0;
/* Go through I's plist, looking for sym1 */
- for (tail2 = i->plist;
! NILP (tail2); tail2 = Fcdr (Fcdr
(tail2)))
- if (EQ (sym1,
Fcar
(tail2)))
+ for (tail2 = i->plist;
CONSP (tail2); tail2 = Fcdr (XCDR
(tail2)))
+ if (EQ (sym1,
XCAR
(tail2)))
{
/* Found the same property on both lists. If the
values are unequal, return zero. */
{
/* Found the same property on both lists. If the
values are unequal, return zero. */
- if (! EQ (Fcar (
Fcdr (tail1)), Fcar (Fcdr
(tail2))))
+ if (! EQ (Fcar (
XCDR (tail1)), Fcar (XCDR
(tail2))))
return 0;
/* Property has same value on both lists; go to next one. */
return 0;
/* Property has same value on both lists; go to next one. */
@@
-256,20
+250,18
@@
interval_has_all_properties (plist, i)
properties of PLIST, regardless of their values. */
static INLINE int
properties of PLIST, regardless of their values. */
static INLINE int
-interval_has_some_properties (plist, i)
- Lisp_Object plist;
- INTERVAL i;
+interval_has_some_properties (Lisp_Object plist, INTERVAL i)
{
register Lisp_Object tail1, tail2, sym;
/* Go through each element of PLIST. */
{
register Lisp_Object tail1, tail2, sym;
/* Go through each element of PLIST. */
- for (tail1 = plist;
! NILP (tail1); tail1 = Fcdr (Fcdr
(tail1)))
+ for (tail1 = plist;
CONSP (tail1); tail1 = Fcdr (XCDR
(tail1)))
{
{
- sym =
Fcar
(tail1);
+ sym =
XCAR
(tail1);
/* Go through i's plist, looking for tail1 */
/* Go through i's plist, looking for tail1 */
- for (tail2 = i->plist;
! NILP (tail2); tail2 = Fcdr (Fcdr
(tail2)))
- if (EQ (sym,
Fcar
(tail2)))
+ for (tail2 = i->plist;
CONSP (tail2); tail2 = Fcdr (XCDR
(tail2)))
+ if (EQ (sym,
XCAR
(tail2)))
return 1;
}
return 1;
}
@@
-280,19
+272,17
@@
interval_has_some_properties (plist, i)
property names in LIST, regardless of their values. */
static INLINE int
property names in LIST, regardless of their values. */
static INLINE int
-interval_has_some_properties_list (list, i)
- Lisp_Object list;
- INTERVAL i;
+interval_has_some_properties_list (Lisp_Object list, INTERVAL i)
{
register Lisp_Object tail1, tail2, sym;
/* Go through each element of LIST. */
{
register Lisp_Object tail1, tail2, sym;
/* Go through each element of LIST. */
- for (tail1 = list;
! NIL
P (tail1); tail1 = XCDR (tail1))
+ for (tail1 = list;
CONS
P (tail1); tail1 = XCDR (tail1))
{
sym = Fcar (tail1);
/* Go through i's plist, looking for tail1 */
{
sym = Fcar (tail1);
/* Go through i's plist, looking for tail1 */
- for (tail2 = i->plist;
! NIL
P (tail2); tail2 = XCDR (XCDR (tail2)))
+ for (tail2 = i->plist;
CONS
P (tail2); tail2 = XCDR (XCDR (tail2)))
if (EQ (sym, XCAR (tail2)))
return 1;
}
if (EQ (sym, XCAR (tail2)))
return 1;
}
@@
-305,8
+295,7
@@
interval_has_some_properties_list (list, i)
/* Return the value of PROP in property-list PLIST, or Qunbound if it
has none. */
static Lisp_Object
/* Return the value of PROP in property-list PLIST, or Qunbound if it
has none. */
static Lisp_Object
-property_value (plist, prop)
- Lisp_Object plist, prop;
+property_value (Lisp_Object plist, Lisp_Object prop)
{
Lisp_Object value;
{
Lisp_Object value;
@@
-324,9
+313,7
@@
property_value (plist, prop)
OBJECT is the string or buffer that INTERVAL belongs to. */
static void
OBJECT is the string or buffer that INTERVAL belongs to. */
static void
-set_properties (properties, interval, object)
- Lisp_Object properties, object;
- INTERVAL interval;
+set_properties (Lisp_Object properties, INTERVAL interval, Lisp_Object object)
{
Lisp_Object sym, value;
{
Lisp_Object sym, value;
@@
-372,10
+359,7
@@
set_properties (properties, interval, object)
are actually added to I's plist) */
static int
are actually added to I's plist) */
static int
-add_properties (plist, i, object)
- Lisp_Object plist;
- INTERVAL i;
- Lisp_Object object;
+add_properties (Lisp_Object plist, INTERVAL i, Lisp_Object object)
{
Lisp_Object tail1, tail2, sym1, val1;
register int changed = 0;
{
Lisp_Object tail1, tail2, sym1, val1;
register int changed = 0;
@@
-391,21
+375,21
@@
add_properties (plist, i, object)
GCPRO3 (tail1, sym1, val1);
/* Go through each element of PLIST. */
GCPRO3 (tail1, sym1, val1);
/* Go through each element of PLIST. */
- for (tail1 = plist;
! NILP (tail1); tail1 = Fcdr (Fcdr
(tail1)))
+ for (tail1 = plist;
CONSP (tail1); tail1 = Fcdr (XCDR
(tail1)))
{
{
- sym1 =
Fcar
(tail1);
- val1 = Fcar (
Fcdr
(tail1));
+ sym1 =
XCAR
(tail1);
+ val1 = Fcar (
XCDR
(tail1));
found = 0;
/* Go through I's plist, looking for sym1 */
found = 0;
/* Go through I's plist, looking for sym1 */
- for (tail2 = i->plist;
! NILP (tail2); tail2 = Fcdr (Fcdr
(tail2)))
- if (EQ (sym1,
Fcar
(tail2)))
+ for (tail2 = i->plist;
CONSP (tail2); tail2 = Fcdr (XCDR
(tail2)))
+ if (EQ (sym1,
XCAR
(tail2)))
{
/* No need to gcpro, because tail2 protects this
and it must be a cons cell (we get an error otherwise). */
register Lisp_Object this_cdr;
{
/* No need to gcpro, because tail2 protects this
and it must be a cons cell (we get an error otherwise). */
register Lisp_Object this_cdr;
- this_cdr =
Fcdr
(tail2);
+ this_cdr =
XCDR
(tail2);
/* Found the property. Now check its value. */
found = 1;
/* Found the property. Now check its value. */
found = 1;
@@
-451,10
+435,7
@@
add_properties (plist, i, object)
OBJECT is the string or buffer containing I. */
static int
OBJECT is the string or buffer containing I. */
static int
-remove_properties (plist, list, i, object)
- Lisp_Object plist, list;
- INTERVAL i;
- Lisp_Object object;
+remove_properties (Lisp_Object plist, Lisp_Object list, INTERVAL i, Lisp_Object object)
{
register Lisp_Object tail1, tail2, sym, current_plist;
register int changed = 0;
{
register Lisp_Object tail1, tail2, sym, current_plist;
register int changed = 0;
@@
-535,9
+516,7
@@
erase_properties (i)
POSITION is BEG-based. */
INTERVAL
POSITION is BEG-based. */
INTERVAL
-interval_of (position, object)
- int position;
- Lisp_Object object;
+interval_of (int position, Lisp_Object object)
{
register INTERVAL i;
int beg, end;
{
register INTERVAL i;
int beg, end;
@@
-623,10
+602,7
@@
If POSITION is at the end of OBJECT, the value is nil. */)
window-specific overlays are considered only if they are associated
with OBJECT. */
Lisp_Object
window-specific overlays are considered only if they are associated
with OBJECT. */
Lisp_Object
-get_char_property_and_overlay (position, prop, object, overlay)
- Lisp_Object position, object;
- register Lisp_Object prop;
- Lisp_Object *overlay;
+get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop, Lisp_Object object, Lisp_Object *overlay)
{
struct window *w = 0;
{
struct window *w = 0;
@@
-646,6
+622,10
@@
get_char_property_and_overlay (position, prop, object, overlay)
Lisp_Object *overlay_vec;
struct buffer *obuf = current_buffer;
Lisp_Object *overlay_vec;
struct buffer *obuf = current_buffer;
+ if (XINT (position) < BUF_BEGV (XBUFFER (object))
+ || XINT (position) > BUF_ZV (XBUFFER (object)))
+ xsignal1 (Qargs_out_of_range, position);
+
set_buffer_temp (XBUFFER (object));
GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, 0);
set_buffer_temp (XBUFFER (object));
GET_OVERLAYS_AT (XINT (position), overlay_vec, noverlays, NULL, 0);
@@
-713,7
+693,7
@@
POSITION is at the end of OBJECT, both car and cdr are nil. */)
Lisp_Object overlay;
Lisp_Object val
= get_char_property_and_overlay (position, prop, object, &overlay);
Lisp_Object overlay;
Lisp_Object val
= get_char_property_and_overlay (position, prop, object, &overlay);
- return Fcons(val, overlay);
+ return Fcons
(val, overlay);
}
\f
}
\f
@@
-881,7
+861,7
@@
back past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
if (NILP (position))
{
if (NILP (limit))
if (NILP (position))
{
if (NILP (limit))
- position = make_number (
SCHARS (object)
);
+ position = make_number (
0
);
else
{
CHECK_NUMBER (limit);
else
{
CHECK_NUMBER (limit);
@@
-1016,8
+996,7
@@
past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
/* Return 1 if there's a change in some property between BEG and END. */
int
/* Return 1 if there's a change in some property between BEG and END. */
int
-property_change_between_p (beg, end)
- int beg, end;
+property_change_between_p (int beg, int end)
{
register INTERVAL i, next;
Lisp_Object object, pos;
{
register INTERVAL i, next;
Lisp_Object object, pos;
@@
-1342,13
+1321,14
@@
the designated part of OBJECT. */)
/* Replace properties of text from START to END with new list of
properties PROPERTIES. OBJECT is the buffer or string containing
the text. OBJECT nil means use the current buffer.
/* Replace properties of text from START to END with new list of
properties PROPERTIES. OBJECT is the buffer or string containing
the text. OBJECT nil means use the current buffer.
- SIGNAL_AFTER_CHANGE_P nil means don't signal after changes. Value
- is nil if the function _detected_ that it did not replace any
- properties, non-nil otherwise. */
+ COHERENT_CHANGE_P nil means this is being called as an internal
+ subroutine, rather than as a change primitive with checking of
+ read-only, invoking change hooks, etc.. Value is nil if the
+ function _detected_ that it did not replace any properties, non-nil
+ otherwise. */
Lisp_Object
Lisp_Object
-set_text_properties (start, end, properties, object, signal_after_change_p)
- Lisp_Object start, end, properties, object, signal_after_change_p;
+set_text_properties (Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object object, Lisp_Object coherent_change_p)
{
register INTERVAL i;
Lisp_Object ostart, oend;
{
register INTERVAL i;
Lisp_Object ostart, oend;
@@
-1393,12
+1373,12
@@
set_text_properties (start, end, properties, object, signal_after_change_p)
return Qnil;
}
return Qnil;
}
- if (BUFFERP (object))
+ if (BUFFERP (object)
&& !NILP (coherent_change_p)
)
modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
set_text_properties_1 (start, end, properties, object, i);
modify_region (XBUFFER (object), XINT (start), XINT (end), 1);
set_text_properties_1 (start, end, properties, object, i);
- if (BUFFERP (object) && !NILP (
signal_after
_change_p))
+ if (BUFFERP (object) && !NILP (
coherent
_change_p))
signal_after_change (XINT (start), XINT (end) - XINT (start),
XINT (end) - XINT (start));
return Qt;
signal_after_change (XINT (start), XINT (end) - XINT (start),
XINT (end) - XINT (start));
return Qt;
@@
-1412,9
+1392,7
@@
set_text_properties (start, end, properties, object, signal_after_change_p)
START and END can be in any order. */
void
START and END can be in any order. */
void
-set_text_properties_1 (start, end, properties, buffer, i)
- Lisp_Object start, end, properties, buffer;
- INTERVAL i;
+set_text_properties_1 (Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object buffer, INTERVAL i)
{
register INTERVAL prev_changed = NULL_INTERVAL;
register int s, len;
{
register INTERVAL prev_changed = NULL_INTERVAL;
register int s, len;
@@
-1502,7
+1480,7
@@
the current buffer), START and END are buffer positions (integers or
markers). If OBJECT is a string, START and END are 0-based indices into it.
Return t if any property was actually removed, nil otherwise.
markers). If OBJECT is a string, START and END are 0-based indices into it.
Return t if any property was actually removed, nil otherwise.
-Use
set-text-properties
if you want to remove all text properties. */)
+Use
`set-text-properties'
if you want to remove all text properties. */)
(start, end, properties, object)
Lisp_Object start, end, properties, object;
{
(start, end, properties, object)
Lisp_Object start, end, properties, object;
{
@@
-1633,8
+1611,8
@@
Return t if any property was actually removed, nil otherwise. */)
The flag `modified' records if changes have been made.
When object is a buffer, we must call modify_region before changes are
made and signal_after_change when we are done.
The flag `modified' records if changes have been made.
When object is a buffer, we must call modify_region before changes are
made and signal_after_change when we are done.
- We call modify_region before calling remove_properties if
f
modified == 0,
- and we call signal_after_change before returning if
f
modified != 0. */
+ We call modify_region before calling remove_properties if modified == 0,
+ and we call signal_after_change before returning if modified != 0. */
for (;;)
{
if (i == 0)
for (;;)
{
if (i == 0)
@@
-1771,8
+1749,7
@@
markers). If OBJECT is a string, START and END are 0-based indices into it. */
BUFFER can be either a buffer or nil (meaning current buffer). */
int
BUFFER can be either a buffer or nil (meaning current buffer). */
int
-text_property_stickiness (prop, pos, buffer)
- Lisp_Object prop, pos, buffer;
+text_property_stickiness (Lisp_Object prop, Lisp_Object pos, Lisp_Object buffer)
{
Lisp_Object prev_pos, front_sticky;
int is_rear_sticky = 1, is_front_sticky = 0; /* defaults */
{
Lisp_Object prev_pos, front_sticky;
int is_rear_sticky = 1, is_front_sticky = 0; /* defaults */
@@
-1845,8
+1822,7
@@
text_property_stickiness (prop, pos, buffer)
/* Note this can GC when DEST is a buffer. */
Lisp_Object
/* Note this can GC when DEST is a buffer. */
Lisp_Object
-copy_text_properties (start, end, src, pos, dest, prop)
- Lisp_Object start, end, src, pos, dest, prop;
+copy_text_properties (Lisp_Object start, Lisp_Object end, Lisp_Object src, Lisp_Object pos, Lisp_Object dest, Lisp_Object prop)
{
INTERVAL i;
Lisp_Object res;
{
INTERVAL i;
Lisp_Object res;
@@
-1938,8
+1914,7
@@
copy_text_properties (start, end, src, pos, dest, prop)
doesn't contain text properties between START and END. */
Lisp_Object
doesn't contain text properties between START and END. */
Lisp_Object
-text_property_list (object, start, end, prop)
- Lisp_Object object, start, end, prop;
+text_property_list (Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp_Object prop)
{
struct interval *i;
Lisp_Object result;
{
struct interval *i;
Lisp_Object result;
@@
-1965,10
+1940,10
@@
text_property_list (object, start, end, prop)
plist = i->plist;
if (!NILP (prop))
plist = i->plist;
if (!NILP (prop))
- for (;
!NILP (plist); plist = Fcdr (Fcdr
(plist)))
- if (EQ (
Fcar
(plist), prop))
+ for (;
CONSP (plist); plist = Fcdr (XCDR
(plist)))
+ if (EQ (
XCAR
(plist), prop))
{
{
- plist = Fcons (prop, Fcons (Fcar (
Fcdr
(plist)), Qnil));
+ plist = Fcons (prop, Fcons (Fcar (
XCDR
(plist)), Qnil));
break;
}
break;
}
@@
-1996,8
+1971,7
@@
text_property_list (object, start, end, prop)
non-zero if OBJECT was modified. */
int
non-zero if OBJECT was modified. */
int
-add_text_properties_from_list (object, list, delta)
- Lisp_Object object, list, delta;
+add_text_properties_from_list (Lisp_Object object, Lisp_Object list, Lisp_Object delta)
{
struct gcpro gcpro1, gcpro2;
int modified_p = 0;
{
struct gcpro gcpro1, gcpro2;
int modified_p = 0;
@@
-2024,24
+1998,40
@@
add_text_properties_from_list (object, list, delta)
-/* Modify end-points of ranges in LIST destructively. LIST is a list
- as returned from text_property_list. Change end-points equal to
- OLD_END to NEW_END. */
+/* Modify end-points of ranges in LIST destructively, and return the
+ new list. LIST is a list as returned from text_property_list.
+ Discard properties that begin at or after NEW_END, and limit
+ end-points to NEW_END. */
-void
-extend_property_ranges (list, old_end, new_end)
- Lisp_Object list, old_end, new_end;
+Lisp_Object
+extend_property_ranges (Lisp_Object list, Lisp_Object new_end)
{
{
- for (; CONSP (list); list = XCDR (list))
+ Lisp_Object prev = Qnil, head = list;
+ int max = XINT (new_end);
+
+ for (; CONSP (list); prev = list, list = XCDR (list))
{
{
- Lisp_Object item, end;
+ Lisp_Object item,
beg,
end;
item = XCAR (list);
item = XCAR (list);
+ beg = XCAR (item);
end = XCAR (XCDR (item));
end = XCAR (XCDR (item));
- if (EQ (end, old_end))
+ if (XINT (beg) >= max)
+ {
+ /* The start-point is past the end of the new string.
+ Discard this property. */
+ if (EQ (head, list))
+ head = XCDR (list);
+ else
+ XSETCDR (prev, XCDR (list));
+ }
+ else if (XINT (end) > max)
+ /* The end-point is past the end of the new string. */
XSETCAR (XCDR (item), new_end);
}
XSETCAR (XCDR (item), new_end);
}
+
+ return head;
}
}
@@
-2049,8
+2039,7
@@
extend_property_ranges (list, old_end, new_end)
/* Call the modification hook functions in LIST, each with START and END. */
static void
/* Call the modification hook functions in LIST, each with START and END. */
static void
-call_mod_hooks (list, start, end)
- Lisp_Object list, start, end;
+call_mod_hooks (Lisp_Object list, Lisp_Object start, Lisp_Object end)
{
struct gcpro gcpro1;
GCPRO1 (list);
{
struct gcpro gcpro1;
GCPRO1 (list);
@@
-2071,9
+2060,7
@@
call_mod_hooks (list, start, end)
those hooks in order, with START and END - 1 as arguments. */
void
those hooks in order, with START and END - 1 as arguments. */
void
-verify_interval_modification (buf, start, end)
- struct buffer *buf;
- int start, end;
+verify_interval_modification (struct buffer *buf, int start, int end)
{
register INTERVAL intervals = BUF_INTERVALS (buf);
register INTERVAL i;
{
register INTERVAL intervals = BUF_INTERVALS (buf);
register INTERVAL i;
@@
-2251,8
+2238,7
@@
verify_interval_modification (buf, start, end)
so it can indicate the range of inserted text. */
void
so it can indicate the range of inserted text. */
void
-report_interval_modification (start, end)
- Lisp_Object start, end;
+report_interval_modification (Lisp_Object start, Lisp_Object end)
{
if (! NILP (interval_insert_behind_hooks))
call_mod_hooks (interval_insert_behind_hooks, start, end);
{
if (! NILP (interval_insert_behind_hooks))
call_mod_hooks (interval_insert_behind_hooks, start, end);
@@
-2263,7
+2249,7
@@
report_interval_modification (start, end)
}
\f
void
}
\f
void
-syms_of_textprop ()
+syms_of_textprop (
void
)
{
DEFVAR_LISP ("default-text-properties", &Vdefault_text_properties,
doc: /* Property-list used as default values.
{
DEFVAR_LISP ("default-text-properties", &Vdefault_text_properties,
doc: /* Property-list used as default values.
@@
-2292,11
+2278,11
@@
Each element has the form (PROPERTY . NONSTICKINESS).
If a character in a buffer has PROPERTY, new text inserted adjacent to
the character doesn't inherit PROPERTY if NONSTICKINESS is non-nil,
If a character in a buffer has PROPERTY, new text inserted adjacent to
the character doesn't inherit PROPERTY if NONSTICKINESS is non-nil,
-inherits it if NONSTICKINESS is nil. The
front-sticky
and
-
rear-nonsticky properties of the character overrides
NONSTICKINESS. */);
+inherits it if NONSTICKINESS is nil. The
`front-sticky'
and
+
`rear-nonsticky' properties of the character override
NONSTICKINESS. */);
/* Text property `syntax-table' should be nonsticky by default. */
Vtext_property_default_nonsticky
/* Text property `syntax-table' should be nonsticky by default. */
Vtext_property_default_nonsticky
- = Fcons (Fcons (intern ("syntax-table"), Qt), Qnil);
+ = Fcons (Fcons (intern
_c_string
("syntax-table"), Qt), Qnil);
staticpro (&interval_insert_behind_hooks);
staticpro (&interval_insert_in_front_hooks);
staticpro (&interval_insert_behind_hooks);
staticpro (&interval_insert_in_front_hooks);
@@
-2307,42
+2293,44
@@
rear-nonsticky properties of the character overrides NONSTICKINESS. */);
/* Common attributes one might give text */
staticpro (&Qforeground);
/* Common attributes one might give text */
staticpro (&Qforeground);
- Qforeground = intern ("foreground");
+ Qforeground = intern
_c_string
("foreground");
staticpro (&Qbackground);
staticpro (&Qbackground);
- Qbackground = intern ("background");
+ Qbackground = intern
_c_string
("background");
staticpro (&Qfont);
staticpro (&Qfont);
- Qfont = intern ("font");
+ Qfont = intern
_c_string
("font");
staticpro (&Qstipple);
staticpro (&Qstipple);
- Qstipple = intern ("stipple");
+ Qstipple = intern
_c_string
("stipple");
staticpro (&Qunderline);
staticpro (&Qunderline);
- Qunderline = intern ("underline");
+ Qunderline = intern
_c_string
("underline");
staticpro (&Qread_only);
staticpro (&Qread_only);
- Qread_only = intern ("read-only");
+ Qread_only = intern
_c_string
("read-only");
staticpro (&Qinvisible);
staticpro (&Qinvisible);
- Qinvisible = intern ("invisible");
+ Qinvisible = intern
_c_string
("invisible");
staticpro (&Qintangible);
staticpro (&Qintangible);
- Qintangible = intern ("intangible");
+ Qintangible = intern
_c_string
("intangible");
staticpro (&Qcategory);
staticpro (&Qcategory);
- Qcategory = intern ("category");
+ Qcategory = intern
_c_string
("category");
staticpro (&Qlocal_map);
staticpro (&Qlocal_map);
- Qlocal_map = intern ("local-map");
+ Qlocal_map = intern
_c_string
("local-map");
staticpro (&Qfront_sticky);
staticpro (&Qfront_sticky);
- Qfront_sticky = intern ("front-sticky");
+ Qfront_sticky = intern
_c_string
("front-sticky");
staticpro (&Qrear_nonsticky);
staticpro (&Qrear_nonsticky);
- Qrear_nonsticky = intern ("rear-nonsticky");
+ Qrear_nonsticky = intern
_c_string
("rear-nonsticky");
staticpro (&Qmouse_face);
staticpro (&Qmouse_face);
- Qmouse_face = intern ("mouse-face");
+ Qmouse_face = intern_c_string ("mouse-face");
+ staticpro (&Qminibuffer_prompt);
+ Qminibuffer_prompt = intern_c_string ("minibuffer-prompt");
/* Properties that text might use to specify certain actions */
staticpro (&Qmouse_left);
/* Properties that text might use to specify certain actions */
staticpro (&Qmouse_left);
- Qmouse_left = intern ("mouse-left");
+ Qmouse_left = intern
_c_string
("mouse-left");
staticpro (&Qmouse_entered);
staticpro (&Qmouse_entered);
- Qmouse_entered = intern ("mouse-entered");
+ Qmouse_entered = intern
_c_string
("mouse-entered");
staticpro (&Qpoint_left);
staticpro (&Qpoint_left);
- Qpoint_left = intern ("point-left");
+ Qpoint_left = intern
_c_string
("point-left");
staticpro (&Qpoint_entered);
staticpro (&Qpoint_entered);
- Qpoint_entered = intern ("point-entered");
+ Qpoint_entered = intern
_c_string
("point-entered");
defsubr (&Stext_properties_at);
defsubr (&Sget_text_property);
defsubr (&Stext_properties_at);
defsubr (&Sget_text_property);