1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-02-03 20:24:29 +00:00

Make emacsclient refuse to create a frame inside an Emacs term buffer.

lib-src/emacsclient.c (main): Exit with failure if the terminal type
is `eterm' (Emacs term buffer).

git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-104
This commit is contained in:
Karoly Lorentey 2004-02-27 14:10:47 +00:00
parent f70dd00951
commit 2fc0cf2aef
2 changed files with 33 additions and 9 deletions

View File

@ -246,13 +246,6 @@ THINGS TO DO
why raw terminal support is broken again. I really do need to
understand input.)
** emacsclient -t from an Emacs term buffer does not work, complains
about face problems. This can even lock up Emacs (if the recursive
frame sets single_kboard). Update: the face problems are caused by
bugs in term.el, not in multi-tty. The lockup is caused by
single_kboard mode, and is not easily solvable. The best thing to
do is to simply refuse to create a tty frame of type `eterm'.
** Maybe standard-display-table should be display-local.
DIARY OF CHANGES
@ -663,4 +656,15 @@ DIARY OF CHANGES
narrow_foreground_group. tcsetpgrp blocks if it is called from a
process that is not in the same process group as the tty.)
-- emacsclient -t from an Emacs term buffer does not work, complains
about face problems. This can even lock up Emacs (if the recursive
frame sets single_kboard). Update: the face problems are caused by
bugs in term.el, not in multi-tty. The lockup is caused by
single_kboard mode, and is not easily solvable. The best thing to
do is to simply refuse to create a tty frame of type `eterm'.
(Fixed, changed emacsclient to check for TERM=eterm. The face
complaints seem to be caused by bugs in term.el; they are not
related to multi-tty.)
;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d

View File

@ -588,15 +588,35 @@ To start the server in Emacs, type \"M-x server-start\".\n",
if (tty)
{
char *tty_name = ttyname (fileno (stdin));
char *type = getenv ("TERM");
if (! tty_name)
fail ();
{
fprintf (stderr, "%s: could not get terminal name\n", progname);
fail ();
}
if (! type)
{
fprintf (stderr, "%s: please set the TERM variable to your terminal type\n",
progname);
fail ();
}
if (! strcmp (type, "eterm"))
{
/* This causes nasty, MULTI_KBOARD-related input lockouts. */
fprintf (stderr, "%s: opening a frame in an Emacs term buffer"
" is not supported\n", progname);
fail ();
}
init_signals ();
fprintf (out, "-tty ");
quote_file_name (tty_name, out);
fprintf (out, " ");
quote_file_name (getenv("TERM"), out);
quote_file_name (type, out);
fprintf (out, " ");
}