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

    Add functionality to remove context elements by name
    
    Added a new function `ellama-context--element-remove-by-name` to remove all
    context elements that match by name. Also added an interactive function
    `ellama-context-element-remove-by-name` to prompt the user for the name of 
the
    element to remove and then call the internal function. Updated the transient
    prefix menu to include a new "Delete element" option under the "Manage" 
section.
---
 ellama.el | 34 +++++++++++++++++++++++++++++-----
 1 file changed, 29 insertions(+), 5 deletions(-)

diff --git a/ellama.el b/ellama.el
index 1201ccf045..3fab3069e6 100644
--- a/ellama.el
+++ b/ellama.el
@@ -1057,6 +1057,27 @@ If EPHEMERAL non nil new session will not be associated 
with any file."
     (erase-buffer))
   (ellama-update-context-show))
 
+(defun ellama-context--element-remove-by-name (name)
+  "Remove all context element that matches by NAME."
+  (setq ellama--global-context
+       (cl-remove-if (lambda (el)
+                       (string= name (ellama-context-element-display el)))
+                     ellama--global-context)))
+
+;;;###autoload
+(defun ellama-context-element-remove-by-name ()
+  "Remove a context element by its name from the global context.
+This function prompts the user to select a context element from
+the list of unique elements currently present in the global
+context and removes it.  After removal, it updates the display of
+the context."
+  (interactive)
+  (ellama-context--element-remove-by-name
+   (completing-read
+    "Remove context element: "
+    (seq-uniq (mapcar #'ellama-context-element-display 
ellama--global-context))))
+  (ellama-update-context-show))
+
 ;; Context elements
 
 (defclass ellama-context-element () ()
@@ -3075,18 +3096,21 @@ Call CALLBACK on result list of strings.  ARGS contains 
keys for fine control.
 
 (transient-define-prefix ellama-transient-context-menu ()
   "Context Commands."
-  [["Context Commands"
-    :description (lambda ()
-                  (ellama-update-context-buffer)
-                  (format "Current context:
+  ["Context Commands"
+   :description (lambda ()
+                 (ellama-update-context-buffer)
+                 (format "Current context:
 %s" (with-current-buffer ellama-context-buffer
       (buffer-substring (point-min) (point-max)))))
+   ["Add"
     ("b" "Add Buffer" ellama-context-add-buffer)
     ("d" "Add Directory" ellama-context-add-directory)
     ("f" "Add File" ellama-context-add-file)
     ("s" "Add Selection" ellama-context-add-selection)
-    ("i" "Add Info Node" ellama-context-add-info-node)
+    ("i" "Add Info Node" ellama-context-add-info-node)]
+   ["Manage"
     ("m" "Manage context" ellama-manage-context)
+    ("D" "Delete element" ellama-context-element-remove-by-name)
     ("r" "Context reset" ellama-context-reset)]
    ["Quit" ("q" "Quit" transient-quit-one)]])
 

Reply via email to