branch: externals/ellama
commit 7de4b759869bd3950837188063be11b5b2d2ad55
Author: Sergey Kostyaev <sskosty...@gmail.com>
Commit: Sergey Kostyaev <sskosty...@gmail.com>

    Add transient ollama model menu prototype
---
 ellama.el | 36 ++++++++++++++++++++++++++++--------
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git a/ellama.el b/ellama.el
index 895f6fab94..a3a3731321 100644
--- a/ellama.el
+++ b/ellama.el
@@ -2482,20 +2482,25 @@ Call CALLBACK on result list of strings.  ARGS contains 
keys for fine control.
      (lambda (err)
        (user-error err)))))
 
+(defun ellama-get-ollama-model-name ()
+  "Get ollama model name from installed locally."
+  (interactive)
+  (completing-read
+   "Select ollama model: "
+   (mapcar (lambda (s)
+            (car (split-string s)))
+          (seq-drop
+           (process-lines
+            (executable-find ellama-ollama-binary) "ls")
+           1))))
+
 (defun ellama-get-ollama-local-model ()
   "Return llm provider for interactively selected ollama model."
   (interactive)
   (declare-function llm-ollama-p "ext:llm-ollama")
   (declare-function llm-ollama-host "ext:llm-ollama")
   (declare-function llm-ollama-port "ext:llm-ollama")
-  (let ((model-name
-        (completing-read "Select ollama model: "
-                         (mapcar (lambda (s)
-                                   (car (split-string s)))
-                                 (seq-drop
-                                  (process-lines
-                                   (executable-find ellama-ollama-binary) "ls")
-                                  1))))
+  (let ((model-name (ellama-get-ollama-model-name))
        (host (when (llm-ollama-p ellama-provider)
                (llm-ollama-host ellama-provider)))
        (port (when (llm-ollama-p ellama-provider)
@@ -2506,6 +2511,21 @@ Call CALLBACK on result list of strings.  ARGS contains 
keys for fine control.
       (make-llm-ollama
        :chat-model model-name :embedding-model model-name))))
 
+(defvar ellama-transient-ollama-model-name "")
+
+(transient-define-suffix ellama-transient-set-ollama-model ()
+  "Set ollama model name."
+  (interactive)
+  (setq ellama-transient-ollama-model-name (ellama-get-ollama-model-name)))
+
+(transient-define-prefix ellama-select-ollama-model ()
+  "Select ollama model."
+  [["Model"
+    ("m" "Model" ellama-transient-set-ollama-model
+     :transient t
+     :description (lambda () (format "Model (%s)" 
ellama-transient-ollama-model-name)))]
+   ["Quit" ("q" "Quit" transient-quit-one)]])
+
 (transient-define-prefix ellama-transient-code-menu ()
   "Code Commands."
   [["Code Commands"

Reply via email to