In case we have a "storm" of emacsclient requests coming at the same time, our process filters ended up running nested within each other, eating up the stack and causing errors. Try and be more careful with our use of `sit-for` in the process filter, and make sure our process filters are run one at a time. * lisp/server.el (server--message-sit-for): New function. (server--process-filter-1): New function, extracted from `server-process-filter`. Use `server--message-sit-for` to display the messages and use `run-with-timer` to delay the `delete-process`. (server--process-filter-pending, server--process-filter-active): New vars. (server--process-filter-all-pending): New function. (server-process-filter): Use them.
85 KiB
85 KiB