Florian Paul Schmidt (2015-12-12 12:00 +0300) wrote: > On 12.12.2015 09:50, Alex Kost wrote: >> Currently, if you try to run a repl command (for example, "M-x >> guix-installed-packages") in a second Emacs instance, you'll get >> an unfriendly error. That's because `guix-default-port' is busy >> already (by another Guix REPL), so you either have to change it >> manually or use (setq guix-use-guile-server nil). So with the >> attached patch, a socket file with a generated name will be used >> instead of a port, which allows you to run as many Emacs instances >> with Guix REPLs as you want. >> >> Many thanks to Florian for the great idea! >> >> There is one small thing though: Guile does not remove socket file >> after exiting from "guile --listen=/tmp/foo" so these dead sockets >> will stay in /tmp dir. As there is no `comint-exit-hook' or alike, >> I don't see how a socket file can be removed after the REPL is >> killed. >> > > Hi, > > maybe wrap it into an mktemp call? Sorry, I have to run for a meeting > now, but isn't there some semantics to mktemp, that the file > "disappears" directly, but the fd is kept open? Maybe a little bash > wrapper or maybe some elisp magic do the job?
Thanks, I didn't know about "mktemp", but I don't see how it can help as it just creates a temporary file (elisp procedure `make-temp-file' does the same). But the problem is not to create a file, but to delete it. After all, I think the best (actually I don't see the other ways) would be to remove a socket file during emacs exit. -- Alex
