combobulate icon indicating copy to clipboard operation
combobulate copied to clipboard

combobulate-envelope bug

Open stevemolitor opened this issue 1 year ago • 3 comments

I'm getting the error below running combobulate-envelope in TSX. I'm using Emacs 29.2 on a M1, transient version 0.5.3 (that might be important).

To reproduce use this example:

const Component = () => (
  <div>
    <h1>Component</h1>
  </div>
);

Put your cursor just before the <h1>, or select the entire h1 element; the bug happens either way.

I get this error (with debug-on-error set to t):

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)

stevemolitor avatar Mar 02 '24 12:03 stevemolitor

Hi Steve,

HAving a hard time reproducing this. Does it happen when you pop up the envelope transient only? Can you execute envelopes without it? (C-c o e t as an example)

mickeynp avatar Mar 02 '24 15:03 mickeynp

Hi Mickey I downgraded transient to version 0.4.3 and combobulate-envelope worked. When I updated to transient version 0.5.3 comboulate-envelope broke again as described above.

So I think something changed in transient. 0.4.3 is the version of transient that comes stock with Emacs 29.2.

EDIT: The bug happens even if I invoke M-x combobulate-envelope outside of the transient.

stevemolitor avatar Mar 02 '24 16:03 stevemolitor

Thanks for the bug report.

mickeynp avatar Mar 02 '24 16:03 mickeynp