[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Cyrillic, utf-8 and windows
From: |
Kenichi Handa |
Subject: |
Re: Cyrillic, utf-8 and windows |
Date: |
Wed, 10 Dec 2003 08:58:28 +0900 (JST) |
User-agent: |
SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/21.3 (sparc-sun-solaris2.6) MULE/5.0 (SAKAKI) |
Thank you for the report.
In article <address@hidden>, Sam Steingold <address@hidden> writes:
>>
>> I can open in Emacs a utf-8 file with Cyrillic characters in it and it
>> is displayed just fine - with correct glyphs &c.
>> I set `default-input-method' to "cyrillic-yawerty" in .emacs,
>> so when I try C-\ `toggle-input-method', I get 2 "character outline
>> boxes" in the modeline and when I type, I see these "character outline
>> boxes" in the buffer instead of the characters I just typed.
>> When I save the buffer, kill it, and re-visit the file,
>> I see what I just typed displayed correctly as Cyrillic!
>> So, why does Emacs display the characters that I type as boxes
>> (rectangles) but shows them correctly when loaded from a file on disk?
Because those are different character for Emacs as you
already found as below.
> when I type using cyrillic-yawerty, I get this:
[...]
> charset: cyrillic-iso8859-5
[...]
> when I save the file, kill the buffer and visit the file again, that
> character becomes
[...]
> charset: mule-unicode-0100-24ff
> So, how do I tell cyrillic-yawerty to insert UTF-8?!
The input method cyrillic-yawerty generates iso-8859-5
characters, and Emacs has a facility to automatically adjust
an input character to what the buffer-file-coding-system
expects. But, I found a bug in that facility and
insufficiency in set-default-coding-systems (called from
prefer-coding-system). Please try the attached patch.
But, there still exist one problem. As you don't have
iso8859-5 fonts, the input-method indicator in the modeline
can't be displayed correctly. For the moment, Emacs doesn't
has a facility to automatically try the other fonts
(e.g. iso10646-1). Emacs-unicode version has it.
---
Ken'ichi HANDA
address@hidden
*** ucs-tables.el.~1.34.~ Tue Sep 2 08:25:38 2003
--- ucs-tables.el Wed Dec 10 08:17:57 2003
***************
*** 2507,2512 ****
--- 2507,2514 ----
(coding-system-base default-buffer-file-coding-system))))
(when cs
(setq table (coding-system-get cs 'translation-table-for-encode))
+ (if (and table (symbolp table))
+ (setq table (get table 'translation-table)))
(unless (char-table-p table)
(setq table (coding-system-get cs 'translation-table-for-input)))
(when (char-table-p table)
*** mule-cmds.el.~1.249.~ Wed Nov 26 08:10:10 2003
--- mule-cmds.el Wed Dec 10 08:42:43 2003
***************
*** 321,326 ****
--- 321,331 ----
o default value for the command `set-keyboard-coding-system'."
(check-coding-system coding-system)
(setq-default buffer-file-coding-system coding-system)
+ (if (fboundp 'ucs-set-table-for-input)
+ (dolist (buffer (buffer-list))
+ (or (local-variable-p 'buffer-file-coding-system buffer)
+ (ucs-set-table-for-input buffer))))
+
(if default-enable-multibyte-characters
(setq default-file-name-coding-system coding-system))
;; If coding-system is nil, honor that on MS-DOS as well, so