From: Gregory Heytings Date: Wed, 16 Aug 2023 15:58:39 +0000 (+0000) Subject: Simplify 'with-restriction' and 'without-restriction' X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c287a0fdc7e3f70d819ef8efd1d7922b33df164c;p=emacs.git 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. Suggested by Mattias EngdegÄrd. --- diff --git a/lisp/subr.el b/lisp/subr.el index 08e6f816dee..616f0a8dfb6 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4116,17 +4116,10 @@ buffer, use `without-restriction' with the same LABEL argument. \(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 - (if label - (internal--labeled-narrow-to-region start end label) - (narrow-to-region start end)) - (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. @@ -4139,17 +4132,8 @@ by `with-restriction' with the same LABEL argument are lifted. \(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--labeled-widen 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.