aboutsummaryrefslogtreecommitdiffstats
path: root/lua/alpha/php/servers.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/alpha/php/servers.lua')
-rw-r--r--lua/alpha/php/servers.lua28
1 files changed, 28 insertions, 0 deletions
diff --git a/lua/alpha/php/servers.lua b/lua/alpha/php/servers.lua
new file mode 100644
index 0000000..78c99a8
--- /dev/null
+++ b/lua/alpha/php/servers.lua
@@ -0,0 +1,28 @@
+local phpactor = {}
+
+function phpactor.findclass(buffer, fqn, callback)
+ local class_parts = vim.split(fqn, "\\")
+ local class = class_parts[#class_parts]
+
+ vim.lsp.buf_request(buffer, "workspace/symbol", { query = class }, function(err, server_result, _, _)
+ if err then
+ callback(
+ nil,
+ "Error when finding workspace symbols: " .. err.message
+ )
+
+ return
+ end
+
+ local locations = vim.lsp.util.symbols_to_items(server_result or {}, buffer) or {}
+ if vim.tbl_isempty(locations) then
+ vim.api.nvim_err_writeln("Empty response looking for class: " .. fqn)
+ return
+ end
+
+ end)
+end
+
+return {
+ phpactor = phpactor,
+}