branch: externals/ellama
commit 88d4900878e5466b306adf5f637497bd6c42603f
Merge: 7941a13d39 ea682607c9
Author: Sergey Kostyaev <[email protected]>
Commit: GitHub <[email protected]>

    Merge pull request #143 from 
s-kostyaev/fix-change-current-buffer-on-commit-message-generation
    
    Improve commit message generation
---
 README.org |  1 +
 ellama.el  | 32 +++++++++++++++++---------------
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/README.org b/README.org
index b01a108b42..87b555079f 100644
--- a/README.org
+++ b/README.org
@@ -257,6 +257,7 @@ Ellama, using the ~ellama-keymap-prefix~ prefix (not set by 
default):
 | "c e"  | ellama-code-edit                | Code edit                    |
 | "c i"  | ellama-code-improve             | Code improve                 |
 | "c r"  | ellama-code-review              | Code review                  |
+| "c m"  | ellama-generate-commit-message  | Generate commit message      |
 | "s s"  | ellama-summarize                | Summarize                    |
 | "s w"  | ellama-summarize-webpage        | Summarize webpage            |
 | "s c"  | ellama-summarize-killring       | Summarize killring           |
diff --git a/ellama.el b/ellama.el
index 4bdb8e476b..678bf6d122 100644
--- a/ellama.el
+++ b/ellama.el
@@ -111,6 +111,7 @@
     (define-key map (kbd "c e") 'ellama-code-edit)
     (define-key map (kbd "c i") 'ellama-code-improve)
     (define-key map (kbd "c r") 'ellama-code-review)
+    (define-key map (kbd "c m") 'ellama-generate-commit-message)
     ;; summarize
     (define-key map (kbd "s s") 'ellama-summarize)
     (define-key map (kbd "s w") 'ellama-summarize-webpage)
@@ -1645,21 +1646,22 @@ the full response text when the request completes (with 
BUFFER current)."
 (defun ellama-generate-commit-message ()
   "Generate commit message based on diff."
   (interactive)
-  (let* ((default-directory
-         (if (string= ".git"
-                      (car (reverse
-                            (cl-remove
-                             ""
-                             (file-name-split default-directory)
-                             :test #'string=))))
-             (file-name-parent-directory default-directory)
-           default-directory))
-        (diff (with-temp-buffer
-                (vc-diff-internal
-                 nil (vc-deduce-fileset t) nil nil nil (current-buffer))
-                (buffer-substring-no-properties (point-min) (point-max)))))
-    (ellama-stream
-     (format ellama-generate-commit-message-template diff))))
+  (save-window-excursion
+    (let* ((default-directory
+           (if (string= ".git"
+                        (car (reverse
+                              (cl-remove
+                               ""
+                               (file-name-split default-directory)
+                               :test #'string=))))
+               (file-name-parent-directory default-directory)
+             default-directory))
+          (diff (with-temp-buffer
+                  (vc-diff-internal
+                   nil (vc-deduce-fileset t) nil nil nil (current-buffer))
+                  (buffer-substring-no-properties (point-min) (point-max)))))
+      (ellama-stream
+       (format ellama-generate-commit-message-template diff)))))
 
 ;;;###autoload
 (defun ellama-ask-line ()

Reply via email to