Mercurial > emacs
changeset 83362:c3dd82172ed1
Enforce the presence of `window-system' and `tty-type' frame parameters in all frames.
* src/dispnew.c (init_display): Set up `window-system' and `tty-type'
frame parameters in the initial tty frame.
* src/frame.c (Fmake_terminal_frame): Look up the `tty-type' frame
parameter, not `tty' when discovering the tty type of the new frame.
Initialize `tty' and `tty-type' frame parameters in the new frame.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-402
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Wed, 07 Sep 2005 23:28:54 +0000 |
parents | 39de99cd3f08 |
children | 3d2bc61f2da0 |
files | README.multi-tty src/dispnew.c src/frame.c |
diffstat | 3 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/README.multi-tty Wed Sep 07 23:17:07 2005 +0000 +++ b/README.multi-tty Wed Sep 07 23:28:54 2005 +0000 @@ -398,13 +398,17 @@ > The reason is that terminal-init-xterm calls > xterm-register-default-colors which calls (display-color-cells (selected-frame)) > and probably `selected-frame' is not completely setup at that time. - + ** emacsclient --no-wait and --eval is currently broken. ** xt-mouse.el needs to be adapted for multi-tty. It currently signals an error on kill-emacs under X, which prevents the user from exiting Emacs. (Reported by Mnemonikk on freenode.) +** Consider the `tty-type' frame parameter and the `display-tty-type' + function. They serve the exact same purpose. I think it may be + a good idea to eliminate one of them, preferably `tty-type'. + ** The handling of lisp/term/*.el, and frame creation in general, is a big, big mess. How come the terminal-specific file is loaded by tty-create-frame-with-faces? I don't think it is necessary to load @@ -1213,6 +1217,7 @@ frame is selected. (Done.) + ;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d
--- a/src/dispnew.c Wed Sep 07 23:17:07 2005 +0000 +++ b/src/dispnew.c Wed Sep 07 23:28:54 2005 +0000 @@ -6776,7 +6776,9 @@ d->reference_count++; d->display_info.tty->top_frame = selected_frame; - change_frame_size (XFRAME (selected_frame), FrameRows (d->display_info.tty), FrameCols (d->display_info.tty), 0, 0, 1); + change_frame_size (XFRAME (selected_frame), + FrameRows (d->display_info.tty), + FrameCols (d->display_info.tty), 0, 0, 1); /* Delete the initial display. */ if (--initial_device->reference_count == 0 @@ -6784,9 +6786,11 @@ (*initial_device->delete_device_hook) (initial_device); /* Update frame parameters to reflect the new type. */ + Fmodify_frame_parameters (selected_frame, Fcons (Fcons (Qwindow_system, Qnil), Qnil)); Fmodify_frame_parameters (selected_frame, Fcons (Fcons (Qtty_type, Fdisplay_tty_type (selected_frame)), Qnil)); + Fmodify_frame_parameters (selected_frame, Fcons (Fcons (Qtty, Qnil), Qnil)); } {
--- a/src/frame.c Wed Sep 07 23:17:07 2005 +0000 +++ b/src/frame.c Wed Sep 07 23:28:54 2005 +0000 @@ -661,6 +661,8 @@ struct device *d = NULL; Lisp_Object frame, tem; struct frame *sf = SELECTED_FRAME (); + Lisp_Object tty, tty_type; + struct gcpro gcpro1, gcpro2; #ifdef MSDOS if (sf->output_method != output_msdos_raw @@ -693,7 +695,6 @@ if (!d) { - Lisp_Object tty, tty_type; char *name = 0, *type = 0; tty = Fassq (Qtty, parms); @@ -711,7 +712,7 @@ tty_type = Fassq (Qtty_type, parms); if (EQ (tty_type, Qnil)) - tty_type = Fassq (Qtty, XFRAME (selected_frame)->param_alist); + tty_type = Fassq (Qtty_type, XFRAME (selected_frame)->param_alist); if (EQ (tty_type, Qnil) && FRAME_TERMCAP_P (XFRAME (selected_frame)) && FRAME_TTY (XFRAME (selected_frame))->type) tty_type = build_string (FRAME_TTY (XFRAME (selected_frame))->type); @@ -750,10 +751,14 @@ adjust_glyphs (f); calculate_costs (f); XSETFRAME (frame, f); + GCPRO2 (tty_type, tty); Fmodify_frame_parameters (frame, Vdefault_frame_alist); Fmodify_frame_parameters (frame, parms); Fmodify_frame_parameters (frame, Fcons (Fcons (Qwindow_system, Qnil), Qnil)); - + Fmodify_frame_parameters (frame, Fcons (Fcons (Qtty_type, tty_type), Qnil)); + Fmodify_frame_parameters (frame, Fcons (Fcons (Qtty, tty), Qnil)); + UNGCPRO; + /* Make the frame face alist be frame-specific, so that each frame could change its face definitions independently. */ f->face_alist = Fcopy_alist (sf->face_alist);