Function: sql-redirect-one
sql-redirect-one is a byte-compiled function defined in sql.el.gz.
Signature
(sql-redirect-one SQLBUF COMMAND OUTBUF SAVE-PRIOR)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/sql.el.gz
(defun sql-redirect-one (sqlbuf command outbuf save-prior)
(when command
(with-current-buffer sqlbuf
(let ((buf (get-buffer-create (or outbuf " *SQL-Redirect*")))
(proc (get-buffer-process (current-buffer)))
(comint-prompt-regexp (sql-get-product-feature sql-product
:prompt-regexp))
(start nil))
(with-current-buffer buf
(setq-local view-no-disable-on-exit t)
(read-only-mode -1)
(unless save-prior
(erase-buffer))
(goto-char (point-max))
(unless (zerop (buffer-size))
(insert "\n"))
(setq start (point)))
(when sql-debug-redirect
(message ">>SQL> %S" command))
;; Run the command
(let ((inhibit-quit t)
comint-preoutput-filter-functions)
(with-local-quit
(comint-redirect-send-command-to-process command buf proc nil t)
(while (or quit-flag (null comint-redirect-completed))
(accept-process-output nil 1)))
(if quit-flag
(comint-redirect-cleanup)
;; Clean up the output results
(with-current-buffer buf
;; Remove trailing whitespace
(goto-char (point-max))
(when (looking-back "[ \t\f\n\r]*" start)
(delete-region (match-beginning 0) (match-end 0)))
;; Remove echo if there was one
(goto-char start)
(when (looking-at (concat "^" (regexp-quote command) "[\\n]"))
(delete-region (match-beginning 0) (match-end 0)))
;; Remove Ctrl-Ms
(goto-char start)
(while (re-search-forward "\r+$" nil t)
(replace-match "" t t))
(goto-char start))))))))