From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH] emacs: Use socket instead of port. Date: Tue, 15 Dec 2015 12:33:36 +0300 Message-ID: <87poy8caz3.fsf@gmail.com> References: <87y4d08304.fsf@gmail.com> <566BE221.2020704@gmx.net> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:45061) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a8lzK-0001xo-FQ for guix-devel@gnu.org; Tue, 15 Dec 2015 04:33:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a8lzH-0008Tl-7v for guix-devel@gnu.org; Tue, 15 Dec 2015 04:33:42 -0500 Received: from mail-lf0-x236.google.com ([2a00:1450:4010:c07::236]:33733) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a8lzH-0008Tf-0i for guix-devel@gnu.org; Tue, 15 Dec 2015 04:33:39 -0500 Received: by mail-lf0-x236.google.com with SMTP id p203so2204962lfa.0 for ; Tue, 15 Dec 2015 01:33:38 -0800 (PST) In-Reply-To: <566BE221.2020704@gmx.net> (Florian Paul Schmidt's message of "Sat, 12 Dec 2015 10:00:17 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Florian Paul Schmidt Cc: guix-devel@gnu.org 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