The client already knew the moment: flan-dev--absorb reads :stopped off every reply and the poll covers the case where no reply is coming. This is a hook at that point, not new plumbing. Deferred through a zero-delay timer, which is the part that is not optional. absorb notices the stop in the middle of reading a reply on the socket, with flan-dev--busy bound, and showing the buffer asks the daemon three more questions — break, layout, backtrace. Issuing those from inside the read they were triggered by would interleave two conversations on one connection. The deferred call re-checks the state rather than trusting the edge that scheduled it, because by then the edge has been consumed and the program may have been resumed. Three decisions, settled and written down beside the code. It displays and does not select. A program stops on its own clock, not the editor's, and the likeliest moment is a frame of its own game loop while someone is typing somewhere else. Taking the window would send the next keystrokes where they were not aimed. `focus' is there for anyone who disagrees, and nil goes back to the mode line alone. (pause) is not a special case, though it was worth asking: it is deliberate at the moment it is *written*, and the frame it fires on still arrives whenever the program gets there, which is no more expected than an error. What it does get is an honest headline. (pause) is `error' under a `restart-case', so nothing in the compiler knows a breakpoint from a failure and this buffer is the first place that can — calling it unhandled is a small lie at the top of the one buffer that exists to say what happened. A stop mid-edit disturbs nothing, which falls out of displaying rather than selecting. Two guards go past that: nothing happens under an active minibuffer, because a prompt is modal and rearranging windows under one is hostile; and nothing happens inside a keyboard macro, because a macro that behaves differently depending on whether the program stopped cannot be trusted. In both cases the mode line still says stopped and C-c C-b still works.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%