Function: w32-check-shell-configuration
w32-check-shell-configuration is an interactive and byte-compiled
function defined in w32-fns.el.gz.
Signature
(w32-check-shell-configuration)
Documentation
Check the configuration of shell variables on Windows.
This function is invoked after loading the init files and processing the command line arguments. It issues a warning if the user or site has configured the shell with inappropriate settings.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/w32-fns.el.gz
(defvar w32-quote-process-args) ;; defined in w32proc.c
(defun w32-check-shell-configuration ()
"Check the configuration of shell variables on Windows.
This function is invoked after loading the init files and processing
the command line arguments. It issues a warning if the user or site
has configured the shell with inappropriate settings."
(interactive)
(let ((prev-buffer (current-buffer))
(buffer (get-buffer-create "*Shell Configuration*"))
(system-shell))
(set-buffer buffer)
(erase-buffer)
(if (w32-system-shell-p (getenv "ESHELL"))
(insert (format "Warning! The ESHELL environment variable uses %s.
You probably want to change it so that it uses cmdproxy.exe instead.\n\n"
(getenv "ESHELL"))))
(if (w32-system-shell-p (getenv "SHELL"))
(insert (format "Warning! The SHELL environment variable uses %s.
You probably want to change it so that it uses cmdproxy.exe instead.\n\n"
(getenv "SHELL"))))
(if (w32-system-shell-p shell-file-name)
(insert (format "Warning! shell-file-name uses %s.
You probably want to change it so that it uses cmdproxy.exe instead.\n\n"
shell-file-name)))
(if (and (boundp 'explicit-shell-file-name)
(w32-system-shell-p explicit-shell-file-name))
(insert (format "Warning! explicit-shell-file-name uses %s.
You probably want to change it so that it uses cmdproxy.exe instead.\n\n"
explicit-shell-file-name)))
(setq system-shell (> (buffer-size) 0))
;; Allow user to specify that they really do want to use one of the
;; "system" shells, despite the drawbacks, but still warn if
;; shell-command-switch doesn't match.
(if w32-allow-system-shell
(erase-buffer))
(cond (system-shell
;; System shells.
(if (string-equal "-c" shell-command-switch)
(insert "Warning! shell-command-switch is \"-c\".
You should set this to \"/c\" when using a system shell.\n\n"))
(if w32-quote-process-args
(insert "Warning! w32-quote-process-args is t.
You should set this to nil when using a system shell.\n\n")))
;; Non-system shells.
(t
(if (string-equal "/c" shell-command-switch)
(insert "Warning! shell-command-switch is \"/c\".
You should set this to \"-c\" when using a non-system shell.\n\n"))
(if (not w32-quote-process-args)
(insert "Warning! w32-quote-process-args is nil.
You should set this to t when using a non-system shell.\n\n"))))
(if (> (buffer-size) 0)
(display-buffer buffer)
(kill-buffer buffer))
(set-buffer prev-buffer)))