diff options
author | Eli Zaretskii <eliz@gnu.org> | 2011-02-12 04:47:28 -0500 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2011-02-12 04:47:28 -0500 |
commit | a10d755bb2ed94d1725f6954e0aba06eaaa69f64 (patch) | |
tree | b5e1270fcc24d9e17e48f6709164994d3d545183 | |
parent | c581eb56db99b20fe5e3c4dcd345cc74e0bff9c3 (diff) | |
download | emacs-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/ChangeLog | 6 | ||||
-rw-r--r-- | src/terminal.c | 19 |
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; |