emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/gptel 149261ee79 211/273: gptel-transient: Avoid clashes w


From: ELPA Syncer
Subject: [nongnu] elpa/gptel 149261ee79 211/273: gptel-transient: Avoid clashes with the custom directive key (#219)
Date: Wed, 1 May 2024 10:02:25 -0400 (EDT)

branch: elpa/gptel
commit 149261ee79502284d8886a9f5133e4f6be0ba5ca
Author: Marten Lienen <marten.lienen@gmail.com>
Commit: GitHub <noreply@github.com>

    gptel-transient: Avoid clashes with the custom directive key (#219)
    
    gptel-transient (gptel--system-prompt-setup): When assigning keys
    to directives, avoid clashes with the system-message edit key
    (`h`), and use an arbitrary unused key if no mnemonic key
    assignments are possible.
---
 gptel-transient.el | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/gptel-transient.el b/gptel-transient.el
index 00ae53b970..39810a0256 100644
--- a/gptel-transient.el
+++ b/gptel-transient.el
@@ -185,22 +185,18 @@ which see."
   (transient-parse-suffixes
    'gptel-system-prompt
    (cl-loop for (type . prompt) in gptel-directives
-       with taken
+       ;; Avoid clashes with the custom directive key
+       with unused-keys = (delete ?h (number-sequence ?a ?z))
        with width = (window-width)
        for name = (symbol-name type)
-       for key =
-       (let ((idx 0) pos)
-         (while (or (not pos) (member pos taken))
-           (setq pos (substring name idx (1+ idx)))
-           (cl-incf idx))
-         (push pos taken)
-         pos)
+       for key = (seq-find (lambda (k) (member k unused-keys)) name (seq-first 
unused-keys))
+       do (setq unused-keys (delete key unused-keys))
        ;; The explicit declaration ":transient transient--do-return" here
        ;; appears to be required for Transient v0.5 and up.  Without it, these
        ;; are treated as suffixes when invoking `gptel-system-prompt' directly,
        ;; and infixes when going through `gptel-menu'.
        ;; TODO: Raise an issue with Transient.
-       collect (list (key-description key)
+       collect (list (key-description (list key))
                      (concat (capitalize name) " "
                              (propertize " " 'display '(space :align-to 20))
                              (propertize



reply via email to

[Prev in Thread] Current Thread [Next in Thread]