unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: David Kastrup <dak@gnu.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Andreas Schwab <schwab@suse.de>,
	Dan Nicolaescu <dann@ics.uci.edu>,
	Karoly Lorentey <karoly@lorentey.hu>,
	joakim@verona.se, emacs-devel@gnu.org
Subject: Re: Multi-tty design (Re: Reordering etc/NEWS)
Date: Thu, 17 May 2007 15:12:52 +0200	[thread overview]
Message-ID: <851whfzj8r.fsf@lola.goethe.zz> (raw)
In-Reply-To: <jwvlkfon5qz.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Wed\, 16 May 2007 11\:41\:47 -0400")

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> 	- At least some environment variables _must_ behave locally;
>> 	if not client-locally, then at least terminal-locally.
>> 	DISPLAY is perhaps the most obvious example.  X clients such
>> 	as xdvi started from Emacs must appear on the display the user
>> 	currently works on.
>
> Actually, the DISPLAY environment should behave that way even
> without the use of emacsclient (when you use make-frame-on-display).

Agreed.  But terminal-locality is all that is required (and in my
opinion appropriate) here.  And it is _not_ a matter of "exporting"
the start _environment_, but rather of exporting the start _settings_.

I would argue that an Emacs started with
DISPLAY=:0.0 emacs -display :1.0
should export an environment variable DISPLAY=:1.0 to its subprocesses
unless explicitly overridden.  This is somewhat complicated by the
situation given with
DISPLAY=:0.0 emacs -nw
In this case, I would still want to export :0.0 to subprocesses, and
in the case
DISPLAY=:0.0 emacs -nw -display :1.0
I would suggest a non-graphical instance of Emacs exporting a DISPLAY
variable of :1.0.

>> 	  This is an important feature for multi-tty users and I would
>> 	  like to keep it supported.  Similar variables include
>> 	  SSH_AUTH_SOCK, GPG_AGENT_INFO, AGENT_SOCKET, LANG, LC_*, and
>> 	  basically anything that may be different from login session
>> 	  to login session.
>
> I don't think the vars you list are particularly important.  Which
> version of those vars to use (the one from the emacsclient process
> or from the main Emacs process) may depend from case to case.  So
> either choice is probably OK.

Where Emacs' behavior depends on such variables, it might make sense
to let them influence Emacs' behavior in terminal-local entities, and
have a default export mechanism based on those terminal-local recorded
settings.  It would seem desirable to have parallel terminal sessions
from an iso-8859-1 terminal and a utf-8 terminal into Emacs possible
without getting garbled screens.  In particular the ability to edit
right-to-left languages in a terminal capable of RTL languages, while
keeping a non RTL-capable environment for other tasks, might be one
step in the course of getting Emacs usable in RTL environments.

> I tend to think of emacsclient as "connect to the main Emacs
> process", so I tend to expect it to work in the environment of the
> main Emacs process.  You seem to think of it as "pretend you're a
> normal Emacs process, just quick-started", so you expect a slightly
> different behavior.

And I don't think that Emacs can actually be even close to satisfying
the second paradigm, so there is little sense in doing a half-baked
version of it and failing.

>> 	- For the user, there is a strong sense of connection between
>> 	an emacsclient instance and its set of frames.  If emacsclient
>> 	exits, then its frames are deleted and vice versa.  C-x C-c
>> 	kills emacsclient, not the entire Emacs process.  All this
>> 	feels very natural and fits a range of common use-cases,
>> 	particularly the ones involving quick editing jobs from the
>> 	command prompt.  (These are the ones for which Emacs was so
>> 	infamously not well suited before.)
>
> Yes, it's probably OK to use frames as an approximation of
> "terminal" or "display" or "client".

I disagree.  If I have two frames side by side displaying the same
buffer, it will be extremely confusing if using setenv in one frame
will not have an effect on the other frame when calling commands with
M-!.

Any setenv on the same _terminal_ should certainly affect the
operation on the other end.  And I claim that for not display-related
environment variables like "PATH", the same should hold _across_
terminals.  terminal-specific variables like "DISPLAY" and possibly a
subset of LC* variables should, in contrast, usually be managed
terminal-locally.

>> 	- Furthermore, to me it seems more consistent to have all
>> 	environment variables be local than just a select few of them.
>
> I don't find it important, but it doesn't seem to be bad either.

Disagree.  It makes shell buffers behave totally unpredictable across
terminals (or even worse, frames): the sequence
exit RET M-x shell RET
usually gets rid of environment variables set within the shell
session.  It would not be nice to have to guess what behavior will
result.

AUCTeX, for example, contains code like the following:

(defun preview-set-texinputs (&optional remove)
  "Add `preview-TeX-style-dir' into `TEXINPUTS' variables.
With prefix argument REMOVE, remove it again."
  (interactive "P")
  (let ((case-fold-search nil)
	(preview-TeX-style-dir (preview-TeX-style-cooked))
	pattern)
    (if remove
	(progn
	  (setq pattern (concat "\\`\\(TEXINPUTS[^=]*\\)=\\(.*\\)"
				(regexp-quote preview-TeX-style-dir)))
	  (dolist (env (copy-sequence process-environment))
	    (if (string-match pattern env)
		(setenv (match-string 1 env)
			(and (or (< (match-beginning 2) (match-end 2))
				 (< (match-end 0) (length env)))
			     (concat (match-string 2 env)
				     (substring env (match-end 0))))))))
      (setq pattern (regexp-quote preview-TeX-style-dir))
      (dolist (env (cons "TEXINPUTS=" (copy-sequence process-environment)))
	(if (string-match "\\`\\(TEXINPUTS[^=]*\\)=" env)
	    (unless (string-match pattern env)
	      (setenv (match-string 1 env)
		      (concat preview-TeX-style-dir
			      (substring env (match-end 0))))))))))

(defcustom preview-TeX-style-dir nil
  "This variable contains the location of uninstalled TeX styles.
If this is nil, the preview styles are considered to be part of
the installed TeX system.

Otherwise, it can either just specify an absolute directory, or
it can be a complete TEXINPUTS specification.  If it is the
latter, it has to be followed by the character with which
kpathsea separates path components, either `:' on Unix-like
systems, or `;' on Windows-like systems.  And it should be
preceded with .: or .; accordingly in order to have . first in
the search path.

The `TEXINPUT' environment type variables will get this prepended
at load time calling \\[preview-set-texinputs] to reflect this.
You can permanently install the style files using
\\[preview-install-styles].

Don't set this variable other than with customize so that its
changes get properly reflected in the environment."
  :group 'preview-latex
  :set (lambda (var value)
	 (and (boundp var)
	      (symbol-value var)
	      (preview-set-texinputs t))
	 (set var value)
	 (and (symbol-value var)
	      (preview-set-texinputs)))
  :type '(choice (const :tag "Installed" nil)
		 (string :tag "Style directory or TEXINPUTS path")))


It is a straightforward manipulation of process-environment intended
to work for the entire session, on variables that have nothing to do
with the DISPLAY.

We don't want to have _any_ such code just break.  It is _not_ code
that is written sloppily or making unfounded assumptions.  It needs to
access all environment variables obeying a given pattern and
manipulate them.  It does this by looping through process-environment
(more exactly, a copy of it so that the exact implementation of setenv
can't interfere with the loop).  This is completely straightforward,
not related to multi-tty-ness at all, and we don't want such usage to
break.

> So I'd leave it as a choice that can be determined by the
> implementation.

Guffah.  Uh, the implementation will, _of_ _course_, determine _every_
choice.  That's why we are discussing it.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

  reply	other threads:[~2007-05-17 13:12 UTC|newest]

Thread overview: 251+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-04 21:17 Reordering etc/NEWS Richard Stallman
2007-05-05 22:42 ` Glenn Morris
2007-05-05 22:49   ` Jason Rumney
2007-05-06 17:57   ` Richard Stallman
2007-05-06 18:18     ` Glenn Morris
2007-05-06 20:28     ` Eli Zaretskii
2007-05-07 16:50       ` Richard Stallman
2007-05-07 17:07         ` David Kastrup
2007-05-08  6:27           ` Jan Djärv
2007-05-07 17:36         ` Glenn Morris
2007-05-07 18:05           ` David Kastrup
2007-05-07 17:53         ` spect. [Was: Reordering etc/NEWS] Alan Mackenzie
2007-05-07 18:16           ` Mathias Dahl
2007-05-07 21:51         ` Reordering etc/NEWS Eli Zaretskii
2007-05-07 22:04           ` David Kastrup
2007-05-08 18:09           ` Richard Stallman
2007-05-08 21:09             ` David Kastrup
2007-05-09  8:57             ` Kim F. Storm
2007-05-09  9:23               ` David Kastrup
2007-05-09 17:54               ` JD Smith
2007-05-09 19:42                 ` Eli Zaretskii
2007-05-09 19:59                   ` JD Smith
2007-05-09 20:29                 ` Stefan Monnier
2007-05-09 20:54                   ` Nick Roberts
2007-05-10 13:05                 ` Richard Stallman
2007-05-09 21:56               ` Karl Fogel
2007-05-09 22:15                 ` David Kastrup
2007-05-09 22:25                   ` Karl Fogel
2007-05-09 22:32                     ` David Kastrup
2007-05-09 22:59                       ` Karl Fogel
2007-05-10  7:24                       ` Jason Rumney
2007-05-10  7:49                         ` David Kastrup
2007-05-10  8:04                           ` joakim
2007-05-10  9:19                             ` Jason Rumney
2007-05-10  9:32                               ` David Kastrup
2007-05-10  9:42                               ` joakim
2007-05-10  9:52                                 ` David Kastrup
2007-05-10 10:10                                   ` David Kastrup
2007-05-11 23:27                                     ` Karoly Lorentey
2007-05-12  7:53                                       ` David Kastrup
2007-05-12 12:09                                         ` Multi-tty design (Re: Reordering etc/NEWS) Károly Lo"rentey
2007-05-12 13:34                                           ` David Kastrup
2007-05-12 17:21                                             ` Karoly Lorentey
2007-05-12 18:03                                               ` David Kastrup
2007-05-13 11:08                                                 ` Károly Lőrentey
2007-05-13 12:50                                                   ` David Kastrup
2007-05-13 16:41                                                     ` David Kastrup
2007-05-13 17:04                                                       ` Andreas Schwab
2007-05-13 17:18                                                         ` David Kastrup
2007-05-13 18:11                                                           ` Andreas Schwab
2007-05-13 18:17                                                             ` David Kastrup
2007-05-13 18:22                                                           ` Dan Nicolaescu
2007-05-13 20:13                                                             ` David Kastrup
2007-05-13 20:41                                                               ` David Kastrup
2007-05-13 21:11                                                                 ` David Kastrup
2007-05-22  0:39                                                                   ` Giorgos Keramidas
2007-05-13 21:18                                                                 ` Dan Nicolaescu
2007-05-14  6:33                                                                   ` David Kastrup
2007-05-13 21:05                                                               ` Dan Nicolaescu
2007-05-14 10:11                                                               ` Karoly Lorentey
2007-05-14 10:37                                                                 ` David Kastrup
2007-05-14 11:35                                                                   ` Andreas Schwab
2007-05-14 12:24                                                                     ` David Kastrup
2007-05-14 12:45                                                                       ` Andreas Schwab
2007-05-14 12:52                                                                         ` David Kastrup
2007-05-14 13:36                                                                           ` Andreas Schwab
2007-05-14 13:41                                                                             ` David Kastrup
2007-05-14 13:42                                                                               ` Andreas Schwab
2007-05-14 16:48                                                                               ` Dan Nicolaescu
2007-05-14 17:29                                                                                 ` David Kastrup
2007-05-14 18:19                                                                                   ` Dan Nicolaescu
2007-05-14 19:07                                                                                     ` David Kastrup
2007-05-14 20:04                                                                                       ` Dan Nicolaescu
2007-05-14 20:24                                                                                         ` David Kastrup
2007-05-14 21:02                                                                                           ` Dan Nicolaescu
2007-05-14 21:20                                                                                             ` Jason Rumney
2007-05-14 21:49                                                                                               ` Dan Nicolaescu
2007-05-14 22:00                                                                                                 ` David Kastrup
2007-05-15 19:38                                                                                               ` Richard Stallman
2007-05-14 21:27                                                                                             ` David Kastrup
2007-05-14 22:13                                                                                               ` Dan Nicolaescu
2007-05-14 22:27                                                                                                 ` David Kastrup
2007-05-14 22:38                                                                                                   ` Thien-Thi Nguyen
2007-05-14 22:44                                                                                                     ` David Kastrup
2007-05-14 23:03                                                                                                       ` Multi-tty design Nick Roberts
2007-05-14 23:29                                                                                                         ` David Kastrup
2007-05-15  7:44                                                                                                       ` Multi-tty design (Re: Reordering etc/NEWS) Dan Nicolaescu
2007-05-15  8:24                                                                                                         ` Jason Rumney
2007-05-16  1:51                                                                                                       ` Karoly Lorentey
2007-05-14 22:59                                                                                                     ` Jason Rumney
2007-05-14 23:22                                                                                                     ` Miles Bader
2007-05-14 22:42                                                                                                   ` joakim
2007-05-14 22:55                                                                                                     ` David Kastrup
2007-05-14 22:50                                                                                                   ` Dan Nicolaescu
2007-05-14 23:05                                                                                                     ` Lennart Borgman (gmail)
2007-05-15  7:41                                                                                                       ` David Kastrup
2007-05-15 16:48                                                                                                         ` Lennart Borgman (gmail)
2007-05-14 22:35                                                                                                 ` Thien-Thi Nguyen
2007-05-15 15:53                                                                                             ` Karoly Lorentey
2007-05-16  1:41                                                                                               ` Karoly Lorentey
2007-05-16 15:41                                                                                                 ` Stefan Monnier
2007-05-17 13:12                                                                                                   ` David Kastrup [this message]
2007-05-17 15:31                                                                                                     ` Károly Lo"rentey
2007-05-17 17:00                                                                                                       ` David Kastrup
2007-05-17 20:02                                                                                                         ` Ken Raeburn
2007-05-17 21:17                                                                                                           ` David Kastrup
2007-05-18  3:36                                                                                                           ` Károly Lőrentey
2007-05-17 22:51                                                                                                       ` Stefan Monnier
2007-05-18  2:58                                                                                                         ` Karoly Lorentey
2007-05-18  7:19                                                                                                           ` David Kastrup
2007-05-18 11:04                                                                                                             ` Karoly Lorentey
2007-05-18 11:48                                                                                                               ` David Kastrup
2007-05-18 11:58                                                                                                                 ` Karoly Lorentey
2007-05-18  2:52                                                                                                       ` Miles Bader
2007-05-17 22:46                                                                                                     ` Stefan Monnier
2007-05-17 14:35                                                                                                   ` Károly Lo"rentey
2007-05-17  9:59                                                                                                 ` Richard Stallman
2007-05-17 14:05                                                                                                   ` Karoly Lorentey
2007-05-17 16:46                                                                                                 ` David Kastrup
2007-05-17 23:11                                                                                                   ` Stefan Monnier
2007-05-18  7:36                                                                                                     ` David Kastrup
2007-05-18 14:24                                                                                                       ` Stefan Monnier
2007-05-18 14:49                                                                                                         ` David Kastrup
2007-05-18 16:27                                                                                                           ` Stefan Monnier
2007-05-20  9:04                                                                                                             ` David Kastrup
2007-05-21 13:15                                                                                                               ` Stefan Monnier
2007-05-21 13:35                                                                                                                 ` David Kastrup
2007-05-22  1:54                                                                                                                   ` Miles Bader
2007-05-22  6:37                                                                                                                     ` David Kastrup
2007-05-22 15:49                                                                                                                       ` Richard Stallman
2007-05-22 21:26                                                                                                                         ` David Kastrup
2007-05-23 18:55                                                                                                                           ` Richard Stallman
2007-05-23 19:24                                                                                                                             ` David Kastrup
2007-05-24 10:55                                                                                                                               ` Richard Stallman
2007-05-24 11:04                                                                                                                                 ` David Kastrup
2007-05-18 15:18                                                                                                       ` Eli Zaretskii
2007-05-18  2:47                                                                                                   ` Karoly Lorentey
2007-05-18  8:14                                                                                                     ` David Kastrup
2007-05-18 11:55                                                                                                       ` Karoly Lorentey
2007-05-18 12:24                                                                                                         ` David Kastrup
2007-05-18 17:40                                                                                                           ` Karoly Lorentey
2007-05-18 18:18                                                                                                             ` David Kastrup
2007-05-18 23:09                                                                                                           ` Richard Stallman
2007-05-20 18:13                                                                                                             ` Károly Lo"rentey
2007-05-14 21:05                                                                                           ` David Kastrup
2007-05-12 21:52                                             ` Richard Stallman
2007-05-12 16:48                                       ` Reordering etc/NEWS Richard Stallman
2007-05-10 10:24                                   ` joakim
2007-05-10 10:24                                 ` Jason Rumney
2007-05-11 22:58                               ` Multi-tty branch status (Re: Reordering etc/NEWS) Karoly Lorentey
2007-05-12  4:20                                 ` Glenn Morris
2007-05-12  6:48                                   ` Kalle Olavi Niemitalo
2007-05-12  7:58                                     ` David Kastrup
2007-05-12 16:48                                       ` Richard Stallman
2007-05-12 10:30                                   ` Károly Lo"rentey
2007-05-12 11:11                                     ` David Kastrup
2007-05-12 21:52                                     ` Richard Stallman
2007-05-12 16:48                                 ` Richard Stallman
2007-05-12 17:25                                   ` Karoly Lorentey
2007-05-10 10:28                         ` Reordering etc/NEWS YAMAMOTO Mitsuharu
2007-05-09 22:58                     ` Nick Roberts
2007-05-10  6:21                       ` David Kastrup
2007-05-10  1:23                     ` Stefan Monnier
2007-05-10  1:43                       ` Karl Fogel
2007-05-11  7:42                   ` Richard Stallman
2007-05-11  8:03                     ` Kenichi Handa
2007-05-11  8:34                       ` Nick Roberts
2007-05-11  8:44                       ` Merging multitty (was: Reordering etc/NEWS) David Kastrup
2007-05-11  9:20                         ` Merging multitty Jason Rumney
2007-05-11 10:00                           ` David Kastrup
2007-05-11 10:25                             ` Jason Rumney
2007-05-11 11:01                               ` David Kastrup
2007-05-11 21:05                               ` Karoly Lorentey
2007-05-12 16:48                                 ` Richard Stallman
2007-05-12 17:58                                   ` David Kastrup
2007-05-14 10:52                                     ` Kenichi Handa
2007-05-12 19:32                                   ` Dan Nicolaescu
2007-05-12 19:42                                     ` David Kastrup
2007-05-12 20:19                                       ` Dan Nicolaescu
2007-05-12 20:27                                         ` David Kastrup
2007-05-12 20:30                                     ` Samium Gromoff
2007-05-11 21:10                               ` Károly Lo"rentey
2007-05-11 12:00                             ` Kenichi Handa
2007-05-11 13:14                               ` David Kastrup
2007-05-11 13:33                                 ` Juanma Barranquero
2007-05-11 13:51                                   ` David Kastrup
2007-05-11 13:57                                     ` David Kastrup
2007-05-11 14:09                                       ` Jason Rumney
2007-05-11 14:17                                     ` Juanma Barranquero
2007-05-11 14:34                                     ` Miles Bader
2007-05-11 21:34                                   ` Karoly Lorentey
2007-05-12  7:43                                     ` Eli Zaretskii
2007-05-11 13:34                               ` merging Unicode branch and availability of Windows binaries Drew Adams
2007-05-14 14:16                                 ` Drew Adams
2007-05-14 14:30                                   ` David Kastrup
2007-05-14 15:05                                     ` Drew Adams
2007-05-14 17:32                                       ` David Kastrup
2007-05-11 21:56                           ` Merging multitty Richard Stallman
2007-05-11  9:45                         ` Miles Bader
2007-05-11 10:02                           ` David Kastrup
2007-05-11 21:56                           ` Richard Stallman
2007-05-13  1:33                             ` Miles Bader
2007-05-13  3:11                               ` Nick Roberts
2007-05-13  3:27                                 ` Miles Bader
2007-05-13  4:00                                   ` Nick Roberts
2007-05-13  4:21                                     ` Miles Bader
2007-05-13 12:43                                       ` Karoly Lorentey
2007-05-14  8:08                                   ` Richard Stallman
2007-05-14 10:19                                     ` Miles Bader
2007-05-14 11:02                                     ` Karoly Lorentey
2007-05-14 14:46                                       ` Kim F. Storm
2007-05-15  9:46                                       ` Richard Stallman
2007-05-15 20:49                                         ` Eli Zaretskii
     [not found]                                         ` <4649F799.3050108@lorentey.hu>
2007-05-16  1:39                                           ` Richard Stallman
2007-05-10 13:06               ` Reordering etc/NEWS Richard Stallman
2007-05-10 14:14                 ` Juanma Barranquero
2007-05-10 14:25                   ` David Kastrup
2007-05-10 14:49                     ` Juanma Barranquero
2007-05-10 17:15                       ` David Kastrup
2007-05-10 17:21                         ` Juanma Barranquero
2007-05-10 15:53                 ` Karl Fogel
2007-05-10 17:39                   ` Ken Manheimer
2007-05-10 17:44                     ` Juanma Barranquero
2007-05-11  8:50                   ` Eli Zaretskii
2007-05-11 11:23                     ` Juanma Barranquero
2007-05-11 15:46                       ` Eli Zaretskii
2007-05-11 16:09                         ` Juanma Barranquero
2007-05-11 17:43                           ` Eli Zaretskii
2007-05-11 17:49                     ` Karl Fogel
2007-05-11 18:26                       ` Eli Zaretskii
2007-05-11 18:37                         ` Karl Fogel
2007-05-12  7:22                           ` Eli Zaretskii
2007-05-12  7:59                             ` David Kastrup
2007-05-12 13:24                               ` Eli Zaretskii
2007-05-12 16:47                           ` Richard Stallman
2007-05-11 18:48                   ` Richard Stallman
2007-05-11 21:46                     ` Karl Fogel
2007-05-10 17:13                 ` David Kastrup
2007-05-11 18:48                   ` Richard Stallman
2007-05-07 16:50       ` Richard Stallman
2007-05-07 21:37         ` Eli Zaretskii
2007-05-07 21:56           ` David Kastrup
2007-05-07 10:05     ` Alan Mackenzie
2007-05-07 10:12       ` David Kastrup
2007-05-07 13:39         ` Jay Belanger
2007-05-07 13:45           ` David Kastrup
2007-05-07 13:54             ` Thomas Hühn
2007-05-07 14:03               ` David Kastrup
2007-05-07 14:57       ` Chong Yidong
2007-05-07 23:28         ` Richard Stallman
2007-05-07 23:28       ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=851whfzj8r.fsf@lola.goethe.zz \
    --to=dak@gnu.org \
    --cc=dann@ics.uci.edu \
    --cc=emacs-devel@gnu.org \
    --cc=joakim@verona.se \
    --cc=karoly@lorentey.hu \
    --cc=monnier@iro.umontreal.ca \
    --cc=schwab@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).