aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2003-12-27 10:00:19 +0000
committerKaroly Lorentey2003-12-27 10:00:19 +0000
commitfca177d467f0264cab4256a67175fc52fba42f2e (patch)
treeaac26ce7368d3cffc254b50f4474b03430f025ee /lisp
parent6548cf002c635f6799e2e127393128842be35632 (diff)
downloademacs-fca177d467f0264cab4256a67175fc52fba42f2e.tar.gz
emacs-fca177d467f0264cab4256a67175fc52fba42f2e.zip
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
Diffstat (limited to 'lisp')
-rw-r--r--lisp/frame.el18
-rw-r--r--lisp/server.el15
2 files changed, 27 insertions, 6 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index 367f40d6f8e..1dbf8321bf3 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -558,6 +558,24 @@ The optional second argument PARAMETERS specifies additional frame parameters."
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\").
564The optional third argument PARAMETERS specifies additional frame parameters.
565
566DEVICE must be a proxy psudo terminal created by emacsclient,
567otherwise there will be problems with terminal input and window
568resizes. (The kernel notifies processes about pending input or
569terminal resizes only on the controlling terminal, so we need
570emacsclient to sit on the real terminal device, create SIGIO
571signals upon terminal input, and forward SIGWINCH signals to
572us.)"
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)
diff --git a/lisp/server.el b/lisp/server.el
index f2c1fc9ce2a..9721dbc4a41 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -345,12 +345,15 @@ PROC is the server process. Format of STRING is \"PATH PATH PATH... \\n\"."
345 (if coding-system 345 (if coding-system
346 (setq arg (decode-coding-string arg coding-system))) 346 (setq arg (decode-coding-string arg coding-system)))
347 (if eval 347 (if eval
348 (let ((v (eval (car (read-from-string arg))))) 348 (condition-case err
349 (when v 349 (let ((v (eval (car (read-from-string arg)))))
350 (with-temp-buffer 350 (when v
351 (let ((standard-output (current-buffer))) 351 (with-temp-buffer
352 (pp v) 352 (let ((standard-output (current-buffer)))
353 (process-send-region proc (point-min) (point-max)))))) 353 (pp v)
354 (process-send-region proc (point-min) (point-max))))))
355 (error (process-send-string proc (concat "*Error* " (error-message-string err)))))
356
354 ;; ARG is a file name. 357 ;; ARG is a file name.
355 ;; Collapse multiple slashes to single slashes. 358 ;; Collapse multiple slashes to single slashes.
356 (setq arg (command-line-normalize-file-name arg)) 359 (setq arg (command-line-normalize-file-name arg))