]> git.eshelyaron.com Git - emacs.git/commitdiff
(shell-command-on-region): Handle errors and signals
authorAndreas Schwab <schwab@suse.de>
Sat, 29 Jun 2002 18:08:32 +0000 (18:08 +0000)
committerAndreas Schwab <schwab@suse.de>
Sat, 29 Jun 2002 18:08:32 +0000 (18:08 +0000)
from shell command execution.

lisp/ChangeLog
lisp/simple.el

index fd5ffe2b3c87a4be5cbf861eb08fa21d969c580c..63a07fa7933d08cfe5478d02e9558c76d391fe99 100644 (file)
@@ -1,5 +1,8 @@
 2002-06-29  Andreas Schwab  <schwab@suse.de>
 
+       * simple.el (shell-command-on-region): Handle errors and signals
+       from shell command execution.
+
        * dired.el (dired-view-file): Quote file name for
        dired-run-shell-command.
 
index 32f38790b38968a9a89777847e48e5fbaab6bdd7..0b91abb8ecbc2b675fc5266a4ba2700313e1c449 100644 (file)
@@ -1466,8 +1466,7 @@ specifies the value of ERROR-BUFFER."
       ;; No prefix argument: put the output in a temp buffer,
       ;; replacing its entire contents.
       (let ((buffer (get-buffer-create
-                    (or output-buffer "*Shell Command Output*")))
-           (success nil))
+                    (or output-buffer "*Shell Command Output*"))))
        (unwind-protect
            (if (eq buffer (current-buffer))
                ;; If the input is the same buffer as the output,
@@ -1499,12 +1498,15 @@ specifies the value of ERROR-BUFFER."
                                             (list buffer error-file)
                                           buffer)
                                         nil shell-command-switch command)))
-         (setq success (and exit-status (equal 0 exit-status)))
          ;; Report the output.
          (with-current-buffer buffer
            (setq mode-line-process 
-                 (if (not success)
-                   (concat (format " - Exit [%d]" exit-status)))))
+                 (cond ((null exit-status)
+                        " - Error")
+                       ((stringp exit-status)
+                        (format " - Signal [%s]" exit-status))
+                       ((not (equal 0 exit-status))
+                        (format " - Exit [%d]" exit-status)))))
          (if (with-current-buffer buffer (> (point-max) (point-min)))
              ;; There's some output, display it
              (display-message-or-buffer buffer)
@@ -1514,11 +1516,17 @@ specifies the value of ERROR-BUFFER."
                            (< 0 (nth 7 (file-attributes error-file))))
                       "some error output"
                     "no output")))
-             (if (equal 0 exit-status)
-                 (message "(Shell command succeeded with %s)"
-                          output)
-               (message "(Shell command failed with code %d and %s)"
-                        exit-status output)))
+             (cond ((null exit-status)
+                    (message "(Shell command failed with error)"))
+                   ((equal 0 exit-status)
+                    (message "(Shell command succeeded with %s)"
+                             output))
+                   ((stringp exit-status)
+                    (message "(Shell command killed by signal %s)"
+                             exit-status))
+                   (t
+                    (message "(Shell command failed with code %d and %s)"
+                             exit-status output))))
            ;; Don't kill: there might be useful info in the undo-log.
            ;; (kill-buffer buffer)
            ))))