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
 

Reply via email to