[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master a0aa1d4 5/7: New function record_unwind_protect_exc
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] master a0aa1d4 5/7: New function record_unwind_protect_excursion |
Date: |
Thu, 7 Jun 2018 22:11:57 -0400 (EDT) |
branch: master
commit a0aa1d4ecc123d652285ef10ea62ed55c6c118d6
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
New function record_unwind_protect_excursion
This simplifies callers a bit, and will simplify future changes.
* src/eval.c (record_unwind_protect_excursion): New function.
* src/buffer.c (Fkill_buffer):
* src/bytecode.c (exec_byte_code):
* src/editfns.c (Fsave_excursion, Freplace_buffer_contents):
* src/lread.c (readevalloop, Feval_buffer):
* src/window.c (scroll_command):
Use it.
---
src/buffer.c | 2 +-
src/bytecode.c | 3 +--
src/editfns.c | 4 ++--
src/eval.c | 6 ++++++
src/lisp.h | 1 +
src/lread.c | 6 +++---
src/window.c | 2 +-
7 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/src/buffer.c b/src/buffer.c
index 1483737..244c185 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1696,7 +1696,7 @@ cleaning up all windows currently displaying the buffer
to be killed. */)
{
ptrdiff_t count = SPECPDL_INDEX ();
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_protect_excursion ();
set_buffer_internal (b);
/* First run the query functions; if any query is answered no,
diff --git a/src/bytecode.c b/src/bytecode.c
index 55b193f..772cc98 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -739,8 +739,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector,
Lisp_Object maxdepth,
NEXT;
CASE (Bsave_excursion):
- record_unwind_protect (save_excursion_restore,
- save_excursion_save ());
+ record_unwind_protect_excursion ();
NEXT;
CASE (Bsave_current_buffer): /* Obsolete since ??. */
diff --git a/src/editfns.c b/src/editfns.c
index 608304c..2377ceb 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -1068,7 +1068,7 @@ usage: (save-excursion &rest BODY) */)
register Lisp_Object val;
ptrdiff_t count = SPECPDL_INDEX ();
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_protect_excursion ();
val = Fprogn (args);
return unbind_to (count, val);
@@ -3242,7 +3242,7 @@ buffer stay intact. */)
Fundo_boundary ();
ptrdiff_t count = SPECPDL_INDEX ();
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_protect_excursion ();
ptrdiff_t i = size_a;
ptrdiff_t j = size_b;
diff --git a/src/eval.c b/src/eval.c
index 90d8c33..86011a2 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3415,6 +3415,12 @@ record_unwind_protect_int (void (*function) (int), int
arg)
}
void
+record_unwind_protect_excursion (void)
+{
+ record_unwind_protect (save_excursion_restore, save_excursion_save ());
+}
+
+void
record_unwind_protect_void (void (*function) (void))
{
specpdl_ptr->unwind_void.kind = SPECPDL_UNWIND_VOID;
diff --git a/src/lisp.h b/src/lisp.h
index 5b296cd..10012b2 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3983,6 +3983,7 @@ extern void record_unwind_protect (void (*)
(Lisp_Object), Lisp_Object);
extern void record_unwind_protect_ptr (void (*) (void *), void *);
extern void record_unwind_protect_int (void (*) (int), int);
extern void record_unwind_protect_void (void (*) (void));
+extern void record_unwind_protect_excursion (void);
extern void record_unwind_protect_nothing (void);
extern void clear_unwind_protect (ptrdiff_t);
extern void set_unwind_protect (ptrdiff_t, void (*) (Lisp_Object),
Lisp_Object);
diff --git a/src/lread.c b/src/lread.c
index 239c66c..d2c7eae2 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -1976,11 +1976,11 @@ readevalloop (Lisp_Object readcharfun,
if (!NILP (start))
{
/* Switch to the buffer we are reading from. */
- record_unwind_protect (save_excursion_restore, save_excursion_save
());
+ record_unwind_protect_excursion ();
set_buffer_internal (b);
/* Save point in it. */
- record_unwind_protect (save_excursion_restore, save_excursion_save
());
+ record_unwind_protect_excursion ();
/* Save ZV in it. */
record_unwind_protect (save_restriction_restore,
save_restriction_save ());
/* Those get unbound after we read one expression. */
@@ -2137,7 +2137,7 @@ This function preserves the position of point. */)
specbind (Qeval_buffer_list, Fcons (buf, Veval_buffer_list));
specbind (Qstandard_output, tem);
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_protect_excursion ();
BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
specbind (Qlexical_binding, lisp_file_lexically_bound_p (buf) ? Qt : Qnil);
BUF_TEMP_SET_PT (XBUFFER (buf), BUF_BEGV (XBUFFER (buf)));
diff --git a/src/window.c b/src/window.c
index f654d87..2c6ff01 100644
--- a/src/window.c
+++ b/src/window.c
@@ -5656,7 +5656,7 @@ scroll_command (Lisp_Object window, Lisp_Object n, int
direction)
the moment. But don't screw up if window_scroll gets an error. */
if (XBUFFER (w->contents) != current_buffer)
{
- record_unwind_protect (save_excursion_restore, save_excursion_save ());
+ record_unwind_protect_excursion ();
Fset_buffer (w->contents);
}
- [Emacs-diffs] master updated (9966842 -> e2a9800), Paul Eggert, 2018/06/07
- [Emacs-diffs] master 4d176b7 3/7: Fix ftfont_open2 failure cleanup, Paul Eggert, 2018/06/07
- [Emacs-diffs] master 7c16392 1/7: Fix GC-related commentary, Paul Eggert, 2018/06/07
- [Emacs-diffs] master b76389f 2/7: Don’t over-align if WIDE_EMACS_INT, Paul Eggert, 2018/06/07
- [Emacs-diffs] master a064128 4/7: * src/.gdbinit: Omit soon-obsolete comment., Paul Eggert, 2018/06/07
- [Emacs-diffs] master e2a9800 7/7: Fit kill_buffer_xwidgets into 80, Paul Eggert, 2018/06/07
- [Emacs-diffs] master a0aa1d4 5/7: New function record_unwind_protect_excursion,
Paul Eggert <=
- [Emacs-diffs] master 0e1bfd3 6/7: Minor cleanup of save_excursion_restore, Paul Eggert, 2018/06/07