karthink / gptel

A simple LLM client for Emacs
GNU General Public License v3.0
1.14k stars 119 forks source link

Transient directives menu does not show user-defined directives #42

Closed wrycode closed 1 year ago

wrycode commented 1 year ago

If you add a directive to gptel-directives with M-x customize-option or with (customize-set-option ...) the directive is not available to be set in the h Set directives for chat submenu of gptel-menu. Unless I'm being stupid.

karthink commented 1 year ago

Indeed, this is the current behavior because of limitations with the last tagged release of transient.

See https://github.com/karthink/gptel/blob/master/gptel-transient.el#L171.

The commented out code generates the directives dynamically from gptel-directives, and it actually works fine (once uncommented) if you use the latest git version of Transient. But it breaks completely for people using tagged releases of Transient (such as from MELPA stable or ELPA or the built-in Emacs version), so I've had to disable it until there's a new release.

See also the documentation for gptel-directives, which explains this issue.

psionic-k commented 1 year ago

Newest tagged transient is out. Let's bump the transient version requirement, tag a new release of gptel, and let this close.

karthink commented 1 year ago

v0.4 looks good, will update gptel soon.

karthink commented 1 year ago

I've pushed a fix in 706ad703. Please test. To make sure the dynamic menus are generated correclty, it will help further to test with a list of directives with partially overlapping names, such as

(setq gptel-directives
      '((programming . "You are a large language model and a careful programmer. Provide code and only code as output without any additional text, prompt or note.")
        (prose . "You are a large language model and a writing assistant. Respond concisely.")
        (default-chat . "You are a large language model and a conversation partner. Respond concisely.")
        (default . "You are a large language model living in Emacs and a helpful assistant. Respond concisely.")))
karthink commented 1 year ago

I'm assuming this works as intended with the new transient version. Please re-open if this is not the case.