Package: Emacs Version: 31.0.50 I think we should clean up our use of "condition objects", i.e. those objects created (internally) by `signal` and then passed back to ELisp via the VAR argument of `condition-case`. I manually re-ordered the patch so that it starts with `subr.el` where you can see the new definitions I suggest, and then the rest of the patch illustrates how they'd be used. The patch is not intended to be installed as-is because it changes some files which need to preserve backward compatibility with Emacsen without the new API. Also the patch lacks the "main" change which would be to replace the (almost 100) occurrences of (signal (car FOO) (cdr FOO)) with (condition-resignal FOO) Beside whether we want to do this or not, there is another question about naming: currently we use "condition" in some places (e.g. in `condition-case`) but we use "error" in others (e.g. `define-error` and `error-message-string`). I chose to use "condition" in the patch below, but I don't have a strong opinion on that choice, so I could go with "error" if that's what other prefer. If we keep "condition" there's the subsidiary question whether we should add aliases for `define-error` and `error-message-string`. Stefan