magit / transient

Transient commands

Home Page:https://magit.vc/manual/transient

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bug in 0.5.3 not present in 0.4.3

mickeynp opened this issue · comments

Hi Jonas,

One of my users reported an issue with a transient popup that only affects newer versions of transient, but not older ones.

mickeynp/combobulate#83

Debugger entered--Lisp error: (invalid-slot-name "#<transient-suffix transient-suffix-4a0a2148>" pad-keys)
  apply(debug (error (invalid-slot-name "#<transient-suffix transient-suffix-4a0a2148>" pad-keys)))
  transient--exit-and-debug(error (invalid-slot-name "#<transient-suffix transient-suffix-4a0a2148>" pad-keys))
  signal(invalid-slot-name ("#<transient-suffix transient-suffix-4a0a2148>" pad-keys))
  #f(compiled-function (object slot-name operation &optional new-value) #<bytecode 0x9818c69bceba921>)(#<transient-suffix transient-suffix-4a0a2148> pad-keys oref)
  apply(#f(compiled-function (object slot-name operation &optional new-value) #<bytecode 0x9818c69bceba921>) #<transient-suffix transient-suffix-4a0a2148> (pad-keys oref))
  #f(compiled-function (arg &rest args) #<bytecode 0x1f52eae4681d937>)(#<transient-suffix transient-suffix-4a0a2148> pad-keys oref)
  apply(#f(compiled-function (arg &rest args) #<bytecode 0x1f52eae4681d937>) #<transient-suffix transient-suffix-4a0a2148> pad-keys oref)
  #f(compiled-function (arg0 arg &rest args) #<bytecode 0x158943f7e54e5a4a>)(#<transient-suffix transient-suffix-4a0a2148> pad-keys oref)
  apply(#f(compiled-function (arg0 arg &rest args) #<bytecode 0x158943f7e54e5a4a>) #<transient-suffix transient-suffix-4a0a2148> pad-keys oref nil)
  slot-missing(#<transient-suffix transient-suffix-4a0a2148> pad-keys oref)
  #<subr eieio-oref>(#<transient-suffix transient-suffix-4a0a2148> pad-keys)
  eieio-oref--closql-oref(#<subr eieio-oref> #<transient-suffix transient-suffix-4a0a2148> pad-keys)
  apply(eieio-oref--closql-oref #<subr eieio-oref> (#<transient-suffix transient-suffix-4a0a2148> pad-keys))
  eieio-oref(#<transient-suffix transient-suffix-4a0a2148> pad-keys)
  transient--maybe-pad-keys(#<transient-suffix transient-suffix-4a0a2148> #<transient-columns transient-columns-4a1a16c4>)
  #f(compiled-function (column) #<bytecode -0x88b60c68aebe7a4>)(#<transient-suffix transient-suffix-4a0a2148>)
  mapcar(#f(compiled-function (column) #<bytecode -0x88b60c68aebe7a4>) (#<transient-suffix transient-suffix-4a0a2148> #<transient-suffix transient-suffix-45c20cc8> #<transient-suffix transient-suffix-45c79e00> #<transient-suffix transient-suffix-45c7e9f0> #<transient-suffix transient-suffix-45c9130a> #<transient-suffix transient-suffix-45ce77ae> #<transient-suffix transient-suffix-45d8150a> #<transient-suffix transient-suffix-45df5dda> #<transient-suffix transient-suffix-45ea6f0a> #<transient-suffix transient-suffix-466760f8> #<transient-suffix transient-suffix-4a35560e> #<transient-suffix transient-suffix-d16ac43e> #<transient-suffix transient-suffix-cbd72fe2> #<transient-suffix transient-suffix-f8bae39c> #<transient-suffix transient-suffix-f8b33d98> #<transient-suffix transient-suffix-f95a52a0>))
  #f(compiled-function (group) #<bytecode 0xe25bdf38118d9f9>)(#<transient-columns transient-columns-4a1a16c4>)
  apply(#f(compiled-function (group) #<bytecode 0xe25bdf38118d9f9>) #<transient-columns transient-columns-4a1a16c4>)
  #f(compiled-function (&rest args) #<bytecode -0x176c41c139d0e8c5>)(#<transient-columns transient-columns-4a1a16c4>)
  #f(compiled-function (cl--cnm group) #<bytecode 0x13aa5e91646b518c>)(#f(compiled-function (&rest args) #<bytecode -0x176c41c139d0e8c5>) #<transient-columns transient-columns-4a1a16c4>)
  apply(#f(compiled-function (cl--cnm group) #<bytecode 0x13aa5e91646b518c>) #f(compiled-function (&rest args) #<bytecode -0x176c41c139d0e8c5>) #<transient-columns transient-columns-4a1a16c4>)
  #f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode -0x49d4d213b5dd4e8>)(#<transient-columns transient-columns-4a1a16c4>)
  apply(#f(compiled-function (group) "Insert GROUP's description, if any." #<bytecode -0x49d4d213b5dd4e8>) #<transient-columns transient-columns-4a1a16c4> nil)
  transient--insert-group(#<transient-columns transient-columns-4a1a16c4>)
  transient--insert-groups()
  transient--show()
  transient--redisplay()
  transient-setup(combobulate-envelop)
  combobulate-envelop()
  funcall-interactively(combobulate-envelop)
  command-execute(combobulate-envelop record)
  #<subr execute-extended-command>(nil "combobulate-envelop" nil)
  ad-Advice-execute-extended-command(#<subr execute-extended-command> nil "combobulate-envelop" nil)
  apply(ad-Advice-execute-extended-command #<subr execute-extended-command> (nil "combobulate-envelop" nil))
  execute-extended-command(nil "combobulate-envelop" nil)
  funcall-interactively(execute-extended-command nil "combobulate-envelop" nil)
  command-execute(execute-extended-command)

Duplicate of #277. Note that you can get around this by explicitly specifying :class; more details are linked to in the mentioned issue. (The user probably got transient from GNU Elpa, which was lagging behind a few days and was missing the fix.)

I plan to create another transient release soonish, but that should not be necessary to address this issue (regardless of whether the bug is present in 0.5.3, or just some later development version): just specify :class.

Thanks for your help, Jonas. I'll see about adding :class to prevent this. What exactly does :class do?

The available classes are named transient-{row,column,columns}. So this controls how the suffixes are laid out, and it also affects the expected format from :setup-childen. Depending on the class/layout, we need either a list of suffixes or a list of lists of suffixes.