mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:7.4.1464
Problem: When the argument of sort() is zero or empty it fails.
Solution: Make zero work as documented. (suggested by Yasuhiro Matsumoto)
5131c144fe
This commit is contained in:
parent
82da7eed34
commit
b2d15fbebc
@ -15305,11 +15305,17 @@ static void do_sort_uniq(typval_T *argvars, typval_T *rettv, bool sort)
|
|||||||
}
|
}
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
info.item_compare_ic = true;
|
info.item_compare_ic = true;
|
||||||
} else {
|
} else if (argvars[1].v_type != VAR_NUMBER) {
|
||||||
info.item_compare_func = get_tv_string(&argvars[1]);
|
info.item_compare_func = get_tv_string(&argvars[1]);
|
||||||
|
} else if (i != 0) {
|
||||||
|
EMSG(_(e_invarg));
|
||||||
|
goto theend;
|
||||||
}
|
}
|
||||||
if (info.item_compare_func != NULL) {
|
if (info.item_compare_func != NULL) {
|
||||||
if (STRCMP(info.item_compare_func, "n") == 0) {
|
if (*info.item_compare_func == NUL) {
|
||||||
|
// empty string means default sort
|
||||||
|
info.item_compare_func = NULL;
|
||||||
|
} else if (STRCMP(info.item_compare_func, "n") == 0) {
|
||||||
info.item_compare_func = NULL;
|
info.item_compare_func = NULL;
|
||||||
info.item_compare_numeric = true;
|
info.item_compare_numeric = true;
|
||||||
} else if (STRCMP(info.item_compare_func, "N") == 0) {
|
} else if (STRCMP(info.item_compare_func, "N") == 0) {
|
||||||
|
@ -229,7 +229,7 @@ static int included_patches[] = {
|
|||||||
// 1467 NA
|
// 1467 NA
|
||||||
// 1466 NA
|
// 1466 NA
|
||||||
// 1465 NA
|
// 1465 NA
|
||||||
// 1464,
|
1464,
|
||||||
// 1463 NA
|
// 1463 NA
|
||||||
// 1462 NA
|
// 1462 NA
|
||||||
// 1461 NA
|
// 1461 NA
|
||||||
|
@ -3,6 +3,8 @@ local clear = helpers.clear
|
|||||||
local eq = helpers.eq
|
local eq = helpers.eq
|
||||||
local eval = helpers.eval
|
local eval = helpers.eval
|
||||||
local execute = helpers.execute
|
local execute = helpers.execute
|
||||||
|
local exc_exec = helpers.exc_exec
|
||||||
|
local neq = helpers.neq
|
||||||
|
|
||||||
describe('sort', function()
|
describe('sort', function()
|
||||||
before_each(clear)
|
before_each(clear)
|
||||||
@ -39,4 +41,12 @@ describe('sort', function()
|
|||||||
execute('endfunc')
|
execute('endfunc')
|
||||||
eq({1, 3, 5}, eval("sort([3, 1, 5], 'Compare1')"))
|
eq({1, 3, 5}, eval("sort([3, 1, 5], 'Compare1')"))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('default sort', function()
|
||||||
|
-- docs say omitted, empty or zero argument sorts on string representation
|
||||||
|
eq({'2', 1, 3.3}, eval('sort([3.3, 1, "2"])'))
|
||||||
|
eq({'2', 1, 3.3}, eval([[sort([3.3, 1, "2"], '')]]))
|
||||||
|
eq({'2', 1, 3.3}, eval('sort([3.3, 1, "2"], 0)'))
|
||||||
|
neq(exc_exec('call sort([3.3, 1, "2"], 3)'):find('E474:'), nil)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user