From 213e644fd7f152ade9cd5efd7e23c6d6e8cde40d Mon Sep 17 00:00:00 2001 From: Ariel D'Alessandro Date: Fri, 22 Sep 2023 09:29:03 +0200 Subject: Move php function of attach to the server file --- lua/alpha/lsp/servers/phpactor.lua | 54 +++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) (limited to 'lua/alpha/lsp/servers/phpactor.lua') diff --git a/lua/alpha/lsp/servers/phpactor.lua b/lua/alpha/lsp/servers/phpactor.lua index fd25568..e6bebcd 100644 --- a/lua/alpha/lsp/servers/phpactor.lua +++ b/lua/alpha/lsp/servers/phpactor.lua @@ -1,9 +1,61 @@ local lsp_attach = require "alpha.lsp.attach" local lsp_flags = require "alpha.lsp.flags" +local function phpactor_attach(_, bufnr) + vim.api.nvim_buf_create_user_command(bufnr, "LspPhpactorReindex", function() + vim.lsp.buf_notify(bufnr, "phpactor/index/reindex", {}) + end, {}) + + vim.api.nvim_buf_create_user_command(bufnr, "LspPhpactorStatus", function() + local results, _ = vim.lsp.buf_request_sync(bufnr, "phpactor/status", { ["return"] = true }) + + local content = "" + + for _, res in pairs(results or {}) do + if res ~= nil and res["result"] ~= nil then + content = content .. res["result"] + end + end + + local Popup = require "nui.popup" + local event = require("nui.utils.autocmd").event + + local popup = Popup { + enter = true, + focusable = true, + border = { + style = "rounded", + }, + position = "50%", + size = { + width = "80%", + height = "60%", + }, + } + + -- mount/open the component + popup:mount() + + -- unmount component when cursor leaves buffer + popup:on(event.BufLeave, function() + popup:unmount() + end) + local out = {} + for match in string.gmatch(content, "[^\n]+") do + table.insert(out, match) + end + + vim.api.nvim_buf_set_option(popup.bufnr, "filetype", "markdown") + vim.api.nvim_buf_set_lines(popup.bufnr, 0, 1, false, out) + end, {}) +end + return function(ops) return vim.tbl_extend("force", { - on_attach = lsp_attach, + on_attach = function(client, bufnr) + lsp_attach(client, bufnr) + phpactor_attach(client, bufnr) + end, flags = lsp_flags, filetypes = { "php", "blade" }, init_options = { -- cgit v1.2.3