# HG changeset patch # User Dave Love # Date 917128218 0 # Node ID 62548105541c0903ffd17e8d4e86bc44ff522edd # Parent 91c00b39490146e34675dc9d17ae8c21b8d53edd (shell-command-on-region): Return command's exit status. diff -r 91c00b394901 -r 62548105541c lisp/simple.el --- a/lisp/simple.el Sat Jan 23 13:23:26 1999 +0000 +++ b/lisp/simple.el Sat Jan 23 21:50:18 1999 +0000 @@ -1,6 +1,6 @@ ;;; simple.el --- basic editing commands for Emacs -;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 1998 +;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 98, 1999 ;; Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -1184,7 +1184,8 @@ error-buffer) "Execute string COMMAND in inferior shell with region as input. Normally display output (if any) in temp buffer `*Shell Command Output*'; -Prefix arg means replace the region with it. +Prefix arg means replace the region with it. Return the exit code of +COMMAND. To specify a coding system for converting non-ASCII characters in the input and output to the shell command, use \\[universal-coding-system-argument] @@ -1239,7 +1240,8 @@ (if error-buffer (concat (file-name-directory temp-file-name-pattern) (make-temp-name "scor")) - nil))) + nil)) + exit-status) (if (or replace (and output-buffer (not (or (bufferp output-buffer) (stringp output-buffer)))) @@ -1249,11 +1251,12 @@ ;; Don't muck with mark unless REPLACE says we should. (goto-char start) (and replace (push-mark)) - (call-process-region start end shell-file-name t - (if error-file - (list t error-file) - t) - nil shell-command-switch command) + (setq exit-status + (call-process-region start end shell-file-name t + (if error-file + (list t error-file) + t) + nil shell-command-switch command)) (let ((shell-buffer (get-buffer "*Shell Command Output*"))) (and shell-buffer (not (eq shell-buffer (current-buffer))) (kill-buffer shell-buffer))) @@ -1263,8 +1266,7 @@ ;; replacing its entire contents. (let ((buffer (get-buffer-create (or output-buffer "*Shell Command Output*"))) - (success nil) - (exit-status nil)) + (success nil)) (unwind-protect (if (eq buffer (current-buffer)) ;; If the input is the same buffer as the output, @@ -1279,9 +1281,10 @@ (if error-file (list t error-file) t) - nil shell-command-switch command)) - (setq success t)) - ;; Clear the output buffer, then run the command with output there. + nil shell-command-switch + command))) + ;; Clear the output buffer, then run the command with + ;; output there. (save-excursion (set-buffer buffer) (setq buffer-read-only nil) @@ -1291,8 +1294,8 @@ (if error-file (list buffer error-file) buffer) - nil shell-command-switch command)) - (setq success t)) + nil shell-command-switch command))) + (setq success (zerop exit-status)) ;; Report the amount of output. (let ((lines (save-excursion (set-buffer buffer) @@ -1323,7 +1326,8 @@ (set-buffer (get-buffer-create error-buffer)) ;; Do no formatting while reading error file, for fear of looping. (format-insert-file error-file nil) - (delete-file error-file))))) + (delete-file error-file))) + exit-status)) (defun shell-command-to-string (command) "Execute shell command COMMAND and return its output as a string."