patch 9.0.1629: having utf16idx() rounding up is inconvenient
Problem: Having utf16idx() rounding up is inconvenient.
Solution: Make utf16idx() round down. (Yegappan Lakshmanan, closes #12523)
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index d7e7f92..a17c19e 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -1518,14 +1518,14 @@
" UTF-16 index of a string with four byte characters
let str = 'a😊😊b'
call assert_equal(0, utf16idx(str, 0))
- call assert_equal(2, utf16idx(str, 1))
- call assert_equal(2, utf16idx(str, 2))
- call assert_equal(2, utf16idx(str, 3))
- call assert_equal(2, utf16idx(str, 4))
- call assert_equal(4, utf16idx(str, 5))
- call assert_equal(4, utf16idx(str, 6))
- call assert_equal(4, utf16idx(str, 7))
- call assert_equal(4, utf16idx(str, 8))
+ call assert_equal(1, utf16idx(str, 1))
+ call assert_equal(1, utf16idx(str, 2))
+ call assert_equal(1, utf16idx(str, 3))
+ call assert_equal(1, utf16idx(str, 4))
+ call assert_equal(3, utf16idx(str, 5))
+ call assert_equal(3, utf16idx(str, 6))
+ call assert_equal(3, utf16idx(str, 7))
+ call assert_equal(3, utf16idx(str, 8))
call assert_equal(5, utf16idx(str, 9))
call assert_equal(6, utf16idx(str, 10))
call assert_equal(-1, utf16idx(str, 11))
@@ -1621,8 +1621,8 @@
" UTF-16 index of a string with four byte characters
let str = "a😊😊b"
call assert_equal(0, utf16idx(str, 0, v:false, v:true))
- call assert_equal(2, utf16idx(str, 1, v:false, v:true))
- call assert_equal(4, utf16idx(str, 2, v:false, v:true))
+ call assert_equal(1, utf16idx(str, 1, v:false, v:true))
+ call assert_equal(3, utf16idx(str, 2, v:false, v:true))
call assert_equal(5, utf16idx(str, 3, v:false, v:true))
call assert_equal(6, utf16idx(str, 4, v:false, v:true))
call assert_equal(-1, utf16idx(str, 5, v:false, v:true))