@@ -82,31 +82,28 @@ function M.merge_sort(t, comparator)
82
82
table.insert (origin_index , n )
83
83
end
84
84
85
- local user_order = M .sort_by (t_user )
85
+ M .sort_by (t_user )
86
86
87
- if type (user_order ) == " table" then
88
- -- do merge sort for prevent memory exceed
89
-
90
- local user_index = {}
91
- for k , v in pairs (user_order ) do
92
- if type (v ) == " string" and user_index [v ] == nil then
93
- user_index [v ] = k
94
- end
87
+ -- do merge sort for prevent memory exceed
88
+ local user_index = {}
89
+ for i , v in ipairs (t_user ) do
90
+ if type (v .absolute_path ) == " string" and user_index [v .absolute_path ] == nil then
91
+ user_index [v .absolute_path ] = i
95
92
end
93
+ end
96
94
97
- -- if missing value found, then using origin_index
98
- local mini_comparator = function (a , b )
99
- local a_index = user_index [a .absolute_path ] or origin_index [a .absolute_path ]
100
- local b_index = user_index [b .absolute_path ] or origin_index [b .absolute_path ]
95
+ -- if missing value found, then using origin_index
96
+ local mini_comparator = function (a , b )
97
+ local a_index = user_index [a .absolute_path ] or origin_index [a .absolute_path ]
98
+ local b_index = user_index [b .absolute_path ] or origin_index [b .absolute_path ]
101
99
102
- if type (a_index ) == " number" and type (b_index ) == " number" then
103
- return a_index <= b_index
104
- end
105
- return (a_index or 0 ) <= (b_index or 0 )
100
+ if type (a_index ) == " number" and type (b_index ) == " number" then
101
+ return a_index <= b_index
106
102
end
107
-
108
- split_merge (t , 1 , # t , mini_comparator ) -- sort by user order
103
+ return (a_index or 0 ) <= (b_index or 0 )
109
104
end
105
+
106
+ split_merge (t , 1 , # t , mini_comparator ) -- sort by user order
110
107
else
111
108
if not comparator then
112
109
comparator = function (left , right )
0 commit comments