mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 11:50:51 -08:00
parent
0845fd30eb
commit
3774eda584
8 changed files with 23 additions and 37 deletions
18
src/alloc.c
18
src/alloc.c
|
|
@ -4167,14 +4167,11 @@ DEFUN ("make-marker", Fmake_marker, Smake_marker, 0, 0, 0,
|
|||
/* Return a newly allocated marker which points into BUF
|
||||
at character position CHARPOS and byte position BYTEPOS. */
|
||||
|
||||
static int build_marker_counts[100] = {0};
|
||||
|
||||
Lisp_Object
|
||||
build_marker (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t bytepos, int where)
|
||||
build_marker (struct buffer *buf, ptrdiff_t charpos, ptrdiff_t bytepos)
|
||||
{
|
||||
/* No dead buffers here. */
|
||||
eassert (BUFFER_LIVE_P (buf));
|
||||
build_marker_counts[where] += 1;
|
||||
|
||||
/* Every character is at least one byte. */
|
||||
eassert (charpos <= bytepos);
|
||||
|
|
@ -4374,16 +4371,6 @@ FUNCTION. FUNCTION will be run once per finalizer object. */)
|
|||
return make_lisp_ptr (finalizer, Lisp_Vectorlike);
|
||||
}
|
||||
|
||||
DEFUN ("build-marker-counts", Fbuild_marker_counts, Sbuild_marker_counts, 0, 0,
|
||||
0, doc: /* */)
|
||||
(void)
|
||||
{
|
||||
Lisp_Object v = Fmake_vector (make_fixnum (30), Qnil);
|
||||
for (int i = 0; i < 30; ++i)
|
||||
ASET (v, i, make_int (build_marker_counts[i]));
|
||||
return v;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************
|
||||
Mark bit access functions
|
||||
|
|
@ -8568,8 +8555,7 @@ N should be nonnegative. */);
|
|||
defsubr (&Sgarbage_collect_maybe);
|
||||
defsubr (&Smemory_info);
|
||||
defsubr (&Smemory_use_counts);
|
||||
defsubr (&Sbuild_marker_counts);
|
||||
#if defined GNU_LINUX && defined __GLIBC__ && \
|
||||
#if defined GNU_LINUX && defined __GLIBC__ && \
|
||||
(__GLIBC__ > 2 || __GLIBC_MINOR__ >= 10)
|
||||
|
||||
defsubr (&Smalloc_info);
|
||||
|
|
|
|||
14
src/buffer.c
14
src/buffer.c
|
|
@ -736,7 +736,7 @@ clone_per_buffer_values (struct buffer *from, struct buffer *to)
|
|||
{
|
||||
struct Lisp_Marker *m = XMARKER (obj);
|
||||
|
||||
obj = build_marker (to, m->charpos, m->bytepos, 9);
|
||||
obj = build_marker (to, m->charpos, m->bytepos);
|
||||
XMARKER (obj)->insertion_type = m->insertion_type;
|
||||
}
|
||||
|
||||
|
|
@ -902,15 +902,15 @@ Interactively, CLONE and INHIBIT-BUFFER-HOOKS are nil. */)
|
|||
|
||||
bset_pt_marker (b->base_buffer,
|
||||
build_marker (b->base_buffer, b->base_buffer->pt,
|
||||
b->base_buffer->pt_byte, 13));
|
||||
b->base_buffer->pt_byte));
|
||||
|
||||
bset_begv_marker (b->base_buffer,
|
||||
build_marker (b->base_buffer, b->base_buffer->begv,
|
||||
b->base_buffer->begv_byte, 14));
|
||||
b->base_buffer->begv_byte));
|
||||
|
||||
bset_zv_marker (b->base_buffer,
|
||||
build_marker (b->base_buffer, b->base_buffer->zv,
|
||||
b->base_buffer->zv_byte, 15));
|
||||
b->base_buffer->zv_byte));
|
||||
|
||||
XMARKER (BVAR (b->base_buffer, zv_marker))->insertion_type = 1;
|
||||
}
|
||||
|
|
@ -918,9 +918,9 @@ Interactively, CLONE and INHIBIT-BUFFER-HOOKS are nil. */)
|
|||
if (NILP (clone))
|
||||
{
|
||||
/* Give the indirect buffer markers for its narrowing. */
|
||||
bset_pt_marker (b, build_marker (b, b->pt, b->pt_byte, 17));
|
||||
bset_begv_marker (b, build_marker (b, b->begv, b->begv_byte, 18));
|
||||
bset_zv_marker (b, build_marker (b, b->zv, b->zv_byte, 19));
|
||||
bset_pt_marker (b, build_marker (b, b->pt, b->pt_byte));
|
||||
bset_begv_marker (b, build_marker (b, b->begv, b->begv_byte));
|
||||
bset_zv_marker (b, build_marker (b, b->zv, b->zv_byte));
|
||||
XMARKER (BVAR (b, zv_marker))->insertion_type = 1;
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -982,7 +982,7 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos,
|
|||
/* Save point as marker before calling out to lisp. */
|
||||
if (NILP (string))
|
||||
record_unwind_protect (restore_point_unwind,
|
||||
build_marker (current_buffer, pt, pt_byte, 8));
|
||||
build_marker (current_buffer, pt, pt_byte));
|
||||
lgstring = safe_calln (Vauto_composition_function, AREF (rule, 2),
|
||||
pos, make_fixnum (to), font_object, string,
|
||||
direction);
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ DEFUN ("point-marker", Fpoint_marker, Spoint_marker, 0, 0, 0,
|
|||
doc: /* Return value of point, as a marker object. */)
|
||||
(void)
|
||||
{
|
||||
return build_marker (current_buffer, PT, PT_BYTE, 10);
|
||||
return build_marker (current_buffer, PT, PT_BYTE);
|
||||
}
|
||||
|
||||
DEFUN ("goto-char", Fgoto_char, Sgoto_char, 1, 1,
|
||||
|
|
@ -889,7 +889,7 @@ DEFUN ("point-min-marker", Fpoint_min_marker, Spoint_min_marker, 0, 0, 0,
|
|||
This is the beginning, unless narrowing (a buffer restriction) is in effect. */)
|
||||
(void)
|
||||
{
|
||||
return build_marker (current_buffer, BEGV, BEGV_BYTE, 11);
|
||||
return build_marker (current_buffer, BEGV, BEGV_BYTE);
|
||||
}
|
||||
|
||||
DEFUN ("point-max", Fpoint_max, Spoint_max, 0, 0, 0,
|
||||
|
|
@ -909,7 +909,7 @@ This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
|
|||
is in effect, in which case it is less. */)
|
||||
(void)
|
||||
{
|
||||
return build_marker (current_buffer, ZV, ZV_BYTE, 12);
|
||||
return build_marker (current_buffer, ZV, ZV_BYTE);
|
||||
}
|
||||
|
||||
DEFUN ("gap-position", Fgap_position, Sgap_position, 0, 0, 0,
|
||||
|
|
@ -3009,8 +3009,8 @@ save_restriction_save_1 (void)
|
|||
{
|
||||
Lisp_Object beg, end;
|
||||
|
||||
beg = build_marker (current_buffer, BEGV, BEGV_BYTE, 20);
|
||||
end = build_marker (current_buffer, ZV, ZV_BYTE, 21);
|
||||
beg = build_marker (current_buffer, BEGV, BEGV_BYTE);
|
||||
end = build_marker (current_buffer, ZV, ZV_BYTE);
|
||||
|
||||
/* END must move forward if text is inserted at its exact location. */
|
||||
XMARKER (end)->insertion_type = 1;
|
||||
|
|
|
|||
|
|
@ -5152,7 +5152,7 @@ extern Lisp_Object set_marker_restricted (Lisp_Object, Lisp_Object, Lisp_Object)
|
|||
extern Lisp_Object set_marker_both (Lisp_Object, Lisp_Object, ptrdiff_t, ptrdiff_t);
|
||||
extern Lisp_Object set_marker_restricted_both (Lisp_Object, Lisp_Object,
|
||||
ptrdiff_t, ptrdiff_t);
|
||||
extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t, int);
|
||||
extern Lisp_Object build_marker (struct buffer *, ptrdiff_t, ptrdiff_t);
|
||||
extern void syms_of_marker (void);
|
||||
|
||||
/* Defined in fileio.c. */
|
||||
|
|
|
|||
10
src/marker.c
10
src/marker.c
|
|
@ -236,7 +236,7 @@ buf_charpos_to_bytepos (struct buffer *b, ptrdiff_t charpos)
|
|||
cache the correspondence by creating a marker here.
|
||||
It will last until the next GC. */
|
||||
if (record)
|
||||
build_marker (b, best_below, best_below_byte, 4);
|
||||
build_marker (b, best_below, best_below_byte);
|
||||
|
||||
byte_char_debug_check (b, best_below, best_below_byte);
|
||||
|
||||
|
|
@ -261,7 +261,7 @@ buf_charpos_to_bytepos (struct buffer *b, ptrdiff_t charpos)
|
|||
cache the correspondence by creating a marker here.
|
||||
It will last until the next GC. */
|
||||
if (record)
|
||||
build_marker (b, best_above, best_above_byte, 5);
|
||||
build_marker (b, best_above, best_above_byte);
|
||||
|
||||
byte_char_debug_check (b, best_above, best_above_byte);
|
||||
|
||||
|
|
@ -389,7 +389,7 @@ buf_bytepos_to_charpos (struct buffer *b, ptrdiff_t bytepos)
|
|||
But don't do it if BUF_MARKERS is nil;
|
||||
that is a signal from Fset_buffer_multibyte. */
|
||||
if (record && BUF_MARKERS (b))
|
||||
build_marker (b, best_below, best_below_byte, 6);
|
||||
build_marker (b, best_below, best_below_byte);
|
||||
|
||||
byte_char_debug_check (b, best_below, best_below_byte);
|
||||
|
||||
|
|
@ -417,10 +417,10 @@ buf_bytepos_to_charpos (struct buffer *b, ptrdiff_t bytepos)
|
|||
that is a signal from Fset_buffer_multibyte. */
|
||||
#ifdef HAVE_MPS
|
||||
if (record && VECTORP (BUF_MARKERS (b)))
|
||||
build_marker (b, best_above, best_above_byte, 7);
|
||||
build_marker (b, best_above, best_above_byte);
|
||||
#else
|
||||
if (record && BUF_MARKERS (b))
|
||||
build_marker (b, best_above, best_above_byte, 7);
|
||||
build_marker (b, best_above, best_above_byte);
|
||||
#endif
|
||||
byte_char_debug_check (b, best_above, best_above_byte);
|
||||
|
||||
|
|
|
|||
|
|
@ -7774,7 +7774,7 @@ save_window_save (Lisp_Object window, struct Lisp_Vector *vector, ptrdiff_t i)
|
|||
if (EQ (window, selected_window))
|
||||
p->pointm = build_marker (XBUFFER (w->contents),
|
||||
BUF_PT (XBUFFER (w->contents)),
|
||||
BUF_PT_BYTE (XBUFFER (w->contents)), 1);
|
||||
BUF_PT_BYTE (XBUFFER (w->contents)));
|
||||
else
|
||||
p->pointm = Fcopy_marker (w->pointm, Qnil);
|
||||
p->old_pointm = Fcopy_marker (w->old_pointm, Qnil);
|
||||
|
|
|
|||
|
|
@ -13621,7 +13621,7 @@ format_mode_line_unwind_data (struct frame *target_frame,
|
|||
unwinding (Bug#32777). */
|
||||
ASET (vector, 10, buffer);
|
||||
current_buffer = b;
|
||||
ASET (vector, 11, build_marker (current_buffer, PT, PT_BYTE, 2));
|
||||
ASET (vector, 11, build_marker (current_buffer, PT, PT_BYTE));
|
||||
current_buffer = cb;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue