]> git.eshelyaron.com Git - emacs.git/commitdiff
prepend newline in sqli buffer
authorIngo Lohmar <ingo.lohmar@posteo.net>
Sun, 16 May 2021 14:32:10 +0000 (16:32 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sun, 16 May 2021 14:32:10 +0000 (16:32 +0200)
(sql-remove-continuation-prompt, sql-send-string): Move newline
insertion.

Previously, the preoutput filter `sql-remove-continuation-prompt'
inserted a leading newline in the interactive SQL buffer if it decided
that is has to remove continuation prompts and that it had found all
it was looking for.

1) This filter function was a doubtful place to do that (arguably, its
   name does not suggest any action like this).
2) The behavior worked inconsistently, eg, when sending a single-line
   "SELECT" statement, because it only ran when the filter function
   needed to remove any prompts (for example, not when sending a
   region without newlines).

   This can lead to misaligned table headers, which explains why
   emacswiki and stackoverflow both present several fixes to this
   behavior.

lisp/progmodes/sql.el

index 65a4094d70d4560a7a1ed4010ea5b5e473baa5d6..83cb77ef78249edbdc4e5898080d9ac6318d26b7 100644 (file)
@@ -3723,8 +3723,7 @@ to avoid deleting non-prompt output."
 
           ;; If we've found all the expected prompts, stop looking
           (if (= sql-output-newline-count 0)
-              (setq sql-output-newline-count nil
-                    oline (concat "\n" oline))
+              (setq sql-output-newline-count nil)
 
             ;; Still more possible prompts, leave them for the next pass
             (setq sql-preoutput-hold oline
@@ -3769,6 +3768,8 @@ to avoid deleting non-prompt output."
            (with-current-buffer sql-buffer
               (when sql-debug-send
                 (message ">>SQL> %S" s))
+              (insert "\n")
+              (comint-set-process-mark)
 
              ;; Send the string (trim the trailing whitespace)
              (sql-input-sender (get-buffer-process (current-buffer)) s)