diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua new file mode 100644 index 00000000..40816a94 --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -0,0 +1,193 @@ +return { + recommended = { + ft = { "php", "blade" }, + root = { "artisan" }, + }, + + { import = "lazyvim.plugins.extras.lang.php" }, + + { + "adalessa/laravel.nvim", + optional = true, + dependencies = { + "MunifTanjim/nui.nvim", + "nvim-lua/plenary.nvim", + "nvim-neotest/nvim-nio", + }, + cmd = { "Laravel" }, + keys = { + { + "ll", + function() + Laravel.pickers.laravel() + end, + desc = "Laravel: Open Laravel Picker", + }, + { + "", + function() + Laravel.commands.run("view:finder") + end, + desc = "Laravel: Open View Finder", + }, + { + "la", + function() + Laravel.pickers.artisan() + end, + desc = "Laravel: Open Artisan Picker", + }, + { + "lt", + function() + Laravel.commands.run("actions") + end, + desc = "Laravel: Open Actions Picker", + }, + { + "lr", + function() + Laravel.pickers.routes() + end, + desc = "Laravel: Open Routes Picker", + }, + { + "lh", + function() + Laravel.run("artisan docs") + end, + desc = "Laravel: Open Documentation", + }, + { + "lm", + function() + Laravel.pickers.make() + end, + desc = "Laravel: Open Make Picker", + }, + { + "lc", + function() + Laravel.pickers.commands() + end, + desc = "Laravel: Open Commands Picker", + }, + { + "lo", + function() + Laravel.pickers.resources() + end, + desc = "Laravel: Open Resources Picker", + }, + { + "lp", + function() + Laravel.commands.run("command_center") + end, + desc = "Laravel: Open Command Center", + }, + { + "gf", + function() + local ok, res = pcall(function() + if Laravel.app("gf").cursorOnResource() then + return "lua Laravel.commands.run('gf')" + end + end) + if not ok or not res then + return "gf" + end + return res + end, + expr = true, + noremap = true, + }, + }, + opts = { + features = { + pickers = { + provider = "snacks", -- "snacks | telescope | fzf-lua | ui-select" + }, + }, + }, + }, + + { + "mason-org/mason.nvim", + opts = { + ensure_installed = { + "blade-formatter", + "pint", + "rustywind", + }, + }, + }, + + { + "mfussenegger/nvim-dap", + optional = true, + opts = function() + local dap = require("dap") + dap.adapters.php = { + type = "executable", + command = "php-debug-adapter", + args = {}, + } + dap.configurations.php = { + { + type = "php", + request = "launch", + name = "Listen for Xdebug", + port = 9003, + pathMappings = { + ["/var/www/html"] = "${workspaceFolder}", + }, + }, + } + end, + }, + + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "phpdoc", "blade" } }, + }, + + { + "ricardoramirezr/blade-nav.nvim", + optional = true, + ft = { "blade", "php" }, + }, + + { + "saghen/blink.cmp", + optional = true, + dependencies = { "adalessa/laravel.nvim", "ricardoramirezr/blade-nav.nvim", "saghen/blink.compat" }, + opts = { + sources = { + compat = { "blade-nav", "laravel" }, + providers = { + ["blade-nav"] = { + name = "blade-nav", + module = "blade-nav.blink", + }, + laravel = { + name = "laravel", + module = "blink.compat.source", + score_offset = 95, + }, + }, + }, + }, + }, + + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + blade = { "blade-formatter", "rustywind" }, + php = { "php_cs_fixer", "pint" }, + }, + }, + }, +}