]> git.eshelyaron.com Git - emacs.git/commitdiff
Move buffer-local-set-state to subr because it's used at runtime
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 6 May 2022 14:09:38 +0000 (16:09 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 6 May 2022 14:09:38 +0000 (16:09 +0200)
* lisp/subr.el (buffer-local-set-state)
(buffer-local-set-state--get, buffer-local-restore-state): Moved
from easy-mmode.el because they have to be available run-time.

lisp/emacs-lisp/easy-mmode.el
lisp/ldefs-boot.el
lisp/subr.el
test/lisp/emacs-lisp/easy-mmode-tests.el
test/lisp/subr-tests.el

index 2568eaeb76a1bcb4d87da3db87a8d8d28f39eca5..54cac1161681ba75f8da09dadb3d7bf957895705 100644 (file)
@@ -825,42 +825,6 @@ Interactively, COUNT is the prefix numeric argument, and defaults to 1."
            ,@body))
        (put ',prev-sym 'definition-name ',base))))
 
-\f
-(defmacro buffer-local-set-state (&rest pairs)
-  "Like `setq-local', but allow restoring the previous state of locals later.
-This macro returns an object that can be passed to `buffer-local-restore-state'
-in order to restore the state of the local variables set via this macro.
-
-\(fn [VARIABLE VALUE]...)"
-  (declare (debug setq))
-  (unless (zerop (mod (length pairs) 2))
-    (error "PAIRS must have an even number of variable/value members"))
-  `(prog1
-       (buffer-local-set-state--get ',pairs)
-     (setq-local ,@pairs)))
-
-;;;###autoload
-(defun buffer-local-set-state--get (pairs)
-  (let ((states nil))
-    (while pairs
-      (push (list (car pairs)
-                  (and (boundp (car pairs))
-                       (local-variable-p (car pairs)))
-                  (and (boundp (car pairs))
-                       (symbol-value (car pairs))))
-            states)
-      (setq pairs (cddr pairs)))
-    (nreverse states)))
-
-;;;###autoload
-(defun buffer-local-restore-state (states)
-  "Restore values of buffer-local variables recorded in STATES.
-STATES should be an object returned by `buffer-local-set-state'."
-  (pcase-dolist (`(,variable ,local ,value) states)
-    (if local
-        (set variable value)
-      (kill-local-variable variable))))
-
 (provide 'easy-mmode)
 
 ;;; easy-mmode.el ends here
index c0a16f9198a190f8f70bd95ed516708c05a10e76..b79c6b2a08bd7f7d9b5ddee972d634d3455ad7a8 100644 (file)
@@ -8852,18 +8852,7 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
 
 (function-put 'easy-mmode-defsyntax 'lisp-indent-function '1)
 
-(autoload 'buffer-local-set-state--get "easy-mmode" "\
-
-
-\(fn PAIRS)" nil nil)
-
-(autoload 'buffer-local-restore-state "easy-mmode" "\
-Restore buffer local variable values in STATES.
-STATES is an object returned by `buffer-local-set-state'.
-
-\(fn STATES)" nil nil)
-
-(register-definition-prefixes "easy-mmode" '("buffer-local-set-state" "easy-mmode-"))
+(register-definition-prefixes "easy-mmode" '("easy-mmode-"))
 
 ;;;***
 \f
index dec3b9190ed24ff9bb7b956fb12bfd5ff21d8fe1..5af802fa18dafe7c8afb1daa96291a57afe74725 100644 (file)
@@ -207,6 +207,39 @@ Also see `local-variable-p'."
     (:success t)
     (void-variable nil)))
 
+(defmacro buffer-local-set-state (&rest pairs)
+  "Like `setq-local', but allow restoring the previous state of locals later.
+This macro returns an object that can be passed to `buffer-local-restore-state'
+in order to restore the state of the local variables set via this macro.
+
+\(fn [VARIABLE VALUE]...)"
+  (declare (debug setq))
+  (unless (zerop (mod (length pairs) 2))
+    (error "PAIRS must have an even number of variable/value members"))
+  `(prog1
+       (buffer-local-set-state--get ',pairs)
+     (setq-local ,@pairs)))
+
+(defun buffer-local-set-state--get (pairs)
+  (let ((states nil))
+    (while pairs
+      (push (list (car pairs)
+                  (and (boundp (car pairs))
+                       (local-variable-p (car pairs)))
+                  (and (boundp (car pairs))
+                       (symbol-value (car pairs))))
+            states)
+      (setq pairs (cddr pairs)))
+    (nreverse states)))
+
+(defun buffer-local-restore-state (states)
+  "Restore values of buffer-local variables recorded in STATES.
+STATES should be an object returned by `buffer-local-set-state'."
+  (pcase-dolist (`(,variable ,local ,value) states)
+    (if local
+        (set variable value)
+      (kill-local-variable variable))))
+
 (defmacro push (newelt place)
   "Add NEWELT to the list stored in the generalized variable PLACE.
 This is morally equivalent to (setf PLACE (cons NEWELT PLACE)),
index 697bf6c2152cd7659f66b10db7e03ad89fb4aec7..f6d0719672721a53bc289a01fd00253ad4ea8001 100644 (file)
     (easy-mmode-test-mode 'toggle)
     (should (eq easy-mmode-test-mode t))))
 
-(ert-deftest test-local-set-state ()
-  (setq global 1)
-  (with-temp-buffer
-    (setq-local local 2)
-    (let ((state (buffer-local-set-state global 10
-                                         local 20
-                                         unexist 30)))
-      (buffer-local-restore-state state)
-      (should (= global 1))
-      (should (= local 2))
-      (should-not (boundp 'unexist)))))
-
 ;;; easy-mmode-tests.el ends here
index 3725f180f3ae73a3158f073f968e827555db36c6..6bcac2a5eba55169e9d7767eb851558e7acd2367 100644 (file)
@@ -1058,5 +1058,17 @@ final or penultimate step during initialization."))
   (should (equal (kbd "C-x ( C-d C-x )") "\ 4"))
   (should (equal (kbd "C-x ( C-x )") "")))
 
+(ert-deftest test-local-set-state ()
+  (setq global 1)
+  (with-temp-buffer
+    (setq-local local 2)
+    (let ((state (buffer-local-set-state global 10
+                                         local 20
+                                         unexist 30)))
+      (buffer-local-restore-state state)
+      (should (= global 1))
+      (should (= local 2))
+      (should-not (boundp 'unexist)))))
+
 (provide 'subr-tests)
 ;;; subr-tests.el ends here