summaryrefslogtreecommitdiff
path: root/src/editfns.c
diff options
context:
space:
mode:
authorGregory Heytings <gregory@heytings.org>2022-11-26 22:38:12 +0000
committerGregory Heytings <gregory@heytings.org>2022-11-26 23:38:40 +0100
commit321d4e61551a0f6dfb1abfc0b54e6177735bde58 (patch)
treea774e7961eb13fae476ad678201f654e586c1d37 /src/editfns.c
parent1bf0b72eb758440bc4571ebcb49ef0a59f37e51a (diff)
downloademacs-321d4e61551a0f6dfb1abfc0b54e6177735bde58.tar.gz
Minor improvements for locked narrowing
* src/editfns.c (narrowing_lock_pop): Clarify comment, replace assertion by return. (narrowing_locks_restore): Add comments. * lisp/subr.el (with-narrowing, internal--with-narrowing): Simplify, use a single helper function with an optional argument.
Diffstat (limited to 'src/editfns.c')
-rw-r--r--src/editfns.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/editfns.c b/src/editfns.c
index 5bfb0b86d14..e99a007a70c 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -2712,12 +2712,14 @@ narrowing_lock_push (Lisp_Object buf, Lisp_Object lock)
XCAR (XCDR (buffer_locks)))));
}
-/* Remove the innermost lock in BUF from the narrowing_lock alist. */
+/* Remove the innermost lock in BUF from the narrowing_lock alist.
+ Do nothing if BUF is not in narrowing_lock. */
static void
narrowing_lock_pop (Lisp_Object buf)
{
Lisp_Object buffer_locks = assq_no_quit (buf, narrowing_locks);
- eassert (! NILP (buffer_locks));
+ if (NILP (buffer_locks))
+ return;
if (EQ (narrowing_lock_peek_tag (buf), Qoutermost_narrowing))
narrowing_locks = Fdelq (Fassoc (buf, narrowing_locks, Qnil),
narrowing_locks);
@@ -2779,8 +2781,12 @@ narrowing_locks_restore (Lisp_Object buf_and_saved_locks)
if (NILP (buf_and_saved_locks))
return;
Lisp_Object buf = XCAR (buf_and_saved_locks);
+ /* This cannot fail when buf_and_saved_locks was returned by
+ narrowing_locks_save. */
eassert (BUFFERP (buf));
Lisp_Object saved_locks = XCDR (buf_and_saved_locks);
+ /* This cannot fail when buf_and_saved_locks was returned by
+ narrowing_locks_save. */
eassert (! NILP (saved_locks));
Lisp_Object current_locks = assq_no_quit (buf, narrowing_locks);
if (! NILP (current_locks))