HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move DONT_REOPEN_PTY from src/s to configure
[bpt/emacs.git]
/
src
/
textprop.c
diff --git
a/src/textprop.c
b/src/textprop.c
index
29425f7
..
efce725
100644
(file)
--- a/
src/textprop.c
+++ b/
src/textprop.c
@@
-1,5
+1,5
@@
/* Interface code for dealing with text properties.
/* Interface code for dealing with text properties.
- Copyright (C) 1993-1995, 1997, 1999-201
1
Free Software Foundation, Inc.
+ Copyright (C) 1993-1995, 1997, 1999-201
2
Free Software Foundation, Inc.
This file is part of GNU Emacs.
This file is part of GNU Emacs.
@@
-20,13
+20,10
@@
along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
#include <setjmp.h>
#include "lisp.h"
#include "intervals.h"
#include <setjmp.h>
#include "lisp.h"
#include "intervals.h"
+#include "character.h"
#include "buffer.h"
#include "window.h"
#include "buffer.h"
#include "window.h"
-#ifndef NULL
-#define NULL (void *)0
-#endif
-
/* Test for membership, allowing for t (actually any non-cons) to mean the
universal set. */
/* Test for membership, allowing for t (actually any non-cons) to mean the
universal set. */
@@
-75,15
+72,11
@@
Lisp_Object Qfront_sticky, Qrear_nonsticky;
static Lisp_Object interval_insert_behind_hooks;
static Lisp_Object interval_insert_in_front_hooks;
static Lisp_Object interval_insert_behind_hooks;
static Lisp_Object interval_insert_in_front_hooks;
-static void text_read_only (Lisp_Object) NO_RETURN;
-static Lisp_Object Fprevious_property_change (Lisp_Object, Lisp_Object,
- Lisp_Object);
-
/* Signal a `text-read-only' error. This function makes it easier
to capture that error in GDB by putting a breakpoint on it. */
/* 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
+static
_Noreturn
void
text_read_only (Lisp_Object propval)
{
if (STRINGP (propval))
text_read_only (Lisp_Object propval)
{
if (STRINGP (propval))
@@
-124,7
+117,7
@@
INTERVAL
validate_interval_range (Lisp_Object object, Lisp_Object *begin, Lisp_Object *end, int force)
{
register INTERVAL i;
validate_interval_range (Lisp_Object object, Lisp_Object *begin, Lisp_Object *end, int force)
{
register INTERVAL i;
-
EMACS_INT
searchpos;
+
ptrdiff_t
searchpos;
CHECK_STRING_OR_BUFFER (object);
CHECK_NUMBER_COERCE_MARKER (*begin);
CHECK_STRING_OR_BUFFER (object);
CHECK_NUMBER_COERCE_MARKER (*begin);
@@
-160,7
+153,7
@@
validate_interval_range (Lisp_Object object, Lisp_Object *begin, Lisp_Object *en
}
else
{
}
else
{
-
EMACS_INT
len = SCHARS (object);
+
ptrdiff_t
len = SCHARS (object);
if (! (0 <= XINT (*begin) && XINT (*begin) <= XINT (*end)
&& XINT (*end) <= len))
if (! (0 <= XINT (*begin) && XINT (*begin) <= XINT (*end)
&& XINT (*end) <= len))
@@
-278,7
+271,7
@@
interval_has_some_properties_list (Lisp_Object list, INTERVAL i)
/* Go through each element of LIST. */
for (tail1 = list; CONSP (tail1); tail1 = XCDR (tail1))
{
/* Go through each element of LIST. */
for (tail1 = list; CONSP (tail1); tail1 = XCDR (tail1))
{
- sym =
Fcar
(tail1);
+ sym =
XCAR
(tail1);
/* Go through i's plist, looking for tail1 */
for (tail2 = i->plist; CONSP (tail2); tail2 = XCDR (XCDR (tail2)))
/* Go through i's plist, looking for tail1 */
for (tail2 = i->plist; CONSP (tail2); tail2 = XCDR (XCDR (tail2)))
@@
-514,10
+507,10
@@
erase_properties (INTERVAL i)
POSITION is BEG-based. */
INTERVAL
POSITION is BEG-based. */
INTERVAL
-interval_of (
EMACS_INT
position, Lisp_Object object)
+interval_of (
ptrdiff_t
position, Lisp_Object object)
{
register INTERVAL i;
{
register INTERVAL i;
-
EMACS_INT
beg, end;
+
ptrdiff_t
beg, end;
if (NILP (object))
XSETBUFFER (object, current_buffer);
if (NILP (object))
XSETBUFFER (object, current_buffer);
@@
-775,7
+768,7
@@
past position LIMIT; return LIMIT if nothing is found before LIMIT. */)
else
{
Lisp_Object initial_value, value;
else
{
Lisp_Object initial_value, value;
-
in
t count = SPECPDL_INDEX ();
+
ptrdiff_
t count = SPECPDL_INDEX ();
if (! NILP (object))
CHECK_BUFFER (object);
if (! NILP (object))
CHECK_BUFFER (object);
@@
-858,7
+851,7
@@
position LIMIT; return LIMIT if nothing is found before reaching LIMIT. */)
}
else
{
}
else
{
-
in
t count = SPECPDL_INDEX ();
+
ptrdiff_
t count = SPECPDL_INDEX ();
if (! NILP (object))
CHECK_BUFFER (object);
if (! NILP (object))
CHECK_BUFFER (object);
@@
-1140,7
+1133,7
@@
Return t if any property value actually changed, nil otherwise. */)
(Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
(Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
- register
EMACS_INT
s, len;
+ register
ptrdiff_t
s, len;
register int modified = 0;
struct gcpro gcpro1;
register int modified = 0;
struct gcpro gcpro1;
@@
-1170,7
+1163,7
@@
Return t if any property value actually changed, nil otherwise. */)
skip it. */
if (interval_has_all_properties (properties, i))
{
skip it. */
if (interval_has_all_properties (properties, i))
{
-
EMACS_INT
got = (LENGTH (i) - (s - i->position));
+
ptrdiff_t
got = (LENGTH (i) - (s - i->position));
if (got >= len)
RETURN_UNGCPRO (Qnil);
len -= got;
if (got >= len)
RETURN_UNGCPRO (Qnil);
len -= got;
@@
-1345,7
+1338,7
@@
void
set_text_properties_1 (Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object buffer, INTERVAL i)
{
register INTERVAL prev_changed = NULL_INTERVAL;
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
EMACS_INT
s, len;
+ register
ptrdiff_t
s, len;
INTERVAL unchanged;
if (XINT (start) < XINT (end))
INTERVAL unchanged;
if (XINT (start) < XINT (end))
@@
-1438,7
+1431,7
@@
Use `set-text-properties' if you want to remove all text properties. */)
(Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
(Lisp_Object start, Lisp_Object end, Lisp_Object properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
- register
EMACS_INT
s, len;
+ register
ptrdiff_t
s, len;
register int modified = 0;
if (NILP (object))
register int modified = 0;
if (NILP (object))
@@
-1457,7
+1450,7
@@
Use `set-text-properties' if you want to remove all text properties. */)
it covers the entire region. */
if (! interval_has_some_properties (properties, i))
{
it covers the entire region. */
if (! interval_has_some_properties (properties, i))
{
-
EMACS_INT
got = (LENGTH (i) - (s - i->position));
+
ptrdiff_t
got = (LENGTH (i) - (s - i->position));
if (got >= len)
return Qnil;
len -= got;
if (got >= len)
return Qnil;
len -= got;
@@
-1524,7
+1517,7
@@
Return t if any property was actually removed, nil otherwise. */)
(Lisp_Object start, Lisp_Object end, Lisp_Object list_of_properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
(Lisp_Object start, Lisp_Object end, Lisp_Object list_of_properties, Lisp_Object object)
{
register INTERVAL i, unchanged;
- register
EMACS_INT
s, len;
+ register
ptrdiff_t
s, len;
register int modified = 0;
Lisp_Object properties;
properties = list_of_properties;
register int modified = 0;
Lisp_Object properties;
properties = list_of_properties;
@@
-1545,7
+1538,7
@@
Return t if any property was actually removed, nil otherwise. */)
it covers the entire region. */
if (! interval_has_some_properties_list (properties, i))
{
it covers the entire region. */
if (! interval_has_some_properties_list (properties, i))
{
-
EMACS_INT
got = (LENGTH (i) - (s - i->position));
+
ptrdiff_t
got = (LENGTH (i) - (s - i->position));
if (got >= len)
return Qnil;
len -= got;
if (got >= len)
return Qnil;
len -= got;
@@
-1625,7
+1618,7
@@
Return t if any property was actually removed, nil otherwise. */)
\f
DEFUN ("text-property-any", Ftext_property_any,
Stext_property_any, 4, 5, 0,
\f
DEFUN ("text-property-any", Ftext_property_any,
Stext_property_any, 4, 5, 0,
- doc: /* Check text from START to END for property PROPERTY equal
l
ing VALUE.
+ doc: /* Check text from START to END for property PROPERTY equaling VALUE.
If so, return the position of the first character whose property PROPERTY
is `eq' to VALUE. Otherwise return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
If so, return the position of the first character whose property PROPERTY
is `eq' to VALUE. Otherwise return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
@@
-1634,7
+1627,7
@@
markers). If OBJECT is a string, START and END are 0-based indices into it. */
(Lisp_Object start, Lisp_Object end, Lisp_Object property, Lisp_Object value, Lisp_Object object)
{
register INTERVAL i;
(Lisp_Object start, Lisp_Object end, Lisp_Object property, Lisp_Object value, Lisp_Object object)
{
register INTERVAL i;
- register
EMACS_INT
e, pos;
+ register
ptrdiff_t
e, pos;
if (NILP (object))
XSETBUFFER (object, current_buffer);
if (NILP (object))
XSETBUFFER (object, current_buffer);
@@
-1661,7
+1654,7
@@
markers). If OBJECT is a string, START and END are 0-based indices into it. */
DEFUN ("text-property-not-all", Ftext_property_not_all,
Stext_property_not_all, 4, 5, 0,
DEFUN ("text-property-not-all", Ftext_property_not_all,
Stext_property_not_all, 4, 5, 0,
- doc: /* Check text from START to END for property PROPERTY not equal
l
ing VALUE.
+ doc: /* Check text from START to END for property PROPERTY not equaling VALUE.
If so, return the position of the first character whose property PROPERTY
is not `eq' to VALUE. Otherwise, return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
If so, return the position of the first character whose property PROPERTY
is not `eq' to VALUE. Otherwise, return nil.
If the optional fifth argument OBJECT is a buffer (or nil, which means
@@
-1670,7
+1663,7
@@
markers). If OBJECT is a string, START and END are 0-based indices into it. */
(Lisp_Object start, Lisp_Object end, Lisp_Object property, Lisp_Object value, Lisp_Object object)
{
register INTERVAL i;
(Lisp_Object start, Lisp_Object end, Lisp_Object property, Lisp_Object value, Lisp_Object object)
{
register INTERVAL i;
- register
EMACS_INT
s, e;
+ register
ptrdiff_t
s, e;
if (NILP (object))
XSETBUFFER (object, current_buffer);
if (NILP (object))
XSETBUFFER (object, current_buffer);
@@
-1780,7
+1773,7
@@
copy_text_properties (Lisp_Object start, Lisp_Object end, Lisp_Object src, Lisp_
Lisp_Object res;
Lisp_Object stuff;
Lisp_Object plist;
Lisp_Object res;
Lisp_Object stuff;
Lisp_Object plist;
-
EMACS_INT
s, e, e2, p, len;
+
ptrdiff_t
s, e, e2, p, len;
int modified = 0;
struct gcpro gcpro1, gcpro2;
int modified = 0;
struct gcpro gcpro1, gcpro2;
@@
-1792,8
+1785,11
@@
copy_text_properties (Lisp_Object start, Lisp_Object end, Lisp_Object src, Lisp_
{
Lisp_Object dest_start, dest_end;
{
Lisp_Object dest_start, dest_end;
+ e = XINT (pos) + (XINT (end) - XINT (start));
+ if (MOST_POSITIVE_FIXNUM < e)
+ args_out_of_range (pos, end);
dest_start = pos;
dest_start = pos;
- XSETFASTINT (dest_end,
XINT (dest_start) + (XINT (end) - XINT (start))
);
+ XSETFASTINT (dest_end,
e
);
/* Apply this to a copy of pos; it will try to increment its arguments,
which we don't want. */
validate_interval_range (dest, &dest_start, &dest_end, soft);
/* Apply this to a copy of pos; it will try to increment its arguments,
which we don't want. */
validate_interval_range (dest, &dest_start, &dest_end, soft);
@@
-1877,12
+1873,12
@@
text_property_list (Lisp_Object object, Lisp_Object start, Lisp_Object end, Lisp
i = validate_interval_range (object, &start, &end, soft);
if (!NULL_INTERVAL_P (i))
{
i = validate_interval_range (object, &start, &end, soft);
if (!NULL_INTERVAL_P (i))
{
-
EMACS_INT
s = XINT (start);
-
EMACS_INT
e = XINT (end);
+
ptrdiff_t
s = XINT (start);
+
ptrdiff_t
e = XINT (end);
while (s < e)
{
while (s < e)
{
-
EMACS_INT
interval_end, len;
+
ptrdiff_t
interval_end, len;
Lisp_Object plist;
interval_end = i->position + LENGTH (i);
Lisp_Object plist;
interval_end = i->position + LENGTH (i);
@@
-1960,7
+1956,7
@@
Lisp_Object
extend_property_ranges (Lisp_Object list, Lisp_Object new_end)
{
Lisp_Object prev = Qnil, head = list;
extend_property_ranges (Lisp_Object list, Lisp_Object new_end)
{
Lisp_Object prev = Qnil, head = list;
-
EMACS_INT
max = XINT (new_end);
+
ptrdiff_t
max = XINT (new_end);
for (; CONSP (list); prev = list, list = XCDR (list))
{
for (; CONSP (list); prev = list, list = XCDR (list))
{
@@
-2014,7
+2010,7
@@
call_mod_hooks (Lisp_Object list, Lisp_Object start, Lisp_Object end)
void
verify_interval_modification (struct buffer *buf,
void
verify_interval_modification (struct buffer *buf,
-
EMACS_INT start, EMACS_INT
end)
+
ptrdiff_t start, ptrdiff_t
end)
{
register INTERVAL intervals = BUF_INTERVALS (buf);
register INTERVAL i;
{
register INTERVAL intervals = BUF_INTERVALS (buf);
register INTERVAL i;
@@
-2035,7
+2031,7
@@
verify_interval_modification (struct buffer *buf,
if (start > end)
{
if (start > end)
{
-
EMACS_INT
temp = start;
+
ptrdiff_t
temp = start;
start = end;
end = temp;
}
start = end;
end = temp;
}
@@
-2227,7
+2223,7
@@
This also inhibits the use of the `intangible' text property. */);
DEFVAR_LISP ("text-property-default-nonsticky",
Vtext_property_default_nonsticky,
DEFVAR_LISP ("text-property-default-nonsticky",
Vtext_property_default_nonsticky,
- doc: /* Alist of properties vs the corresponding non-stickiness
es
.
+ doc: /* Alist of properties vs the corresponding non-stickiness.
Each element has the form (PROPERTY . NONSTICKINESS).
If a character in a buffer has PROPERTY, new text inserted adjacent to
Each element has the form (PROPERTY . NONSTICKINESS).
If a character in a buffer has PROPERTY, new text inserted adjacent to