branch: elpa/gptel
commit 8838f889500a0777a004cf100ff9e81e68e3f381
Author: Karthik Chikmagalur <[email protected]>
Commit: karthink <[email protected]>
gptel: Add gptel--strip-mode-suffix
* gptel.el (gptel--strip-mode-suffix): Add function to return the
language from the major-mode.
* gptel-transient.el (gptel--rewrite-message): Adjust to use new
function.
* gptel-contexter.el (gptel-buffer-insert-context-string,
gptel-remove-all-contexts): Adjust to use new function.
* gptel-openai.el: declare gptel-context--wrap
* gptel-ollama.el: declare gptel-context--wrap
* gptel-kagi.el: declare gptel-context--wrap
* gptel-gemini.el: declare gptel-context--wrap
* gptel-anthropic.el: declare gptel-context--wrap
---
gptel-anthropic.el | 1 +
gptel-contexter.el | 30 +-----------------------------
gptel-gemini.el | 1 +
gptel-kagi.el | 2 ++
gptel-ollama.el | 1 +
gptel-openai.el | 2 +-
gptel-transient.el | 4 +---
gptel.el | 12 ++++++++++++
8 files changed, 20 insertions(+), 33 deletions(-)
diff --git a/gptel-anthropic.el b/gptel-anthropic.el
index 3768570ccf..93688a21bc 100644
--- a/gptel-anthropic.el
+++ b/gptel-anthropic.el
@@ -33,6 +33,7 @@
(declare-function prop-match-value "text-property-search")
(declare-function text-property-search-backward "text-property-search")
(declare-function json-read "json" ())
+(declare-function gptel-context--wrap "gptel-contexter")
;;; Anthropic (Messages API)
(cl-defstruct (gptel-anthropic (:constructor gptel--make-anthropic)
diff --git a/gptel-contexter.el b/gptel-contexter.el
index 15b90c8f0e..2c4c7466d3 100644
--- a/gptel-contexter.el
+++ b/gptel-contexter.el
@@ -208,34 +208,6 @@ If selection is active, removes all contexts within
selection."
(mapc #'gptel-remove-context
(gptel-contexts)))
-;;;###autoload
-(defun gptel-major-mode-md-prog-lang (mode)
- "Get the Markdown programming language string for the given MODE."
- (cond
- ((eq mode 'emacs-lisp-mode) "emacs-lisp")
- ((eq mode 'lisp-mode) "common-lisp")
- ((eq mode 'c-mode) "c")
- ((eq mode 'c++-mode) "c++")
- ((eq mode 'javascript-mode) "javascript")
- ((eq mode 'python-mode) "python")
- ((eq mode 'ruby-mode) "ruby")
- ((eq mode 'java-mode) "java")
- ((eq mode 'go-mode) "go")
- ((eq mode 'rust-mode) "rust")
- ((eq mode 'haskell-mode) "haskell")
- ((eq mode 'scala-mode) "scala")
- ((eq mode 'kotlin-mode) "kotlin")
- ((eq mode 'typescript-mode) "typescript")
- ((eq mode 'css-mode) "css")
- ((eq mode 'html-mode) "html")
- ((eq mode 'xml-mode) "xml")
- ((eq mode 'swift-mode) "swift")
- ((eq mode 'perl-mode) "perl")
- ((eq mode 'php-mode) "php")
- ((eq mode 'csharp-mode) "csharp")
- ((eq mode 'sql-mode) "sql")
- (t "")))
-
(defun gptel--region-inline-p (buffer previous-region current-region)
"Return non-nil if CURRENT-REGION begins on the line PREVIOUS-REGION ends in.
This check pertains only to regions in BUFFER.
@@ -253,7 +225,7 @@ representthe regions' boundaries within BUFFER."
(previous-line 1)
prog-lang-tag
(contexts (alist-get buffer gptel-context--overlay-alist)))
- (setq prog-lang-tag (gptel-major-mode-md-prog-lang
+ (setq prog-lang-tag (gptel--strip-mode-suffix
(buffer-local-value 'major-mode buffer)))
(insert (format "In buffer `%s`:" (buffer-name buffer)))
(insert "\n\n```" prog-lang-tag "\n")
diff --git a/gptel-gemini.el b/gptel-gemini.el
index 75b319aa3b..d59803ea0d 100644
--- a/gptel-gemini.el
+++ b/gptel-gemini.el
@@ -30,6 +30,7 @@
(declare-function prop-match-value "text-property-search")
(declare-function text-property-search-backward "text-property-search")
(declare-function json-read "json")
+(declare-function gptel-context--wrap "gptel-contexter")
(defvar json-object-type)
;;; Gemini
diff --git a/gptel-kagi.el b/gptel-kagi.el
index 796fb7a2e9..c1a4efe551 100644
--- a/gptel-kagi.el
+++ b/gptel-kagi.el
@@ -28,6 +28,8 @@
(eval-when-compile
(require 'cl-lib))
+(declare-function gptel-context--wrap "gptel-contexter")
+
;;; Kagi
(cl-defstruct (gptel-kagi (:constructor gptel--make-kagi)
(:copier nil)
diff --git a/gptel-ollama.el b/gptel-ollama.el
index 86147bf30a..7c6e9175d3 100644
--- a/gptel-ollama.el
+++ b/gptel-ollama.el
@@ -27,6 +27,7 @@
(require 'cl-generic)
(declare-function json-read "json" ())
+(declare-function gptel-context--wrap "gptel-contexter")
(defvar json-object-type)
;;; Ollama
diff --git a/gptel-openai.el b/gptel-openai.el
index 7250ad5455..4dec41dde5 100644
--- a/gptel-openai.el
+++ b/gptel-openai.el
@@ -26,7 +26,6 @@
(eval-when-compile
(require 'cl-lib))
(require 'map)
-(require 'gptel-contexter)
(defvar gptel-model)
(defvar gptel-stream)
@@ -43,6 +42,7 @@
(declare-function json-read "json")
(declare-function gptel-prompt-prefix-string "gptel")
(declare-function gptel-response-prefix-string "gptel")
+(declare-function gptel-context--wrap "gptel-contexter")
(defmacro gptel--json-read ()
(if (fboundp 'json-parse-buffer)
diff --git a/gptel-transient.el b/gptel-transient.el
index d0ae66a943..0f2f67d22b 100644
--- a/gptel-transient.el
+++ b/gptel-transient.el
@@ -102,9 +102,7 @@ Or is it the other way around?"
"Set a generic refactor/rewrite message for the buffer."
(if (derived-mode-p 'prog-mode)
(format "You are a %s programmer. Refactor the following code. Generate
only code, no explanation."
- (thread-last (symbol-name major-mode)
- (string-remove-suffix "-mode")
- (string-remove-suffix "-ts")))
+ (gptel--strip-mode-suffix major-mode))
(format "You are a prose editor. Rewrite the following text to be more
professional.")))
(defvar gptel--crowdsourced-prompts-url
diff --git a/gptel.el b/gptel.el
index c612e12a3a..25d41bbbcb 100644
--- a/gptel.el
+++ b/gptel.el
@@ -674,6 +674,18 @@ in any way.")
"Check if gptel response at position PT has variants."
(get-char-property (or pt (point)) 'gptel-history))
+(defun gptel--strip-mode-suffix (mode-sym)
+ "Remove the -mode suffix from MODE-NAME.
+
+MODE-NAME is typically a major-mode symbol."
+ (let ((mode-name (thread-last
+ (symbol-name mode-sym)
+ (string-remove-suffix "-mode")
+ (string-remove-suffix "-ts"))))
+ (if (provided-mode-derived-p
+ mode-sym 'prog-mode 'text-mode 'tex-mode)
+ mode-name "")))
+
;; Logging