diff src/coding.c @ 83298:ed09a89e2b25

Fix UTF-8 tty input when first frame is an X frame. Steps towards multiple tty locale support. * lisp/international/mule-cmds.el (set-locale-environment): Ignore window-system; always set the keyboard coding system. * src/termhooks.h (DISPLAY_TERMINAL_CODING, DISPLAY_KEYBOARD_CODING): New macros. * src/coding.c (Fset_terminal_coding_system_internal, Fterminal_coding_system) (Fset_keyboard_coding_system_internal, Fkeyboard_coding_system): Add DISPLAY parameter. * src/term.c (get_display): Add THROW parameter. (get_tty_display, Fdisplay_name, Fdisplay_tty_type, Fdisplay_controlling_tty_p) (Fdelete_display, Fdisplay_live_p): Update callers. * src/xfns.c (check_x_display_info): Ditto. * src/frame.c (Fmake_terminal_frame, Fframe_display): Ditto. * src/dispextern.h (get_display): Update prototype. * lisp/international/mule.el (set-terminal-coding-system) (set-keyboard-coding-system): Add DISPLAY parameter. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-338
author Karoly Lorentey <lorentey@elte.hu>
date Tue, 03 May 2005 01:49:33 +0000
parents ad07ff6e4555
children e58cb448e07c
line wrap: on
line diff
--- a/src/coding.c	Tue May 03 01:38:40 2005 +0000
+++ b/src/coding.c	Tue May 03 01:49:33 2005 +0000
@@ -7305,12 +7305,13 @@
 }
 
 DEFUN ("set-terminal-coding-system-internal", Fset_terminal_coding_system_internal,
-       Sset_terminal_coding_system_internal, 1, 1, 0,
+       Sset_terminal_coding_system_internal, 1, 2, 0,
        doc: /* Internal use only.  */)
-     (coding_system)
+     (coding_system, display)
      Lisp_Object coding_system;
+     Lisp_Object display;
 {
-  struct coding_system *terminal_coding = FRAME_TERMINAL_CODING (SELECTED_FRAME ());
+  struct coding_system *terminal_coding = DISPLAY_TERMINAL_CODING (get_display (display, 1));
   CHECK_SYMBOL (coding_system);
   setup_coding_system (Fcheck_coding_system (coding_system), terminal_coding);
   /* We had better not send unsafe characters to terminal.  */
@@ -7343,33 +7344,39 @@
 }
 
 DEFUN ("terminal-coding-system", Fterminal_coding_system,
-       Sterminal_coding_system, 0, 0, 0,
-       doc: /* Return coding system specified for terminal output.  */)
-     ()
+       Sterminal_coding_system, 0, 1, 0,
+       doc: /* Return coding system specified for terminal output on the given display.
+DISPLAY may be a display id, a frame, or nil for the selected frame's display.  */)
+     (display)
+     Lisp_Object display;
 {
-  return FRAME_TERMINAL_CODING (SELECTED_FRAME ())->symbol;
+  return DISPLAY_TERMINAL_CODING (get_display (display, 1))->symbol;
 }
 
 DEFUN ("set-keyboard-coding-system-internal", Fset_keyboard_coding_system_internal,
-       Sset_keyboard_coding_system_internal, 1, 1, 0,
+       Sset_keyboard_coding_system_internal, 1, 2, 0,
        doc: /* Internal use only.  */)
-     (coding_system)
+     (coding_system, display)
      Lisp_Object coding_system;
+     Lisp_Object display;
 {
+  struct display *d = get_display (display, 1);
   CHECK_SYMBOL (coding_system);
+
   setup_coding_system (Fcheck_coding_system (coding_system),
-                       FRAME_KEYBOARD_CODING (SELECTED_FRAME ()));
+                       DISPLAY_KEYBOARD_CODING (d));
   /* Character composition should be disabled.  */
-  FRAME_KEYBOARD_CODING (SELECTED_FRAME ())->composing = COMPOSITION_DISABLED;
+  DISPLAY_KEYBOARD_CODING (d)->composing = COMPOSITION_DISABLED;
   return Qnil;
 }
 
 DEFUN ("keyboard-coding-system", Fkeyboard_coding_system,
-       Skeyboard_coding_system, 0, 0, 0,
+       Skeyboard_coding_system, 0, 1, 0,
        doc: /* Return coding system specified for decoding keyboard input.  */)
-     ()
+     (display)
+     Lisp_Object display;
 {
-  return FRAME_KEYBOARD_CODING (SELECTED_FRAME ())->symbol;
+  return DISPLAY_KEYBOARD_CODING (get_display (display, 1))->symbol;
 }