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