diff options
author | Basil L. Contovounesios <contovob@tcd.ie> | 2020-11-18 12:53:03 +0000 |
---|---|---|
committer | Basil L. Contovounesios <contovob@tcd.ie> | 2020-11-24 16:50:37 +0000 |
commit | dea3d6aa18e54f0d8d75cd219b511bac5b3c87b1 (patch) | |
tree | f88602aab719cf200a3c265c3a893c415aa23c14 /lisp | |
parent | b2ee6650243ed2777f3a6c400f194f770f00da6f (diff) | |
download | emacs-dea3d6aa18e54f0d8d75cd219b511bac5b3c87b1.tar.gz |
Fix handling of defcustom :local tag
For discussion, see the following emacs-devel thread:
https://lists.gnu.org/r/emacs-devel/2020-11/msg00734.html
* lisp/custom.el (custom-declare-variable): Delay call to
make-variable-buffer-local until after user option has been
initialized with a value. Otherwise the user option may be
initialized to nil.
* test/lisp/custom-tests.el (custom--test-local-option)
(custom--test-permanent-option): New :local user options.
(custom-test-local-option): New test for defcustom :local keyword.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/custom.el | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lisp/custom.el b/lisp/custom.el index 885c486c5e4..cdfd2212169 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -157,7 +157,9 @@ set to nil, as the value is no longer rogue." (if (keywordp doc) (error "Doc string is missing")) (let ((initialize #'custom-initialize-reset) - (requests nil)) + (requests nil) + ;; Whether automatically buffer-local. + buffer-local) (unless (memq :group args) (custom-add-to-group (custom-current-group) symbol 'custom-variable)) (while args @@ -183,7 +185,7 @@ set to nil, as the value is no longer rogue." (put symbol 'safe-local-variable value)) ((eq keyword :local) (when (memq value '(t permanent)) - (make-variable-buffer-local symbol)) + (setq buffer-local t)) (when (eq value 'permanent) (put symbol 'permanent-local t))) ((eq keyword :type) @@ -205,7 +207,9 @@ set to nil, as the value is no longer rogue." (put symbol 'custom-requests requests) ;; Do the actual initialization. (unless custom-dont-initialize - (funcall initialize symbol default))) + (funcall initialize symbol default)) + (when buffer-local + (make-variable-buffer-local symbol))) (run-hooks 'custom-define-hook) symbol) |