+2007-08-22 Michael Albinus <michael.albinus@gmx.de>
+
+ * comint.el (comint-exec-1): Raise an error if
+ `start-file-process' does not return a process object.
+
+ * shell.el (shell): Prompt for `default-directory' if it is a
+ remote file name, and if called with a prefix arg.
+
2007-08-22 Sam Steingold <sds@gnu.org>
* pcvs.el (cvs-vc-command-advice): Fix a typo in code (file->files).
;; first look relative to the current directory.
(cons default-directory exec-path) exec-path)))
(setq proc (apply 'start-file-process name buffer command switches)))
+ ;; Some file name handler cannot start a process, fe ange-ftp.
+ (unless (processp proc) (error "No process started"))
(let ((coding-systems (process-coding-system proc)))
(setq decoding (car coding-systems)
encoding (cdr coding-systems)))
(defun shell (&optional buffer)
"Run an inferior shell, with I/O through BUFFER (which defaults to `*shell*').
Interactively, a prefix arg means to prompt for BUFFER.
+If `default-directory' is a remote file name, it is also prompted
+to change if called with a prefix arg.
+
If BUFFER exists but shell process is not running, make new shell.
If BUFFER exists and shell process is running, just switch to BUFFER.
Program used comes from variable `explicit-shell-file-name',
(list
(and current-prefix-arg
(read-buffer "Shell buffer: "
- (generate-new-buffer-name "*shell*")))))
+ (generate-new-buffer-name "*shell*"))
+ (file-remote-p default-directory)
+ ;; It must be possible to declare a local default-directory.
+ (setq default-directory
+ (expand-file-name
+ (read-file-name
+ "Default directory: " default-directory default-directory
+ t nil 'file-directory-p))))))
(setq buffer (get-buffer-create (or buffer "*shell*")))
;; Pop to buffer, so that the buffer's window will be correctly set
;; when we call comint (so that comint sets the COLUMNS env var properly).