changeset 46845:e06b5768debd

(set-variable): If given a prefix argument, set variable buffer-locally. Give locality status in prompt.
author Richard M. Stallman <rms@gnu.org>
date Fri, 09 Aug 2002 14:14:06 +0000
parents 76c69bfa8ba8
children 120cf6ced12e
files lisp/simple.el
diffstat 1 files changed, 16 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Fri Aug 09 12:15:54 2002 +0000
+++ b/lisp/simple.el	Fri Aug 09 14:14:06 2002 +0000
@@ -3634,7 +3634,7 @@
 (defvar set-variable-value-history nil
   "History of values entered with `set-variable'.")
 
-(defun set-variable (var val)
+(defun set-variable (var val &optional make-local)
   "Set VARIABLE to VALUE.  VALUE is a Lisp object.
 When using this interactively, enter a Lisp object for VALUE.
 If you want VALUE to be a string, you must surround it with doublequotes.
@@ -3644,7 +3644,9 @@
 it were the arg to `interactive' (which see) to interactively read VALUE.
 
 If VARIABLE has been defined with `defcustom', then the type information
-in the definition is used to check that VALUE is valid."
+in the definition is used to check that VALUE is valid.
+
+With a prefix argument, set VARIABLE to VALUE buffer-locally."
   (interactive
    (let* ((default-var (variable-at-point))
           (var (if (symbolp default-var)
@@ -3653,7 +3655,13 @@
                  (read-variable "Set variable: ")))
 		      (minibuffer-help-form '(describe-variable var))
 		      (prop (get var 'variable-interactive))
-		      (prompt (format "Set %s to value: " var))
+		      (prompt (format "Set %s%s to value: " var
+				      (cond ((local-variable-p var)
+					     " (buffer-local)")
+					    ((or current-prefix-arg
+						 (local-variable-if-set-p var))
+					     " buffer-locally")
+					    (t " globally"))))
 		      (val (if prop
 			       ;; Use VAR's `variable-interactive' property
 			       ;; as an interactive spec for prompting.
@@ -3663,7 +3671,7 @@
 			     (read
 			      (read-string prompt nil
 					   'set-variable-value-history)))))
-		 (list var val)))
+		 (list var val current-prefix-arg)))
 
   (let ((type (get var 'custom-type)))
     (when type
@@ -3673,6 +3681,10 @@
       (unless (widget-apply type :match val)
 	(error "Value `%S' does not match type %S of %S"
 	       val (car type) var))))
+
+  (if make-local
+      (make-local-variable var))
+	
   (set var val)
 
   ;; Force a thorough redisplay for the case that the variable