Mercurial > emacs
diff src/frame.c @ 53233:fe9b37bee5f7
Fully eliminated global tty state variables.
lib-src/emacsclient.c (main.c): Fix error message.
lisp/frame.el (make-frame-on-tty): New function.
lisp/server.el (server-process-filter): Notify emacsclient if there
was on error during evaluation.
src/cm.c: Fix remaining cases of direct Wcm references.
src/dispextern.h: Updated prototypes.
src/dispnew.c (Fredraw_frame): Fix set_terminal_modes call.
(init_display): Remove reference to meta_key.
src/frame.c (make_terminal_frame): Renamed first parameter to
tty_name. Call term_init before creating the frame.
(Fmake_terminal_frame): Look up the `tty' and `tty-type' frame
parameters from the currently selected terminal before the global
default.
(Fdelete_frame): Make sure that the new selected frame is live.
src/keyboard.c (meta_key): Moved to struct tty_output.
(read_avail_input): Fix C syntax. Update references to meta_key.
(Fsuspend_emacs): pass current tty to init_sys_modes via
record_unwind_protect.
(Fset_input_mode): Update references to meta_key.
(Fcurrent_input_mode): Ditto.
src/sysdep.c (init_sys_modes): Updated old_tty and meta_key
references. Don't call set_terminal_modes, it needs termcap strings.
(reset_sys_modes): Call tty_reset_terminal_modes instead of
reset_terminal_modes. Updated old_tty references.
src/term.c: Massive updates throuout the file.
(TS_*, TN_*): Moved to struct tty_output.
(RPov, delete_in_insert_mode se_is_so, costs_set, insert_mode): Ditto.
(standout_mode, specified_window, tty_cursor_hidden): Ditto.
(tty_set_terminal_modes, tty_reset_terminal_modes): New functions.
(turn_on_insert, turn_off_insert): Added tty parameter.
(turn_on_highlight, turn_off_highlight, toggle_highlight): Added tty parameter.
(tty_hide_cursor, tty_show_cursor): Ditto.
(background_highlight, highlight_if_desired): Ditto.
(tty_capable_p): Changed first parameter to tty_output.
(term_init): Make sure top_frame is initialized. Don't exit on errors
if this would have been a secondary terminal. Call set_terminal_modes
on the end.
(delete_tty): New function.
(delete_tty_1): New function.
(print_all_frames): New function, marginally useful for debugging.
src/termchar.h (struct tty_output): Changed old_tty to be a pointer.
Removed old_tty_valid member. Added tty-specific variables from term.c.
src/xfaces.c (Ftty_supports_face_attributes_p): Update for new
tty_capable_p.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-9
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 27 Dec 2003 10:00:19 +0000 |
parents | 22aaf1e5fbe6 |
children | e77dcb66ec84 |
line wrap: on
line diff
--- a/src/frame.c Sat Dec 27 01:12:57 2003 +0000 +++ b/src/frame.c Sat Dec 27 10:00:19 2003 +0000 @@ -478,14 +478,21 @@ static int terminal_frame_count; struct frame * -make_terminal_frame (tty, tty_type) - char *tty; +make_terminal_frame (tty_name, tty_type) + char *tty_name; char *tty_type; { register struct frame *f; Lisp_Object frame; char name[20]; - + struct tty_output *tty; + + /* init_term may throw an error, so create the tty first. */ + if (initialized) + tty = term_init (tty_name, tty_type); + else + tty = term_dummy_init (); + #ifdef MULTI_KBOARD if (!initial_kboard) { @@ -544,10 +551,7 @@ make_mac_terminal_frame (f); #else f->output_method = output_termcap; - if (initialized) - f->output_data.tty = term_init (tty, tty_type); - else - f->output_data.tty = term_dummy_init (); + f->output_data.tty = tty; f->output_data.tty->top_frame = frame; #ifdef CANNOT_DUMP FRAME_FOREGROUND_PIXEL(f) = FACE_TTY_DEFAULT_FG_COLOR; @@ -608,6 +612,8 @@ /* XXX Ugh, there must be a better way to do this. */ tty = Fassq (Qtty, parms); if (EQ (tty, Qnil)) + tty = Fassq (Qtty, XFRAME (selected_frame)->param_alist); + if (EQ (tty, Qnil)) tty = Fassq (Qtty, Vdefault_frame_alist); if (! EQ (tty, Qnil)) tty = XCDR (tty); @@ -617,6 +623,8 @@ tty_type = Fassq (Qtty_type, parms); if (EQ (tty_type, Qnil)) tty_type = Fassq (Qtty_type, Vdefault_frame_alist); + if (EQ (tty_type, Qnil)) + tty_type = Fassq (Qtty, XFRAME (selected_frame)->param_alist); if (! EQ (tty_type, Qnil)) tty_type = XCDR (tty_type); if (EQ (tty_type, Qnil) || !STRINGP (tty_type)) @@ -1300,7 +1308,7 @@ { FOR_EACH_FRAME (tail, frame1) { - if (! EQ (frame, frame1)) + if (! EQ (frame, frame1) && FRAME_LIVE_P (XFRAME (frame1))) break; } }