From 4897d6ade80e9928b7f25d0fb6f970c4975c43bd Mon Sep 17 00:00:00 2001 From: Gregory Heytings Date: Fri, 7 Jul 2023 09:54:32 +0000 Subject: [PATCH] Simplify 'with-restriction' and 'without-restriction' * lisp/subr.el (with-restriction, without-restriction): Merge the bodies of the 'internal--with-restriction' and 'internal--without-restriction' function into the macros. The result is more efficient than a funcall. (internal--with-restriction, internal--without-restriction): Remove. --- lisp/subr.el | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index 85adef5b689..42a6cfec514 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3973,16 +3973,10 @@ with-restriction \(fn START END [:label LABEL] BODY)" (declare (indent 2) (debug t)) (if (eq (car rest) :label) - `(internal--with-restriction ,start ,end (lambda () ,@(cddr rest)) - ,(cadr rest)) - `(internal--with-restriction ,start ,end (lambda () ,@rest)))) - -(defun internal--with-restriction (start end body &optional label) - "Helper function for `with-restriction', which see." - (save-restriction - (narrow-to-region start end) - (if label (internal--label-restriction label)) - (funcall body))) + `(save-restriction + (internal--labeled-narrow-to-region ,start ,end ,(cadr rest)) + ,@(cddr rest)) + `(save-restriction (narrow-to-region ,start ,end) ,@rest))) (defmacro without-restriction (&rest rest) "Execute BODY without restrictions. @@ -3996,16 +3990,8 @@ without-restriction \(fn [:label LABEL] BODY)" (declare (indent 0) (debug t)) (if (eq (car rest) :label) - `(internal--without-restriction (lambda () ,@(cddr rest)) - ,(cadr rest)) - `(internal--without-restriction (lambda () ,@rest)))) - -(defun internal--without-restriction (body &optional label) - "Helper function for `without-restriction', which see." - (save-restriction - (if label (internal--unlabel-restriction label)) - (widen) - (funcall body))) + `(save-restriction (internal--labeled-widen ,(cadr rest)) ,@(cddr rest)) + `(save-restriction (widen) ,@rest))) (defun find-tag-default-bounds () "Determine the boundaries of the default tag, based on text at point. -- 2.39.2