Commit 27bdc650 authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(setenv): Get rid of arg UNSET. Interactive unsetting

now works by passing nil as arg.
parent 75669e02
......@@ -90,28 +90,30 @@ Use `$$' to insert a single dollar sign."
;; Fixme: Should `process-environment' be recoded if LC_CTYPE &c is set?
(defun setenv (variable &optional value unset substitute-env-vars)
(defun setenv (variable &optional value substitute-env-vars)
"Set the value of the environment variable named VARIABLE to VALUE.
VARIABLE should be a string. VALUE is optional; if not provided or
nil, the environment variable VARIABLE will be removed. UNSET
if non-nil means to remove VARIABLE from the environment.
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
variables in VALUE with `substitute-env-vars', where see.
Value is the new value if VARIABLE, or nil if removed from the
environment.
nil, the environment variable VARIABLE will be removed.
Interactively, a prefix argument means to unset the variable.
Interactively, the current value (if any) of the variable
appears at the front of the history list when you type in the new value.
Interactively, always replace environment variables in the new value.
SUBSTITUTE-ENV-VARS, if non-nil, means to substitute environment
variables in VALUE with `substitute-env-vars', which see.
This is normally used only for interactive calls.
The return value is the new value of VARIABLE, or nil if
it was removed from the environment.
This function works by modifying `process-environment'.
As a special case, setting variable `TZ' calls `set-time-zone-rule' as
a side-effect."
(interactive
(if current-prefix-arg
(list (read-envvar-name "Clear environment variable: " 'exact) nil t)
(list (read-envvar-name "Clear environment variable: " 'exact) nil)
(let* ((var (read-envvar-name "Set environment variable: " nil))
(value (getenv var)))
(when value
......@@ -121,7 +123,6 @@ a side-effect."
(read-from-minibuffer (format "Set %s to value: " var)
nil nil nil 'setenv-history
value)
nil
t))))
(if (and (multibyte-string-p variable) locale-coding-system)
(let ((codings (find-coding-systems-string (concat variable value))))
......@@ -129,10 +130,9 @@ a side-effect."
(memq (coding-system-base locale-coding-system) codings))
(error "Can't encode `%s=%s' with `locale-coding-system'"
variable (or value "")))))
(if unset
(setq value nil)
(if substitute-env-vars
(setq value (substitute-env-vars value))))
(and value
substitute-env-vars
(setq value (substitute-env-vars value)))
(if (multibyte-string-p variable)
(setq variable (encode-coding-string variable locale-coding-system)))
(if (and value (multibyte-string-p value))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment