From: Eli Zaretskii Date: Fri, 18 Feb 2011 14:48:28 +0000 (+0200) Subject: Fix bug #7840 with default terminal and keyboard encodings. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~819 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d6de49a103fd814420f0a5dd2cc9d8136f60eb44;p=emacs.git Fix bug #7840 with default terminal and keyboard encodings. terminal.c (create_terminal): Use default-keyboard-coding-system and default-terminal-coding-system to initialize coding systems of the new terminal. --- diff --git a/src/ChangeLog b/src/ChangeLog index 9fbc83f6c0c..767cf386ee8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2011-02-18 Eli Zaretskii + + * 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-18 Stefan Monnier * lisp.h (BYTE_MARK_STACK): New macro. diff --git a/src/terminal.c b/src/terminal.c index 09c57bc2b0c..309cc0095e8 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -223,6 +223,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; @@ -235,8 +236,24 @@ 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 = + find_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 = + find_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;