summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2011-02-12 04:47:28 -0500
committerEli Zaretskii <eliz@gnu.org>2011-02-12 04:47:28 -0500
commita10d755bb2ed94d1725f6954e0aba06eaaa69f64 (patch)
treeb5e1270fcc24d9e17e48f6709164994d3d545183
parentc581eb56db99b20fe5e3c4dcd345cc74e0bff9c3 (diff)
downloademacs-a10d755bb2ed94d1725f6954e0aba06eaaa69f64.tar.gz
Fix bug #7840 with setting terminal/keyboard encoding of emacsclient frames.
terminal.c (create_terminal): Use default-keyboard-coding-system and default-terminal-coding-system to initialize coding systems of the new terminal.
-rw-r--r--src/ChangeLog6
-rw-r--r--src/terminal.c19
2 files changed, 23 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 585f0f7c0ef..c9f9c586b3f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-12 Eli Zaretskii <eliz@gnu.org>
+
+ * terminal.c (create_terminal): Use default-keyboard-coding-system
+ and default-terminal-coding-system to initialize coding systems of
+ the new terminal. (Bug#7840)
+
2011-02-09 Martin Rudalics <rudalics@gmx.at>
* window.c (select_window): Check inhibit_point_swap argument when
diff --git a/src/terminal.c b/src/terminal.c
index 041dc28f977..a51a18c934d 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -226,6 +226,7 @@ struct terminal *
create_terminal (void)
{
struct terminal *terminal = allocate_terminal ();
+ Lisp_Object terminal_coding, keyboard_coding;
terminal->name = NULL;
terminal->next_terminal = terminal_list;
@@ -238,8 +239,22 @@ create_terminal (void)
terminal->terminal_coding =
(struct coding_system *) xmalloc (sizeof (struct coding_system));
- setup_coding_system (Qno_conversion, terminal->keyboard_coding);
- setup_coding_system (Qundecided, terminal->terminal_coding);
+ /* If default coding systems for the terminal and the keyboard are
+ already defined, use them in preference to the defaults. This is
+ needed when Emacs runs in daemon mode. */
+ keyboard_coding = SYMBOL_VALUE (intern ("default-keyboard-coding-system"));
+ if (NILP (keyboard_coding)
+ || EQ (keyboard_coding, Qunbound)
+ || NILP (Fcoding_system_p (keyboard_coding)))
+ keyboard_coding = Qno_conversion;
+ terminal_coding = SYMBOL_VALUE (intern ("default-terminal-coding-system"));
+ if (NILP (terminal_coding)
+ || EQ (terminal_coding, Qunbound)
+ || NILP (Fcoding_system_p (terminal_coding)))
+ terminal_coding = Qundecided;
+
+ setup_coding_system (keyboard_coding, terminal->keyboard_coding);
+ setup_coding_system (terminal_coding, terminal->terminal_coding);
terminal->param_alist = Qnil;
return terminal;