0

After installing Magit in spacemacs. I used Helm to create a git repository. I added some files to stage then tried to commit. Let me know if I'm doing something wrong or it's just an issue.

I get:

transient--emergency-exit: Wrong type argument: transient-suffix, [eieio-class-tag--transient-switch 1 nil nil nil nil nil nil nil nil ...]

I've also put this question:

github gitter reddit

Ubuntu 18.04.3 LTS The rest was:

  • Emacs: 25.2.2
  • Spacemacs: 0.300.0
  • Spacemacs branch: develop (rev. 76ce0ac)

Reinstalled Emacs same version and spacemacs stable Spacemacs v.0.200.13 and I have the same issue.

Full trace:

    Debugger entered--Lisp error: (wrong-type-argument transient-suffix [eieio-class-tag--transient-switch 1 nil nil nil nil nil nil nil nil "-a" transient:magit-commit:--all t " %k %d (%v)" "Stage all modified and deleted files" nil nil nil nil nil nil nil nil nil "--all" "-a" nil unbound nil nil nil nil nil nil nil nil] object)

signal(wrong-type-argument (transient-suffix [eieio-class-tag--transient-switch 1 nil nil nil nil nil nil nil nil "-a" transient:magit-commit:--all t " %k %d (%v)" "Stage all modified and deleted files" nil nil nil nil nil nil nil nil nil "--all" "-a" nil unbound nil nil nil nil nil nil nil nil] object))

transient--emergency-exit((wrong-type-argument transient-suffix [eieio-class-tag--transient-switch 1 nil nil nil nil nil nil nil nil "-a" transient:magit-commit:--all t " %k %d (%v)" "Stage all modified and deleted files" nil nil nil nil nil nil nil nil nil "--all" "-a" nil unbound nil nil nil nil nil nil nil nil] object))

transient-setup(magit-commit)

magit-commit()

funcall-interactively(magit-commit)

call-interactively(magit-commit nil nil)

command-execute(magit-commit)
1
0

Issues like this happen because of one of these reasons:

  • Some backward incompatible change in Emacs itself that requires that the byte-code is regenerated. If you recently updated Emacs, then that's likely the cause.

  • Some backward incompatible change in one of the involved libraries itself, which is of a nature that causes the old now invalid incarnation of the thing to leak into the byte-code generated from the new source, if the compilation happens while the old version of the library has already been loaded.

    This seems to happen a lot when Eieio is involved. package.el should really use a separate emacs instance to prevent this sort of issue.

  • If a macro is defined in one package and used in another package, then the package that uses it might have to be recompiled when the definition changes. This could be addressed by dumping dependencies, but it often gets overlooked.


In this case you should be able to fix it by uninstalling magit and transient, exiting Emacs (that is very important), restarting Emacs, and then reinstalling.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.