From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Can emacsclient send environment variables even if it doesn't create a frame? Date: Sat, 01 Apr 2023 16:54:50 +0300 Message-ID: <83ttxzyafp.fsf@gnu.org> References: <83bkkb7e6s.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="15867"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Yoichi Nakayama Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Apr 01 15:55:19 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pibhO-0003sS-1y for ged-emacs-devel@m.gmane-mx.org; Sat, 01 Apr 2023 15:55:18 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pibgk-0005Dr-Gg; Sat, 01 Apr 2023 09:54:38 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pibgi-0005BY-2N for emacs-devel@gnu.org; Sat, 01 Apr 2023 09:54:36 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pibgh-0007ah-Hp; Sat, 01 Apr 2023 09:54:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=wMeS+fACLyB+WJnL057FlvAuHuufyBoLA8gYR3MhsbI=; b=IaeKXVtYF6iaHnA/jSWD TwYHtBhLIRgFpQEhyPUDuMyqLDf3AoUu1fhDcR8hD+b+6cPNPUXc8bxHX01og+hejH+nh+CC6Gx9w Qi/YarNX6/3DXe0Hoa/MJjKNfBtjnaDOkG7qQqd8AZXmYjfERWzBk9rK7TosyN6rLwV50MMTPSu84 uvPBK8w9tfVZz7VGRkB5KywVbffC29F6keMasM767BagRlV6ohOxV4CbXdJrmyIOOLiVa+NEiSSiK QVJt6OKstZcsAIQkf6gnfDqTF341hKY16qk+iAJaxtz42cDuKWzvutr4HMncL6AeAyNnxDVukoyNt hE1P16zQHKhdSQ==; Original-Received: from [87.69.77.57] (helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pibgf-0004XW-MU; Sat, 01 Apr 2023 09:54:35 -0400 In-Reply-To: (message from Yoichi Nakayama on Sat, 1 Apr 2023 22:37:30 +0900) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:305010 Archived-At: > From: Yoichi Nakayama > Date: Sat, 1 Apr 2023 22:37:30 +0900 > Cc: emacs-devel@gnu.org > > On Thu, Mar 30, 2023 at 12:46 AM Eli Zaretskii wrote: > > > > > From: Yoichi Nakayama > > > Date: Wed, 29 Mar 2023 22:45:09 +0900 > > > > > > Currently, emacsclient sends environment variables to the server process only > > > if it is going to create a frame. So it is impossible to refer to environment > > > variables when calling EDITOR=emacsclient from other programs. > > > In contrast, if EDITOR="emacsclient -t" or EDITOR="emacsclient -c" (that is, > > > emacsclient creates new frames), you can refer emacsclient's environment > > > variables via server-buffer-clients. > > > > > > Is it possible to eliminate the following conditional branching by create_frame > > > in lib-src/emacsclient.c? > > > > That would mean a single frame could "inherit" environment variables > > from different shells, which will be at least confusing, if not > > contradictory. For example, what about environment variables like > > PATH? > > No, it will not update the frame-parameter of the existing frame. > I’ve confirmed > (frame-parameter nil 'environment) => nil > on the window/buffer created by the modified emacsclient, while > (process-get (car server-buffer-clients) 'env) > returns environment variables on it. That's because we currently refrain from changing the 'environment' frame parameter -- we tried at some point, and it caused problems we decided to defer to later. But it is still an option to do that at some point, and so I don't want to block that possibility for trhe benefit of this use case. > > Why cannot you call emacsclient in that case with -t or -c option? > > AFAIR, Git can use a Git-special variable GIT_EDITOR, so you could > > define that to create a new frame without affecting the more general > > EDITOR setting. > > I can use emacsclient with -t or -c option, and I can also use emacsclient > without those option too. If we don't have magit installed, we can edit the > commit message in either case, without any restrictions. > > If we have magit installed, in addition to the window for editing the commit > message, it also opens a window for the change diff. I'm trying to fix an > issue with magit that sometimes presents incorrect change diffs. > I found a fix that uses GIT_INDEX_FILE in the client's environment variables > https://github.com/magit/magit/pull/4888 > but it doesn't work if emacsclient doesn't open a new frame. Because > if emacsclient doesn't create a frame, emacsclient's environment variables > aren't passed to the server side and there is no way to use them. I asked why you cannot invoke emacsclient to create a frame, if that will solve your problem? Why do you have to insist on using an existing frame? What am I missing here?