mirror of
https://github.com/pnx/dotfiles
synced 2026-06-16 03:14:55 +02:00
150 lines
5 KiB
Lua
150 lines
5 KiB
Lua
local lspservers = {
|
|
--- @type LSPServerOptions
|
|
phpactor = {
|
|
inlay_hints = {
|
|
enabled = false
|
|
},
|
|
codelens = {
|
|
enabled = false
|
|
},
|
|
document_highlight = {
|
|
enabled = false
|
|
},
|
|
diagnostics = false,
|
|
hover = false,
|
|
definition = false,
|
|
init_options = {
|
|
-- Only interested in code actions. Disable everything else!
|
|
["completion_worse.completor.doctrine_annotation.enabled"] = false,
|
|
["completion_worse.completor.imported_names.enabled"] = false,
|
|
["completion_worse.completor.worse_parameter.enabled"] = false,
|
|
["completion_worse.completor.named_parameter.enabled"] = false,
|
|
["completion_worse.completor.constructor.enabled"] = false,
|
|
["completion_worse.completor.class_member.enabled"] = false,
|
|
["completion_worse.completor.scf_class.enabled"] = false,
|
|
["completion_worse.completor.local_variable.enabled"] = false,
|
|
["completion_worse.completor.subscript.enabled"] = false,
|
|
["completion_worse.completor.declared_function.enabled"] = false,
|
|
["completion_worse.completor.declared_constant.enabled"] = false,
|
|
["completion_worse.completor.declared_class.enabled"] = false,
|
|
["completion_worse.completor.expression_name_search.enabled"] = false,
|
|
["completion_worse.completor.use.enabled"] = false,
|
|
["completion_worse.completor.class_like.enabled"] = false,
|
|
["completion_worse.completor.type.enabled"] = false,
|
|
["completion_worse.completor.keyword.enabled"] = false,
|
|
["completion_worse.completor.docblock.enabled"] = false,
|
|
["completion_worse.completor.attribute.enabled"] = false,
|
|
["completion_worse.completor.constant.enabled"] = false,
|
|
["completion_worse.snippets"] = false,
|
|
["completion.limit"] = 0,
|
|
["language_server.diagnostics_on_open"] = false,
|
|
["language_server.diagnostics_on_save"] = false,
|
|
["language_server.diagnostics_on_update"] = false,
|
|
["language_server_worse_reflection.diagnostics.enable"] = false,
|
|
["language_server_worse_reflection.inlay_hints.enable"] = false,
|
|
["language_server_php_cs_fixer.enabled"] = false,
|
|
["language_server_phpstan.enabled"] = false,
|
|
["language_server_psalm.enabled"] = false,
|
|
["code_transform.refactor.generate_accessor.prefix"] = "get",
|
|
["code_transform.refactor.generate_accessor.upper_case_first"] = true,
|
|
["code_transform.refactor.generate_mutator.prefix"] = "set",
|
|
["code_transform.refactor.generate_mutator.upper_case_first"] = true,
|
|
["code_transform.refactor.generate_mutator.fluent"] = true,
|
|
}
|
|
},
|
|
-- Use intelephense for as main server.
|
|
intelephense = {}
|
|
}
|
|
|
|
return {
|
|
-- Include HTML because you prob always write some html with php :)
|
|
{ import = "user.plugins.lang.html" },
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
opts = {
|
|
ensure_installed = { "php", "php_only", "phpdoc", "blade" }
|
|
}
|
|
},
|
|
{
|
|
"windwp/nvim-ts-autotag",
|
|
optional = true,
|
|
opts = {
|
|
filetypes = {
|
|
'php',
|
|
'blade',
|
|
}
|
|
}
|
|
},
|
|
-- Formatting
|
|
{
|
|
'stevearc/conform.nvim',
|
|
optional = true,
|
|
opts = {
|
|
formatters_by_ft = {
|
|
php = { 'php-cs-fixer' },
|
|
blade = { 'blade-formatter' }
|
|
}
|
|
}
|
|
},
|
|
-- Linting
|
|
{
|
|
'mfussenegger/nvim-lint',
|
|
-- optional = true,
|
|
opts = {
|
|
linters = {
|
|
phpstan = {
|
|
args = {
|
|
"analyze",
|
|
'--error-format=json',
|
|
'--no-progress',
|
|
}
|
|
}
|
|
},
|
|
linters_by_ft = {
|
|
php = { 'phpstan' },
|
|
},
|
|
},
|
|
config = function (_, opts)
|
|
local lint = require('lint')
|
|
lint.linters_by_ft = opts.linters_by_ft or {}
|
|
lint.linters.phpstan.args = opts.linters.phpstan.args
|
|
|
|
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
|
|
callback = function()
|
|
require('lint').try_lint()
|
|
end,
|
|
})
|
|
end
|
|
},
|
|
-- LSP
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
opts = {
|
|
servers = lspservers
|
|
},
|
|
},
|
|
{
|
|
'ccaglak/phptools.nvim',
|
|
opts = {
|
|
ui = {
|
|
fzf = true
|
|
},
|
|
}
|
|
},
|
|
-- Testing
|
|
{
|
|
"nvim-neotest/neotest",
|
|
optional = true,
|
|
ft = { "php" },
|
|
dependencies = {
|
|
"olimorris/neotest-phpunit",
|
|
'V13Axel/neotest-pest',
|
|
},
|
|
opts = {
|
|
adapters = {
|
|
["neotest-phpunit"] = {},
|
|
["neotest-pest"] = {},
|
|
}
|
|
},
|
|
}
|
|
}
|