branch: externals/ellama
commit 7c49cba7fd959c80c6b2997140b14ba2381c4740
Author: Sergey Kostyaev <sskosty...@gmail.com>
Commit: Sergey Kostyaev <sskosty...@gmail.com>

    Improve text insertion handling
    
    Added `use-hard-newlines` variable and updated text insertion to use hard
    newlines. Ensured that text is inserted only if there is a delta, and 
improved
    the conditional logic for filling paragraphs.
---
 ellama.el | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/ellama.el b/ellama.el
index 722c33789b..b93f52d2a8 100644
--- a/ellama.el
+++ b/ellama.el
@@ -1235,6 +1235,7 @@ FILTER is a function for text transformation."
            (goto-char end-marker)
            (let* ((filtered-text
                    (funcall filter text))
+                  (use-hard-newlines t)
                   (common-prefix (concat
                                   safe-common-prefix
                                   (ellama-max-common-prefix
@@ -1248,26 +1249,26 @@ FILTER is a function for text transformation."
                                       (length common-prefix)))
                   (delta (string-remove-prefix common-prefix filtered-text)))
              (delete-char (- wrong-chars-cnt))
-             (insert delta)
-             (when (and
-                    ellama-fill-paragraphs
-                    (pcase ellama-fill-paragraphs
-                      ((cl-type function) (funcall ellama-fill-paragraphs))
-                      ((cl-type boolean) ellama-fill-paragraphs)
-                      ((cl-type list) (and (apply #'derived-mode-p
-                                                  ellama-fill-paragraphs)))))
-               (if (not (eq major-mode 'org-mode))
-                   (fill-paragraph)
-                 (when (not (save-excursion
-                              (re-search-backward
-                               "#\\+BEGIN_SRC"
-                               beg-marker t)))
-                   (org-fill-paragraph))))
-             (set-marker end-marker (point))
-             (when (and ellama-auto-scroll (not ellama--stop-scroll))
-               (ellama--scroll buffer end-marker))
-             (setq safe-common-prefix (ellama--string-without-last-line 
common-prefix))
-             (setq previous-filtered-text filtered-text))))))))
+             (when delta (insert (propertize delta 'hard t))
+                   (when (and
+                          ellama-fill-paragraphs
+                          (pcase ellama-fill-paragraphs
+                            ((cl-type function) (funcall 
ellama-fill-paragraphs))
+                            ((cl-type boolean) ellama-fill-paragraphs)
+                            ((cl-type list) (and (apply #'derived-mode-p
+                                                        
ellama-fill-paragraphs)))))
+                     (if (not (eq major-mode 'org-mode))
+                         (fill-paragraph)
+                       (when (not (save-excursion
+                                    (re-search-backward
+                                     "#\\+BEGIN_SRC"
+                                     beg-marker t)))
+                         (org-fill-paragraph))))
+                   (set-marker end-marker (point))
+                   (when (and ellama-auto-scroll (not ellama--stop-scroll))
+                     (ellama--scroll buffer end-marker))
+                   (setq safe-common-prefix (ellama--string-without-last-line 
common-prefix))
+                   (setq previous-filtered-text filtered-text)))))))))
 
 (defun ellama--handle-partial (insert-text insert-reasoning reasoning-buffer)
   "Handle partial llm callback.

Reply via email to