Open ankitf opened 1 month ago
How did you install gptel?
I have the same issue. My gptel-menu is no longer working with -v0.9.0.
I use spacemacs and included gptel in dotspacemacs-additional-packages as stated in gptel readme. My understanding is that this installs gptel from MELPA? Thanks.
Can you produce a backtrace? M-x toggle-debug-on-error
and produce the error.
Running emacs-gptel from guix packages @ commit 8c6e724686ac37ff7955b97d9bfd03176b14d82a in a guix shell.
transient--exit-and-debug(error (wrong-type-argument (or eieio-object cl-structure-object oclosure) ""))
eieio-oref("" key)
#<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_171>("")
transient--maybe-pad-keys(#<transient-column transient-column-b9df214> #<transient-columns transient-columns-b9df0dc>)
#f(compiled-function (column) #<bytecode 0x97c7da258ac159a>)(#<transient-column transient-column-b9df214>)
mapcar(#f(compiled-function (column) #<bytecode 0x97c7da258ac159a>) (#<transient-column transient-column-b9df10e> #<transient-column transient-column-b9df214>))
#f(compiled-function (group) #<bytecode 0xe79175334a628c1>)(#<transient-columns transient-columns-b9df0dc>)
apply(#f(compiled-function (group) #<bytecode 0xe79175334a628c1>) #<transient-columns transient-columns-b9df0dc>)
#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>)(#<transient-columns transient-columns-b9df0dc>)
#f(compiled-function (cl--cnm group) #<bytecode -0x4b40a9e5299e6df>)(#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-b9df0dc>)
apply(#f(compiled-function (cl--cnm group) #<bytecode -0x4b40a9e5299e6df>) #f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-b9df0dc>)
#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x1e07387d87fc2035>)(#<transient-columns transient-columns-b9df0dc>)
apply(#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x1e07387d87fc2035>) #<transient-columns transient-columns-b9df0dc> nil)
transient--insert-group(#<transient-columns transient-columns-b9df0dc>)
transient--insert-groups()
transient--show()
transient--redisplay()
transient-setup(gptel-menu)
gptel-menu()
funcall-interactively(gptel-menu)
command-execute(gptel-menu record)
execute-extended-command(nil "gptel-menu" nil)
funcall-interactively(execute-extended-command nil "gptel-menu" nil)
command-execute(execute-extended-command)```
How did you install gptel?
I installed it using straight use package. Here is the installation excerpt from my config.
#+begin_src emacs-lisp
(use-package gptel
:straight t
)
#+end_src
Can you produce a backtrace?
M-x toggle-debug-on-error
and produce the error.
Here is the trace.
Debugger entered--Lisp error: (wrong-type-argument (or eieio-object cl-structure-object oclosure) "")
transient--exit-and-debug(error (wrong-type-argument (or eieio-object cl-structure-object oclosure) ""))
eieio-oref("" key)
#<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_167>("")
transient--maybe-pad-keys(#<transient-column transient-column-160b6dda7888> #<transient-columns transient-columns-160b6dda7750>)
#f(compiled-function (column) #<bytecode -0x13f2c378d47e6432>)(#<transient-column transient-column-160b6dda7888>)
mapcar(#f(compiled-function (column) #<bytecode -0x13f2c378d47e6432>) (#<transient-column transient-column-160b6dda7782> #<transient-column transient-column-160b6dda7888>))
#f(compiled-function (group) #<bytecode 0x1039c6fdfac53f00>)(#<transient-columns transient-columns-160b6dda7750>)
apply(#f(compiled-function (group) #<bytecode 0x1039c6fdfac53f00>) #<transient-columns transient-columns-160b6dda7750>)
#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>)(#<transient-columns transient-columns-160b6dda7750>)
#f(compiled-function (cl--cnm group) #<bytecode -0x4831328a62834df>)(#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-160b6dda7750>)
apply(#f(compiled-function (cl--cnm group) #<bytecode -0x4831328a62834df>) #f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-160b6dda7750>)
#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x7223506b0ca2037>)(#<transient-columns transient-columns-160b6dda7750>)
apply(#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x7223506b0ca2037>) #<transient-columns transient-columns-160b6dda7750> nil)
transient--insert-group(#<transient-columns transient-columns-160b6dda7750>)
transient--insert-groups()
transient--show()
transient--redisplay()
transient-setup(gptel-menu)
gptel-menu()
funcall-interactively(gptel-menu)
command-execute(gptel-menu record)
execute-extended-command(nil "gptel-menu" nil)
funcall-interactively(execute-extended-command nil "gptel-menu" nil)
command-execute(execute-extended-command)
What is the version of transient you're using? To find it you can run M-x find-library
, transient
, then look at the header:
;; Package-Version: 0.6.0
;; Package-Version: 0.7.3
Running gptel-menu in emacs 29.4 with gptel v0.8.6 and emacs-transient v0.7.3 works fine. gptel v0.9.0 gives the error.
Transient,
;; Package-Version: 0.4.1
I updated transient to 0.7.3. Gives the same error.
I updated transient to version 0.7.3, which caused numerous errors in both Magit and Dirvish. Hence, I decided to do a fresh installation of all the straight packages (it's been 3 years since I updated the packages).
After the fresh installation, transient is at version 0.7.3. and gptel-menu
works just fine now. All the errors of magit and dirvish are also resolved.
Thanks for looking into it. @karthink
This commit gptel-menu works fine.
The next commit does not
guix shell --pure --with-commit=emacs-gptel=5d093f2135dcf69c8493183902e5b932b0aa2c2b emacs emacs-gptel emacs-transient -- emacs
Debugger entered--Lisp error: (wrong-type-argument (or eieio-object cl-structure-object oclosure) "")
transient--exit-and-debug(error (wrong-type-argument (or eieio-object cl-structure-object oclosure) ""))
eieio-oref("" key)
#<subr F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_171>("")
transient--maybe-pad-keys(#<transient-column transient-column-733385c> #<transient-columns transient-columns-73322aa>)
#f(compiled-function (column) #<bytecode -0x125140492c585751>)(#<transient-column transient-column-733385c>)
mapcar(#f(compiled-function (column) #<bytecode -0x125140492c585751>) (#<transient-column transient-column-73322e4> #<transient-column transient-column-733385c>))
#f(compiled-function (group) #<bytecode 0x851e45735231781>)(#<transient-columns transient-columns-73322aa>)
apply(#f(compiled-function (group) #<bytecode 0x851e45735231781>) #<transient-columns transient-columns-73322aa>)
#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>)(#<transient-columns transient-columns-73322aa>)
#f(compiled-function (cl--cnm group) #<bytecode -0x4b708eb4c583e9f>)(#f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-73322aa>)
apply(#f(compiled-function (cl--cnm group) #<bytecode -0x4b708eb4c583e9f>) #f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #<transient-columns transient-columns-73322aa>)
#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x1e31532587fc2035>)(#<transient-columns transient-columns-73322aa>)
apply(#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x1e31532587fc2035>) #<transient-columns transient-columns-73322aa> nil)
transient--insert-group(#<transient-columns transient-columns-73322aa>)
transient--insert-groups()
transient--show()
transient--redisplay()
transient-setup(gptel-menu)
gptel-menu()
funcall-interactively(gptel-menu)
command-execute(gptel-menu record)
execute-extended-command(nil "gptel-menu" "gptel-menu")
funcall-interactively(execute-extended-command nil "gptel-menu" "gptel-menu")
command-execute(execute-extended-command)
@0x715C Thanks for pinpointing the commit, I can see what's causing the error now. It's the use of :pad-keys
with the empty line ""
here. But I'm not sure why yet.
@ankitf You're using Transient 0.7.3 now (same as @0x715C) but don't experience this issue any more? That's puzzling.
@0x715C Thanks for pinpointing the commit, I can see what's causing the error now. It's the use of
:pad-keys
with the empty line""
here. But I'm not sure why yet.
I can confirm that gptel-send does not produce an error, and seems to work, after removing ":pad-keys t" from gptel-transient.el. I'm not familiar with transient so I have no more ideas.
@karthink Yes. using Transient 0.7.3 now. In my opinion source, of the error is some other package. I had the same setup in a new machine with fresh install and there was no error. But it threw the error in my daily machine where most of the packages were old.
I cannot reproduce this error with the latest version of transient (0.7.4). Can someone experiencing the issue check this?
(Note: I couldn't reproduce this with transient 0.7.3 either.)
Yea, I still get the error with guix time-machine -- shell --pure emacs emacs-gptel emacs-transient -- emacs
.
I get this error: emacs 29.4 gptel 0.9.0 transient 0.7.4
Debugger entered--Lisp error: (wrong-type-argument (or eieio-object cl-structure-object oclosure) "") transient--exit-and-debug(error (wrong-type-argument (or eieio-object cl-structure-object oclosure) "")) eieio-oref("" key)
transient--maybe-pad-keys(#
mapcar(#f(compiled-function (column) #<bytecode -0x410d23c16416aad>) (#
apply(#f(compiled-function (group) #<bytecode -0xe794ce21a48a8c0>) #
apply(#f(compiled-function (cl--cnm group) #<bytecode -0x483e13aa70df85f>) #f(compiled-function (&rest args) #<bytecode 0xf004b0aa7981c77>) #
apply(#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode 0x18caca95a8ca2031>) #
ad-Advice-execute-extended-command(#
I'm aware of #361, but as far as I can tell, this is a Transient bug so I don't want to work around it in a way where I'll forget about the hack and cause trouble in the future.
If you are experiencing the error, what would really help is a minimal reproducer that combines :pad-keys t
and a blank line ""
, so I can discuss it with tarsius, the Transient maintainer.
Something like this, which I can't confirm since I can't reproduce the bug on Transient 0.7.3.
(transient-define-prefix test-menu ()
"Change parameters of prompt to send to the LLM."
[:description "Test menu"
[:pad-keys t
""
"Some text"
("2" "Split vertically" split-window-vertically)
("3" "Split horizontally" split-window-horizontally)]])
gtel version - v0.9.0