diff options
| author | Karoly Lorentey | 2003-12-27 10:00:19 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2003-12-27 10:00:19 +0000 |
| commit | fca177d467f0264cab4256a67175fc52fba42f2e (patch) | |
| tree | aac26ce7368d3cffc254b50f4474b03430f025ee /lisp | |
| parent | 6548cf002c635f6799e2e127393128842be35632 (diff) | |
| download | emacs-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.el | 18 | ||||
| -rw-r--r-- | lisp/server.el | 15 |
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\"). | ||
| 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) |
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)) |