Closed wasamasa closed 4 years ago
Oh, I see. It's good circe
has it's source code on GH ;)
In tls-filter
there's a call to set-process-plist
https://github.com/jorgenschaefer/circe/blob/master/make-tls-process.el#L160
which replaces the process's plist with the argument given, but explain-pause-mode
has also stored its own data in that plist. So that is stomping the data explain-pause-mode
keeps to keep track of the command parent of the filter.
Reduced repro is like
(setq proc (make-process
:name "test"
:buffer "test"
:command '("cat")
:filter 'my-filter))
(set-process-plist proc nil)
Thanks, let me fix this bug first, then the other bug you reported, 🙂
I think I'm going to advise set-process-plist
so that the various explain-pause-*
plist values are never lost.
set-process-plist
is never called from C code, so this feels safe.
An alternate approach would to have a hashmap and key every process into the hashmap, but then I have to do record keeping on the hash map, and delete entries when processes end, and it's not O(1) always, only on average.
So I think advising is probably the easiest and cleanest way to fix this.
^- should be fixed now, give HEAD a try @wasamasa thanks ❤️
Thanks, that fixed it.
Backtrace after initial connection attempt:
Backtrace after reconnection attempt: