summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGregory Heytings <gregory@heytings.org>2023-05-12 21:56:28 +0000
committerGregory Heytings <gregory@heytings.org>2023-05-13 00:11:33 +0200
commitf0f08eeb05c79e7b7326931357e82e65262c3336 (patch)
treee9d83000642053f9379c9ca9bafaff9f49459a14 /src
parentc0b9530862c2f27a23ad058d60171e06de3e9b50 (diff)
downloademacs-f0f08eeb05c79e7b7326931357e82e65262c3336.tar.gz
Fix the return type of 'labeled_restrictions_get_bound'
* src/editfns.c: (labeled_restrictions_get_bound): Return a Lisp_Object instead of a pointer to a struct Lisp_Marker. (unwind_reset_outermost_restriction, reset_outermost_restrictions) (Fwiden, Fnarrow_to_region): Adapt to the new return type.
Diffstat (limited to 'src')
-rw-r--r--src/editfns.c83
1 files changed, 42 insertions, 41 deletions
diff --git a/src/editfns.c b/src/editfns.c
index 4c5b691eb50..d02cce4aef3 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2687,20 +2687,19 @@ labeled_restrictions_remove (Lisp_Object buf)
}
/* Retrieve one of the labeled restriction bounds in BUF from the
- labeled_restrictions alist, as a pointer to a struct Lisp_Marker,
- or return NULL if BUF is not in labeled_restrictions or is a killed
- buffer. When OUTERMOST is true, the restriction bounds that were
- current when the first labeled restriction was entered are
- returned. Otherwise the bounds of the innermost labeled
- restriction are returned. */
-static struct Lisp_Marker *
+ labeled_restrictions alist, as a marker, or return nil if BUF is
+ not in labeled_restrictions or is a killed buffer. When OUTERMOST
+ is true, the restriction bounds that were current when the first
+ labeled restriction was entered are returned. Otherwise the bounds
+ of the innermost labeled restriction are returned. */
+static Lisp_Object
labeled_restrictions_get_bound (Lisp_Object buf, bool begv, bool outermost)
{
if (NILP (Fbuffer_live_p (buf)))
- return NULL;
+ return Qnil;
Lisp_Object restrictions = assq_no_quit (buf, labeled_restrictions);
if (NILP (restrictions))
- return NULL;
+ return Qnil;
restrictions = XCAR (XCDR (restrictions));
Lisp_Object bounds
= outermost
@@ -2709,7 +2708,7 @@ labeled_restrictions_get_bound (Lisp_Object buf, bool begv, bool outermost)
eassert (! NILP (bounds));
Lisp_Object marker = begv ? XCAR (bounds) : XCAR (XCDR (bounds));
eassert (EQ (Fmarker_buffer (marker), buf));
- return XMARKER (marker);
+ return marker;
}
/* Retrieve the label of the innermost labeled restriction in BUF.
@@ -2766,14 +2765,14 @@ labeled_restrictions_remove_in_current_buffer (void)
static void
unwind_reset_outermost_restriction (Lisp_Object buf)
{
- struct Lisp_Marker *begv
- = labeled_restrictions_get_bound (buf, true, false);
- struct Lisp_Marker *zv
- = labeled_restrictions_get_bound (buf, false, false);
- if (begv != NULL && zv != NULL)
+ Lisp_Object begv = labeled_restrictions_get_bound (buf, true, false);
+ Lisp_Object zv = labeled_restrictions_get_bound (buf, false, false);
+ if (! NILP (begv) && ! NILP (zv))
{
- SET_BUF_BEGV_BOTH (XBUFFER (buf), begv->charpos, begv->bytepos);
- SET_BUF_ZV_BOTH (XBUFFER (buf), zv->charpos, zv->bytepos);
+ SET_BUF_BEGV_BOTH (XBUFFER (buf),
+ marker_position (begv), marker_byte_position (begv));
+ SET_BUF_ZV_BOTH (XBUFFER (buf),
+ marker_position (zv), marker_byte_position (zv));
}
else
labeled_restrictions_remove (buf);
@@ -2797,14 +2796,14 @@ reset_outermost_restrictions (void)
{
buf = XCAR (XCAR (val));
eassert (BUFFERP (buf));
- struct Lisp_Marker *begv
- = labeled_restrictions_get_bound (buf, true, true);
- struct Lisp_Marker *zv
- = labeled_restrictions_get_bound (buf, false, true);
- if (begv != NULL && zv != NULL)
+ Lisp_Object begv = labeled_restrictions_get_bound (buf, true, true);
+ Lisp_Object zv = labeled_restrictions_get_bound (buf, false, true);
+ if (! NILP (begv) && ! NILP (zv))
{
- SET_BUF_BEGV_BOTH (XBUFFER (buf), begv->charpos, begv->bytepos);
- SET_BUF_ZV_BOTH (XBUFFER (buf), zv->charpos, zv->bytepos);
+ SET_BUF_BEGV_BOTH (XBUFFER (buf),
+ marker_position (begv), marker_byte_position (begv));
+ SET_BUF_ZV_BOTH (XBUFFER (buf),
+ marker_position (zv), marker_byte_position (zv));
record_unwind_protect (unwind_reset_outermost_restriction, buf);
}
else
@@ -2878,15 +2877,17 @@ To gain access to other portions of the buffer, use
}
else
{
- struct Lisp_Marker *begv
- = labeled_restrictions_get_bound (buf, true, false);
- struct Lisp_Marker *zv
- = labeled_restrictions_get_bound (buf, false, false);
- eassert (begv != NULL && zv != NULL);
- if (begv->charpos != BEGV || zv->charpos != ZV)
+ Lisp_Object begv = labeled_restrictions_get_bound (buf, true, false);
+ Lisp_Object zv = labeled_restrictions_get_bound (buf, false, false);
+ eassert (! NILP (begv) && ! NILP (zv));
+ ptrdiff_t begv_charpos = marker_position (begv);
+ ptrdiff_t zv_charpos = marker_position (zv);
+ if (begv_charpos != BEGV || zv_charpos != ZV)
current_buffer->clip_changed = 1;
- SET_BUF_BEGV_BOTH (current_buffer, begv->charpos, begv->bytepos);
- SET_BUF_ZV_BOTH (current_buffer, zv->charpos, zv->bytepos);
+ SET_BUF_BEGV_BOTH (current_buffer,
+ begv_charpos, marker_byte_position (begv));
+ SET_BUF_ZV_BOTH (current_buffer,
+ zv_charpos, marker_byte_position (zv));
/* If the only remaining bounds in labeled_restrictions for
current_buffer are the bounds that were set by the user, no
labeled restriction is in effect in current_buffer anymore:
@@ -2933,15 +2934,15 @@ argument. To gain access to other portions of the buffer, use
{
/* Limit the start and end positions to those of the innermost
labeled restriction. */
- struct Lisp_Marker *begv
- = labeled_restrictions_get_bound (buf, true, false);
- struct Lisp_Marker *zv
- = labeled_restrictions_get_bound (buf, false, false);
- eassert (begv != NULL && zv != NULL);
- if (s < begv->charpos) s = begv->charpos;
- if (s > zv->charpos) s = zv->charpos;
- if (e < begv->charpos) e = begv->charpos;
- if (e > zv->charpos) e = zv->charpos;
+ Lisp_Object begv = labeled_restrictions_get_bound (buf, true, false);
+ Lisp_Object zv = labeled_restrictions_get_bound (buf, false, false);
+ eassert (! NILP (begv) && ! NILP (zv));
+ ptrdiff_t begv_charpos = marker_position (begv);
+ ptrdiff_t zv_charpos = marker_position (zv);
+ if (s < begv_charpos) s = begv_charpos;
+ if (s > zv_charpos) s = zv_charpos;
+ if (e < begv_charpos) e = begv_charpos;
+ if (e > zv_charpos) e = zv_charpos;
}
/* Record the accessible range of the buffer when narrow-to-region