diff options
| author | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2023-09-22 09:29:03 +0200 |
|---|---|---|
| committer | Ariel D'Alessandro <dalessandro.ariel@gmail.com> | 2023-09-22 09:29:03 +0200 |
| commit | 213e644fd7f152ade9cd5efd7e23c6d6e8cde40d (patch) | |
| tree | 397a08edaecdca16c037af059710cd6b7213c162 /lua/alpha/lsp/servers/phpactor.lua | |
| parent | af18201866ea29d179fd61bacd36b849a7d86a7d (diff) | |
| download | nvim-conf-213e644fd7f152ade9cd5efd7e23c6d6e8cde40d.tar.gz nvim-conf-213e644fd7f152ade9cd5efd7e23c6d6e8cde40d.zip | |
Move php function of attach to the server file
Diffstat (limited to 'lua/alpha/lsp/servers/phpactor.lua')
| -rw-r--r-- | lua/alpha/lsp/servers/phpactor.lua | 54 |
1 files changed, 53 insertions, 1 deletions
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 = { |