@@ -1544,35 +1544,49 @@ This sets the variable `gptel-include-tool-results', which see."
15441544 (substring s 1 )))
15451545 args))
15461546 (setq output-to-other-buffer-p t )
1547- (let ((reduced-prompt ; For inserting into the gptel buffer as
1547+ (let* ((reduced-prompt ; For inserting into the gptel buffer as
15481548 ; context, not the prompt used for the
15491549 ; request itself
1550- (or prompt
1551- (if (use-region-p )
1552- (buffer-substring-no-properties (region-beginning )
1553- (region-end ))
1554- (buffer-substring-no-properties
1555- (save-excursion
1556- (text-property-search-backward
1557- 'gptel 'response
1558- (when (get-char-property (max (point-min ) (1- (point )))
1559- 'gptel )
1560- t ))
1561- (point ))
1562- (gptel--at-word-end (point )))))))
1550+ (or prompt
1551+ (if (use-region-p )
1552+ (buffer-substring-no-properties (region-beginning )
1553+ (region-end ))
1554+ (buffer-substring-no-properties
1555+ (save-excursion
1556+ (text-property-search-backward
1557+ 'gptel 'response
1558+ (when (get-char-property (max (point-min ) (1- (point )))
1559+ 'gptel )
1560+ t ))
1561+ (point ))
1562+ (gptel--at-word-end (point ))))))
1563+ (gptel-buffer (get-buffer gptel-buffer-name))
1564+ (gptel-buffer-mode
1565+ (if (buffer-live-p gptel-buffer)
1566+ (buffer-local-value 'major-mode gptel-buffer)
1567+ gptel-default-mode)))
1568+ ; ; Add code fences or Org block around prompt
1569+ (cond ((eq major-mode gptel-buffer-mode))
1570+ ((provided-mode-derived-p gptel-buffer-mode 'org-mode )
1571+ (setq reduced-prompt
1572+ (concat " #+begin_src " (gptel--strip-mode-suffix major-mode)
1573+ " \n " reduced-prompt " \n #+end_src" )))
1574+ (t (setq reduced-prompt
1575+ (concat " ``` " (gptel--strip-mode-suffix major-mode) " \n "
1576+ reduced-prompt " \n ```" ))))
15631577 (cond
1564- ((buffer-live-p ( get-buffer gptel-buffer-name) )
1578+ ((buffer-live-p gptel-buffer)
15651579 ; ; Insert into existing gptel session
1566- (progn
1567- ( setq buffer ( get- buffer gptel- buffer-name))
1568- (with-current-buffer buffer
1569- ( goto-char ( point-max ))
1570- ( unless ( or buffer- read-only
1571- ( get-char-property ( point ) 'read-only ))
1572- (insert reduced-prompt))
1573- (setq position (point ))
1574- (when (and gptel-mode (not dry-run))
1575- (gptel--update-status " Waiting..." 'warning ) ))))
1580+ (setq buffer gptel-buffer)
1581+ ( with-current- buffer buffer
1582+ (goto-char ( point-max ))
1583+ ( unless ( or buffer-read-only
1584+ ( get-char-property ( point ) ' read-only))
1585+ ( unless ( bolp ) ( insert " \n " ))
1586+ (insert reduced-prompt))
1587+ (setq position (point ))
1588+ (when (and gptel-mode (not dry-run))
1589+ (gptel--update-status " Waiting..." 'warning ))))
15761590 ; ; Insert into new gptel session
15771591 (t (setq buffer
15781592 (gptel gptel-buffer-name
0 commit comments