comparison lisp/frame.el @ 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 a77e35d5d0c2
children 3b1f99f17618
comparison
equal deleted inserted replaced
53232:22aaf1e5fbe6 53233:fe9b37bee5f7
556 (interactive "sMake frame on display: ") 556 (interactive "sMake frame on display: ")
557 (or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display) 557 (or (string-match "\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" display)
558 (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN")) 558 (error "Invalid display, not HOST:SERVER or HOST:SERVER.SCREEN"))
559 (make-frame (cons (cons 'display display) parameters))) 559 (make-frame (cons (cons 'display display) parameters)))
560 560
561 ;;;###autoload
562 (defun make-frame-on-tty (device type &optional parameters)
563 "Make a frame on terminal DEVICE which is of type TYPE (e.g., \"xterm\").
564 The optional third argument PARAMETERS specifies additional frame parameters.
565
566 DEVICE must be a proxy psudo terminal created by emacsclient,
567 otherwise there will be problems with terminal input and window
568 resizes. (The kernel notifies processes about pending input or
569 terminal resizes only on the controlling terminal, so we need
570 emacsclient to sit on the real terminal device, create SIGIO
571 signals upon terminal input, and forward SIGWINCH signals to
572 us.)"
573 (unless device
574 (error "Invalid terminal device"))
575 (unless type
576 (error "Invalid terminal type"))
577 (make-frame `((tty . ,device) (tty-type . ,type) . ,parameters)))
578
561 (defun make-frame-command () 579 (defun make-frame-command ()
562 "Make a new frame, and select it if the terminal displays only one frame." 580 "Make a new frame, and select it if the terminal displays only one frame."
563 (interactive) 581 (interactive)
564 (if (and window-system (not (eq window-system 'pc))) 582 (if (and window-system (not (eq window-system 'pc)))
565 (make-frame) 583 (make-frame)