/* Lisp functions pertaining to editing.
- Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 2002
+ Copyright (C) 1985,86,87,89,93,94,95,96,97,98, 1999, 2000, 2001, 02, 2003
Free Software Foundation, Inc.
This file is part of GNU Emacs.
if (NILP (m))
error ("The mark is not set now, so there is no region");
- if ((PT < XFASTINT (m)) == beginningp)
+ if ((PT < XFASTINT (m)) == (beginningp != 0))
m = make_number (PT);
return m;
}
Lisp_Object *vec;
int len;
{
- Lisp_Object tail, overlay, start, end;
+ Lisp_Object overlay, start, end;
+ struct Lisp_Overlay *tail;
int startpos, endpos;
int idx = 0;
- for (tail = current_buffer->overlays_before;
- GC_CONSP (tail);
- tail = XCDR (tail))
+ for (tail = current_buffer->overlays_before; tail; tail = tail->next)
{
- overlay = XCAR (tail);
+ XSETMISC (overlay, tail);
end = OVERLAY_END (overlay);
endpos = OVERLAY_POSITION (end);
}
}
- for (tail = current_buffer->overlays_after;
- GC_CONSP (tail);
- tail = XCDR (tail))
+ for (tail = current_buffer->overlays_after; tail; tail = tail->next)
{
- overlay = XCAR (tail);
+ XSETMISC (overlay, tail);
start = OVERLAY_START (overlay);
startpos = OVERLAY_POSITION (start);
Lisp_Object position, object;
register Lisp_Object prop;
{
- struct window *w = 0;
-
CHECK_NUMBER_COERCE_MARKER (position);
if (NILP (object))
XSETBUFFER (object, current_buffer);
-
- if (WINDOWP (object))
- {
- w = XWINDOW (object);
- object = w->buffer;
- }
- if (BUFFERP (object))
+ else if (WINDOWP (object))
+ object = XWINDOW (object)->buffer;
+
+ if (!BUFFERP (object))
+ /* pos-property only makes sense in buffers right now, since strings
+ have no overlays and no notion of insertion for which stickiness
+ could be obeyed. */
+ return Fget_text_property (position, prop, object);
+ else
{
int posn = XINT (position);
int noverlays;
}
}
+ { /* Now check the text-properties. */
+ int stickiness = text_property_stickiness (prop, position, object);
+ if (stickiness > 0)
+ return Fget_text_property (position, prop, object);
+ else if (stickiness < 0
+ && XINT (position) > BUF_BEGV (XBUFFER (object)))
+ return Fget_text_property (make_number (XINT (position) - 1),
+ prop, object);
+ else
+ return Qnil;
+ }
}
-
- { /* Now check the text-properties. */
- int stickiness = text_property_stickiness (prop, position);
- if (stickiness > 0)
- return Fget_text_property (position, prop, Qnil);
- else if (stickiness < 0 && XINT (position) > BEGV)
- return Fget_text_property (make_number (XINT (position) - 1),
- prop, Qnil);
- else
- return Qnil;
- }
}
/* Find the field surrounding POS in *BEG and *END. If POS is nil,
/* Point marker. */
tem = XCAR (info);
Fgoto_char (tem);
- unchain_marker (tem);
+ unchain_marker (XMARKER (tem));
/* Mark marker. */
info = XCDR (info);
omark = Fmarker_position (current_buffer->mark);
Fset_marker (current_buffer->mark, tem, Fcurrent_buffer ());
nmark = Fmarker_position (tem);
- unchain_marker (tem);
+ unchain_marker (XMARKER (tem));
/* visible */
info = XCDR (info);
Year numbers less than 100 are treated just like other year numbers.
If you want them to stand for years in this century, you must do that yourself.
+Years before 1970 are not guaranteed to work. On some systems,
+year values as low as 1901 do work.
+
usage: (encode-time SECOND MINUTE HOUR DAY MONTH YEAR &optional ZONE) */)
(nargs, args)
int nargs;
register int start1_byte, end1_byte, start2_byte, end2_byte;
{
register int amt1, amt1_byte, amt2, amt2_byte, diff, diff_byte, mpos;
- register Lisp_Object marker;
+ register struct Lisp_Marker *marker;
/* Update point as if it were a marker. */
if (PT < start1)
amt1_byte = (end2_byte - start2_byte) + (start2_byte - end1_byte);
amt2_byte = (end1_byte - start1_byte) + (start2_byte - end1_byte);
- for (marker = BUF_MARKERS (current_buffer); !NILP (marker);
- marker = XMARKER (marker)->chain)
+ for (marker = BUF_MARKERS (current_buffer); marker; marker = marker->next)
{
- mpos = marker_byte_position (marker);
+ mpos = marker->bytepos;
if (mpos >= start1_byte && mpos < end2_byte)
{
if (mpos < end1_byte)
mpos += diff_byte;
else
mpos -= amt2_byte;
- XMARKER (marker)->bytepos = mpos;
+ marker->bytepos = mpos;
}
- mpos = XMARKER (marker)->charpos;
+ mpos = marker->charpos;
if (mpos >= start1 && mpos < end2)
{
if (mpos < end1)
else
mpos -= amt2;
}
- XMARKER (marker)->charpos = mpos;
+ marker->charpos = mpos;
}
}
defsubr (&Ssave_restriction);
defsubr (&Stranspose_regions);
}
+
+/* arch-tag: fc3827d8-6f60-4067-b11e-c3218031b018
+ (do not change this comment) */