An overlay that lasted until the next accepted evaluation was a durable annotation on the source, which is not what it is: it is feedback about the action that just failed, and the moment you move, type or evaluate it is describing a program state nobody is in any more. pre-command-hook rather than post-command-hook, which fires at the end of the failing command and would take the overlay down before redisplay ever drew it. Buffer-local and installed only while an overlay exists, so a session of twenty buffers does not end up running this on every keystroke in all of them.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%