Is the patch able to be upstreamed?
I can explain how the patch works from the point of the source codes.

Thanks,
fujiwara

(07/22/09 18:50), Takao Fujiwara-san wrote:
> I revised the patch.
> "shift-jisx0213", "euc-jisx0213" and "euc-jp-ms" are moved from
> enc_alias_table[] to enc_canon_table[].
>
> Thanks,
> fujiwara
>
> (07/22/09 00:20), Takao Fujiwara-san wrote:
>> (07/21/09 19:09), Tony Mechelynck-san wrote:
>>> On 21/07/09 10:04, Takao Fujiwara wrote:
>>>> (07/21/09 16:34), Tony Mechelynck-san wrote:
>>>>> Mine could, obviously, and without any patching.
>>>>
>>>> Your suggestion doesn't work on none UTF-8 in my env.
>>>>
>>>> 1. Launch your terminal on ja_JP.WINDOWS-31J
>>>> % iconv -f eucJP -t WINDOWS-31j pkdfmt.txt > pkdfmt-win31j.txt
>>>> % vim
>>>> :view ++enc=windows-31j pkdfmt-win31j.txt
>>>>
>>>> It doesn't work on WINDOWS-31J encoding but it works on UTF-8.
>>>>
>>>
>>> Hm. I produced the attached file using gvim, as follows:
>>>
>>> :sv ++enc=cseucpkdfmtjapanese pkdfmt.txt
>>> :sav ++enc=windows-31j ~/win31j.txt
>>> :q
>>>
>>> What do(es) your Vim executable(s) answer to
>>>
>>> :echo has('iconv')
>>>
>>> ? I wonder if maybe something went wrong.
>>
>> It returns 1.
>>
>>>
>>> FWIW, my gvim has 'encoding' set to utf-8, and I never change my
>>> terminal's locale, where
>>>
>>> $LANG=en_US.UTF-8
>>> $LC_ALL and $LC_CTYPE are both unset.
>>>
>>> In gvim, ":lang" answers
>>> Current language:
>>> "LC_CTYPE=en_US.UTF-8;LC_NUMERIC=en_US.UTF-8;LC_TIME=en_GB;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=C;LC_PAPER=en_GB;LC_NAME=en_US.UTF-8;LC_ADDRESS=en_US.UTF-8;LC_TELEPHONE=en_US.UTF-8;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=en_US.UTF-8"
>>>
>>>
>>
>> As I explained, it works on UTF-8.
>> The problem is that the current locale is not in the vim table.
>>
>> Please let me explain the source codes.
>> When you invoke ":view ++enc=windows-31j foo.txt",
>> "vim7/src/fileio.c:"readfile() is called.
>> readfile() calls my_iconv_open() at line 9886 "fileio.c".
>> my_iconv_open() sends p_enc for the from encoding.
>> p_enc = "latin1"
>>
>> The current locale is ja_JP.WINDOWS-31J but the problem is the vim sets
>> the p_enc = "latin1".
>> p_enc is decided in "vim7/src/option.c:"set_init_1().
>> set_init_1() calls enc_locale() and enc_locale() returns "windows-31j".
>> set_init_1() calls mb_init().
>> But mb_init() returns error string.
>> So set_init_1() sets p_enc = "latin1" at line 3389 "option.c".
>>
>> mb_init() calls enc_canon_search().
>>
>> After I apply my patch, enc_locale() returns "cp932" because
>> enc_locale() calls the alias table.
>> And then mb_init() returns NULL and p_enc = "cp932".
>>
>> I.e. the problem can be reproduce when you run vim on the none UTF-8
>> locale whose encoding doesn't exist in the vim alias table.
>>
>> On the other hand, whenever you run vim on UTF-8 locale, your ":view
>> ++enc=windows-31j" should works.
>> Users request to run vim on such a locale.
>>
>> Thanks,
>> fujiwara
>>
>>>
>>>
>>>
>>>
>>> Best regards,
>>> Tony.
>>
>>
>


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui