]> git.eshelyaron.com Git - emacs.git/commitdiff
Add :local specifier to defcustom
authorJuanma Barranquero <lekktu@gmail.com>
Thu, 27 Jun 2019 11:26:45 +0000 (13:26 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 27 Jun 2019 11:26:45 +0000 (13:26 +0200)
* lisp/custom.el (custom-declare-variable): Allow the new :local
parameter (bug#14591).
(defcustom): Document it.

etc/NEWS
lisp/custom.el

index 29b74ee682be07e252fcb51ef329c09971efb16b..10882e4ec4539b0a710f5f386fe485a01386003d 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1790,6 +1790,11 @@ valid event type.
 \f
 * Lisp Changes in Emacs 27.1
 
+** defcustom now takes a :local keyword that can be either t or
+`permanent', which mean that the variable should be automatically
+buffer-local.  `permanent' also sets the variable's
+`permanent-local' property.
+
 +++
 ** The new macro `with-suppressed-warnings' can be used to suppress
 specific byte-compile warnings.
index 29bf9e570a8b089cd07dad26f99ccc73c64462a2..736460fec7b21bb5f933a3b258c7b950c20879bb 100644 (file)
@@ -181,6 +181,11 @@ set to nil, as the value is no longer rogue."
                 (put symbol 'risky-local-variable value))
                ((eq keyword :safe)
                 (put symbol 'safe-local-variable value))
+                ((eq keyword :local)
+                 (when (memq value '(t permanent))
+                   (make-variable-buffer-local symbol))
+                 (when (eq value 'permanent)
+                   (put symbol 'permanent-local t)))
                ((eq keyword :type)
                 (put symbol 'custom-type (purecopy value)))
                ((eq keyword :options)
@@ -251,6 +256,9 @@ The following keywords are meaningful:
 :risky Set SYMBOL's `risky-local-variable' property to VALUE.
 :safe  Set SYMBOL's `safe-local-variable' property to VALUE.
         See Info node `(elisp) File Local Variables'.
+:local  If VALUE is t, mark SYMBOL as automatically buffer-local.
+        If VALUE is `permanent', also set SYMBOL's `permanent-local'
+        property to t.
 
 The following common keywords are also meaningful.