@@ -13,7 +13,7 @@ local t = function(node)
1313 p (ts .get_node_text (node , 0 ))
1414end
1515
16- local function sort_use_statements (use_statements , order_by , sort_order )
16+ local function sort_statements (use_statements , order_by , sort_order )
1717 if order_by == " alphabetical" then
1818 table.sort (use_statements , function (a , b )
1919 if sort_order == " desc" then
@@ -61,22 +61,21 @@ local function parse_tree(parser)
6161 return parser :parse ()[1 ]
6262end
6363
64- local function extract_use_statements (root , lang , rm_unused )
65- local qs = [[ (namespace_use_declaration) @use ]]
64+ local function extract_statements (qs , root , lang , rm_unused )
6665 local query = ts .query .parse (lang , qs )
6766
6867 local use_statements = {}
6968 local range = { min = math.huge , max = 0 }
7069
7170 for _ , matches , _ in query :iter_matches (root , 0 ) do
7271 for _ , node in pairs (matches ) do
73- local start_row , _ , end_row , _ = node :range ()
72+ local start_row , start_col , end_row , _ = node :range ()
7473
7574 range .min = math.min (range .min , start_row + 1 )
7675 range .max = math.max (range .max , end_row + 1 )
7776
7877 if not rm_unused or not remove_declared_but_not_used (start_row ) then
79- local statement = ts .get_node_text (node , 0 )
78+ local statement = string.rep ( " " , start_col ) .. ts .get_node_text (node , 0 )
8079 table.insert (use_statements , { statement = statement , node = node })
8180 end
8281 end
@@ -142,15 +141,25 @@ function setup_command()
142141 })
143142end
144143
145- -- complete = "custom,ListUsers",
146- -- local function ListUsers(A, L, P)
147- -- return { "asc", "desc" }
148- -- end
149-
150144function PhpUseSort .get_config_options ()
151145 return require (" php-use-sort.config" ).options
152146end
153147
148+ local function process_declarations (root , lang , rm_unused , order_by , sort_order )
149+ local queries = {
150+ " (namespace_use_declaration) @use" ,
151+ " (use_declaration) @use" ,
152+ }
153+
154+ for _ , qs in ipairs (queries ) do
155+ local use_statements , range = extract_statements (qs , root , lang , rm_unused )
156+
157+ sort_statements (use_statements , order_by , sort_order )
158+
159+ update_buffer (range , use_statements )
160+ end
161+ end
162+
154163function PhpUseSort .main (order_by , sort_order )
155164 local parser = parsers .get_parser ()
156165
@@ -176,14 +185,10 @@ function PhpUseSort.main(order_by, sort_order)
176185
177186 local options = PhpUseSort .get_config_options ()
178187
179- local use_statements , range = extract_use_statements (root , lang , options .rm_unused )
180-
181188 sort_order = sort_order ~= " " and sort_order or options .order
182189 order_by = order_by ~= " " and order_by or options .order_by
183190
184- sort_use_statements (use_statements , order_by , sort_order )
185-
186- update_buffer (range , use_statements )
191+ process_declarations (root , lang , options .rm_unused , order_by , sort_order )
187192end
188193
189194function PhpUseSort .setup (options )
0 commit comments