]> git.eshelyaron.com Git - emacs.git/commitdiff
* comint.el (comint-exec-1): Raise an error if
authorMichael Albinus <michael.albinus@gmx.de>
Wed, 22 Aug 2007 19:47:57 +0000 (19:47 +0000)
committerMichael Albinus <michael.albinus@gmx.de>
Wed, 22 Aug 2007 19:47:57 +0000 (19:47 +0000)
`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.

lisp/ChangeLog
lisp/comint.el
lisp/shell.el

index 6a4e181ac6c2b19c8136e2416529d6266827ecdc..dcde501f18a28b80eacfc976a0818b2435631b78 100644 (file)
@@ -1,3 +1,11 @@
+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).
index 23a78bba00938ae9363fe77e445a54f24aba2fa1..e8a6a139db5ac6e0f36ad996bffda8437b951bca 100644 (file)
@@ -783,6 +783,8 @@ buffer.  The hook `comint-exec-hook' is run after each exec."
                         ;; 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)))
index 03fbf46df67b41ab416277deed9794543441e691..6c09654a0e57db602444a617ced3e6750ad28a76 100644 (file)
@@ -511,6 +511,9 @@ Sentinels will always get the two parameters PROCESS and EVENT."
 (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',
@@ -540,7 +543,14 @@ Otherwise, one argument `-i' is passed to the shell.
    (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).