Skip to content

Commit 28bc63f

Browse files
feat: sort trait use
1 parent c799e0c commit 28bc63f

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

lua/php-use-sort/init.lua

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ local t = function(node)
1313
p(ts.get_node_text(node, 0))
1414
end
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]
6262
end
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
})
143142
end
144143

145-
-- complete = "custom,ListUsers",
146-
-- local function ListUsers(A, L, P)
147-
-- return { "asc", "desc" }
148-
-- end
149-
150144
function PhpUseSort.get_config_options()
151145
return require("php-use-sort.config").options
152146
end
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+
154163
function 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)
187192
end
188193

189194
function PhpUseSort.setup(options)

0 commit comments

Comments
 (0)