my demo first config lua
This commit is contained in:
80
current_config/lua/alpha/lsp/servers/phpactor.lua
Normal file
80
current_config/lua/alpha/lsp/servers/phpactor.lua
Normal file
@@ -0,0 +1,80 @@
|
||||
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 = function(client, bufnr)
|
||||
lsp_attach(client, bufnr)
|
||||
phpactor_attach(client, bufnr)
|
||||
end,
|
||||
flags = lsp_flags,
|
||||
filetypes = { "php", "blade" },
|
||||
init_options = {
|
||||
["language_server_worse_reflection.inlay_hints.enable"] = true,
|
||||
["language_server_worse_reflection.inlay_hints.params"] = true,
|
||||
-- ["language_server_worse_reflection.inlay_hints.types"] = true,
|
||||
["language_server_configuration.auto_config"] = false,
|
||||
["code_transform.import_globals"] = true,
|
||||
["language_server_phpstan.enabled"] = true,
|
||||
["language_server_phpstan.level"] = 7,
|
||||
["language_server_phpstan.bin"] = "phpstan",
|
||||
},
|
||||
handlers = {
|
||||
["textDocument/inlayHint"] = function(err, result, ...)
|
||||
for _, res in ipairs(result) do
|
||||
res.label = res.label .. ": "
|
||||
end
|
||||
vim.lsp.handlers["textDocument/inlayHint"](err, result, ...)
|
||||
end,
|
||||
},
|
||||
}, ops)
|
||||
end
|
||||
Reference in New Issue
Block a user