> > We need to escape string to avoid to handle index as value.
> I don't think so.
> > I don't want to need to provide this function in all plugins. Just
> > want to get it in official sort function.
> The reason is:
> :echo sort(['3 0', '3 0 1'])
> ['3 0 1', '3 0']
> I'd expect ['3 0', '3 0 1'].
> :echo '3 0' < '3 0 1'
> 1
> Bug in sort() function?
See :help sort()
> The sort is stable, items which compare equal (as number or as
> string) will keep their relative position. E.g., when sorting
> on numbers, text strings will sort next to each other, in the
> same order as they were originally.
It need to do like below with MapSort()
echo MapSort([{"foo":{"bar": "3"}}, {"foo":{"bar": "3 0"}}], '0 +
v:val["foo"]["bar"]')
If using my patch, it is possible easy to avoid this.
:echo sort(["3 0", "3 0 1"], "a:lhs < a:rhs")
And MapSort() can't look local variable in the expression. For example, this
doesn't work.
---------------------------------------------------
function! s:foo()
let rank = {"queen": 12, "king": 13}
return MapSort(["queen", "king"], 'rank[v:val]')
endfunction
echo s:foo()
---------------------------------------------------
But:
---------------------------------------------------
function! s:foo()
let rank = {"queen": 12, "king": 13}
return sort(["queen", "king"], 'rank[v:lhs] < rank[v:rhs]')
endfunction
echo s:foo()
---------------------------------------------------
This should be worked.
--
--
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.