Hi Bram, It still does not work in the case below.
Actual:
echo nr2char(strgetchar('あaい', 0))
" あ
echo nr2char(strgetchar('あaい', 1))
" <82>
echo nr2char(strgetchar('あaい', 2))
" い
Expected:
echo nr2char(strgetchar('あaい', 0))
" あ
echo nr2char(strgetchar('あaい', 1))
" a
echo nr2char(strgetchar('あaい', 2))
" い
I wrote this patch. Please check it.
Best regards,
Naruhiko Nishino (a.k.a. rbtnn)
2016-04-15 0:21 GMT+09:00 <[email protected]>:
> On Thursday, April 14, 2016 at 4:57:33 PM UTC+2, Bram Moolenaar wrote:
>> Patch 7.4.1734 (after 7.4.1730)
>> Problem: Test fails when not using utf-8.
>> Solution: Split test in regularand utf-8 part.
>> Files: src/testdir/test_expr.vim, src/testdir/test_expr_utf8.vim,
>> src/testdir/test_alot_utf8.vim
>>
>>
>> *** ../vim-7.4.1733/src/testdir/test_expr.vim 2016-04-14 15:13:41.755917075
>> +0200
>> --- src/testdir/test_expr.vim 2016-04-14 16:53:37.761495832 +0200
>> ***************
>> *** 59,75 ****
>> call assert_equal(-1, strgetchar('axb', -1))
>> call assert_equal(-1, strgetchar('axb', 3))
>> call assert_equal(-1, strgetchar('', 0))
>> -
>> - if !has('multi_byte')
>> - return
>> - endif
>> -
>> - call assert_equal(char2nr('á'), strgetchar('áxb', 0))
>> - call assert_equal(char2nr('x'), strgetchar('áxb', 1))
>> -
>> - call assert_equal(char2nr('a'), strgetchar('àxb', 0))
>> - call assert_equal(char2nr('̀'), strgetchar('àxb', 1))
>> - call assert_equal(char2nr('x'), strgetchar('àxb', 2))
>> endfunc
>>
>> func Test_strcharpart()
>> --- 59,64 ----
>> ***************
>> *** 84,99 ****
>> call assert_equal('', strcharpart('axb', -2, 2))
>>
>> call assert_equal('a', strcharpart('axb', -1, 2))
>> -
>> - if !has('multi_byte')
>> - return
>> - endif
>> -
>> - call assert_equal('áxb', strcharpart('áxb', 0))
>> - call assert_equal('á', strcharpart('áxb', 0, 1))
>> - call assert_equal('x', strcharpart('áxb', 1, 1))
>> -
>> - call assert_equal('a', strcharpart('àxb', 0, 1))
>> - call assert_equal('̀', strcharpart('àxb', 1, 1))
>> - call assert_equal('x', strcharpart('àxb', 2, 1))
>> endfunc
>> --- 73,76 ----
>> *** ../vim-7.4.1733/src/testdir/test_expr_utf8.vim 2016-04-14
>> 16:56:40.371624252 +0200
>> --- src/testdir/test_expr_utf8.vim 2016-04-14 16:53:39.333479728 +0200
>> ***************
>> *** 0 ****
>> --- 1,26 ----
>> + " Tests for expressions using utf-8.
>> + if !has('multi_byte')
>> + finish
>> + endif
>> + set encoding=utf-8
>> + scriptencoding utf-8
>> +
>> + func Test_strgetchar()
>> + call assert_equal(char2nr('a'), strgetchar('axb', 0))
>> + call assert_equal(char2nr('x'), strgetchar('axb', 1))
>> + call assert_equal(char2nr('b'), strgetchar('axb', 2))
>> +
>> + call assert_equal(-1, strgetchar('axb', -1))
>> + call assert_equal(-1, strgetchar('axb', 3))
>> + call assert_equal(-1, strgetchar('', 0))
>> + endfunc
>> +
>> + func Test_strcharpart()
>> + call assert_equal('áxb', strcharpart('áxb', 0))
>> + call assert_equal('á', strcharpart('áxb', 0, 1))
>> + call assert_equal('x', strcharpart('áxb', 1, 1))
>> +
>> + call assert_equal('a', strcharpart('àxb', 0, 1))
>> + call assert_equal('̀', strcharpart('àxb', 1, 1))
>> + call assert_equal('x', strcharpart('àxb', 2, 1))
>> + endfunc
>> *** ../vim-7.4.1733/src/testdir/test_alot_utf8.vim 2016-04-03
>> 14:00:29.320148959 +0200
>> --- src/testdir/test_alot_utf8.vim 2016-04-14 16:52:16.942323610 +0200
>> ***************
>> *** 4,7 ****
>> --- 4,8 ----
>> " These tests use utf8 'encoding'. Setting 'encoding' is in the individual
>> " files, so that they can be run by themselves.
>>
>> + source test_expr_utf8.vim
>> source test_regexp_utf8.vim
>> *** ../vim-7.4.1733/src/version.c 2016-04-14 16:45:59.082193177 +0200
>> --- src/version.c 2016-04-14 16:53:46.561405681 +0200
>> ***************
>> *** 750,751 ****
>> --- 750,753 ----
>> { /* Add new patch number below this line */
>> + /**/
>> + 1734,
>> /**/
>>
>> --
>> In his lifetime van Gogh painted 486 oil paintings. Oddly enough, 8975
>> of them are to be found in the United States.
>>
>> /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
>> /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
>> \\\ an exciting new programming language -- http://www.Zimbu.org ///
>> \\\ help me help AIDS victims -- http://ICCF-Holland.org ///
>
> The wrong part was moved to Test_strgetchar function in test_expr_utf8.vim.
> It should be:
>
> func Test_strgetchar()
> call assert_equal(char2nr('á'), strgetchar('áxb', 0))
> call assert_equal(char2nr('x'), strgetchar('áxb', 1))
>
> call assert_equal(char2nr('a'), strgetchar('àxb', 0))
> call assert_equal(char2nr(''), strgetchar('àxb', 1))
> call assert_equal(char2nr('x'), strgetchar('àxb', 2))
> endfunc
>
> (with the á and à characters)
>
> --
> --
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups
> "vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
diff.patch
Description: Binary data
