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"