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))))))))