branch: elpa/gptel
commit 79387687688214bc1416977470d6c7b65aee038b
Author: Karthik Chikmagalur <[email protected]>
Commit: Karthik Chikmagalur <[email protected]>
gptel-rewrite: Don't turn on major-mode in rewrite buffer
* gptel-rewrite.el (gptel--rewrite-callback): Don't turn on the
major-mode in the rewrite buffer, as this can have too many
unexpected side effects to manage (#722, #730). Instead just set
the major-mode symbol so post-rewrite-functions that use
org-element (say) will work. This will also cause issues, but
these issues will be limited to `gptel-post-rewrite-functions'
instead of stopping the whole rewrite process when an error
occurs.
Also demote errors in functions in `gptel-post-rewrite-functions'
to make the rewrite process more robust.
---
gptel-rewrite.el | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/gptel-rewrite.el b/gptel-rewrite.el
index f0affe66af..29a94a8dfe 100644
--- a/gptel-rewrite.el
+++ b/gptel-rewrite.el
@@ -396,9 +396,7 @@ INFO is the async communication channel for the rewrite
request."
(insert-buffer-substring buf (overlay-start ov) (overlay-end ov))
(when (eq (char-before (point-max)) ?\n)
(plist-put info :newline t))
- (delay-mode-hooks (funcall (buffer-local-value 'major-mode buf)))
- ;; message.el and possily others set these when entering the major
mode. (#730)
- (setq buffer-file-name nil buffer-auto-save-file-name nil)
+ (setq major-mode (buffer-local-value 'major-mode buf)) ;Don't turn
on major-mode (#730, #722)
(add-text-properties (point-min) (point-max) '(face shadow
font-lock-face shadow))
(goto-char (point-min)))
(insert response)
@@ -421,7 +419,8 @@ INFO is the async communication channel for the rewrite
request."
(let ((inhibit-read-only t))
(delete-region (point) (point-max))
;; Run post-rewrite-functions on rewritten text in its buffer
- (run-hook-with-args 'gptel-post-rewrite-functions (point-min)
(point-max))
+ (with-demoted-errors
+ (run-hook-with-args 'gptel-post-rewrite-functions
(point-min) (point-max)))
(when (and (plist-get info :newline)
(not (eq (char-before (point-max)) ?\n)))
(insert "\n"))