From ded4777637820022ef47649d6f4fd8b1bb15194a Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Sat, 29 Nov 2025 15:25:41 -0500 Subject: [PATCH 1/6] feat(laravel): create laravel extra --- lua/lazyvim/plugins/extras/lang/laravel.lua | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 lua/lazyvim/plugins/extras/lang/laravel.lua diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua new file mode 100644 index 00000000..97aeaddb --- /dev/null +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -0,0 +1,2 @@ +return { +} From 03b5532692c0749904650c70bbedf6a735c5ab09 Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Sat, 29 Nov 2025 15:34:02 -0500 Subject: [PATCH 2/6] feat(laravel): update laravel extra --- lua/lazyvim/plugins/extras/lang/laravel.lua | 198 ++++++++++++++++++++ 1 file changed, 198 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua index 97aeaddb..e77f2ba9 100644 --- a/lua/lazyvim/plugins/extras/lang/laravel.lua +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -1,2 +1,200 @@ return { + recommended = { + ft = { "php", "blade" }, + root = { "artisan" }, + }, + + { + "adalessa/laravel.nvim", + dependencies = { + "tpope/vim-dotenv", + "MunifTanjim/nui.nvim", + "nvim-lua/plenary.nvim", + "nvim-neotest/nvim-nio", + "ravitemer/mcphub.nvim", -- optional + }, + 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, + }, + }, + event = { "VeryLazy" }, + 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-neotest/neotest", + optional = true, + dependencies = { + "V13Axel/neotest-pest", + "olimorris/neotest-phpunit", + }, + opts = { + adapters = { + "neotest-pest", + ["neotest-phpunit"] = { + root_ignore_files = { "tests/Pest.php" }, + }, + }, + }, + }, + + { + "nvim-treesitter/nvim-treesitter", + opts = { ensure_installed = { "php", "phpdoc", "blade" } }, + }, + + { + "saghen/blink.cmp", + optional = true, + dependencies = { "adalessa/laravel.nvim", "saghen/blink.compat" }, + opts = { + sources = { + compat = { "laravel" }, + providers = { + 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" }, + }, + }, + }, } From 62ccf900a225c8d643f59cf60159c1c745d4aaf2 Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Sat, 29 Nov 2025 18:34:19 -0500 Subject: [PATCH 3/6] refactor(laravel): remove duplication with php extra --- lua/lazyvim/plugins/extras/lang/laravel.lua | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua index e77f2ba9..415844b7 100644 --- a/lua/lazyvim/plugins/extras/lang/laravel.lua +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -147,26 +147,9 @@ return { end, }, - { - "nvim-neotest/neotest", - optional = true, - dependencies = { - "V13Axel/neotest-pest", - "olimorris/neotest-phpunit", - }, - opts = { - adapters = { - "neotest-pest", - ["neotest-phpunit"] = { - root_ignore_files = { "tests/Pest.php" }, - }, - }, - }, - }, - { "nvim-treesitter/nvim-treesitter", - opts = { ensure_installed = { "php", "phpdoc", "blade" } }, + opts = { ensure_installed = { "phpdoc", "blade" } }, }, { From 7e19f0d025c24c435fee59da7a829461fd1a99ea Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Mon, 1 Dec 2025 13:17:00 -0500 Subject: [PATCH 4/6] feat(laravel): add ricardoramirezr/blade-nav.nvim to laravel extra --- lua/lazyvim/plugins/extras/lang/laravel.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua index 415844b7..916ac400 100644 --- a/lua/lazyvim/plugins/extras/lang/laravel.lua +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -152,14 +152,24 @@ return { opts = { ensure_installed = { "phpdoc", "blade" } }, }, + { + "ricardoramirezr/blade-nav.nvim", + optional = true, + ft = { "blade", "php" }, + }, + { "saghen/blink.cmp", optional = true, - dependencies = { "adalessa/laravel.nvim", "saghen/blink.compat" }, + dependencies = { "adalessa/laravel.nvim", "ricardoramirezr/blade-nav.nvim", "saghen/blink.compat" }, opts = { sources = { - compat = { "laravel" }, + compat = { "blade-nav", "laravel" }, providers = { + ["blade-nav"] = { + name = "blade-nav", + module = "blade-nav.blink", + }, laravel = { name = "laravel", module = "blink.compat.source", From 12084fcee03044515135a23f9753e14267298ea4 Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Mon, 1 Dec 2025 13:39:29 -0500 Subject: [PATCH 5/6] feat(laravel): import lazyvim.plugins.extras.lang.php when using laravel extra --- lua/lazyvim/plugins/extras/lang/laravel.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua index 916ac400..4757ef84 100644 --- a/lua/lazyvim/plugins/extras/lang/laravel.lua +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -4,6 +4,8 @@ return { root = { "artisan" }, }, + { import = "lazyvim.plugins.extras.lang.php" }, + { "adalessa/laravel.nvim", dependencies = { From bc140da5eb210e57d591226fdd3eb14d449133dd Mon Sep 17 00:00:00 2001 From: Ronald Wong Date: Tue, 2 Dec 2025 09:54:24 -0500 Subject: [PATCH 6/6] refactor(laravel): clean up adalessa/laravel.nvim configuration --- lua/lazyvim/plugins/extras/lang/laravel.lua | 22 ++++++++++----------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/lua/lazyvim/plugins/extras/lang/laravel.lua b/lua/lazyvim/plugins/extras/lang/laravel.lua index 4757ef84..40816a94 100644 --- a/lua/lazyvim/plugins/extras/lang/laravel.lua +++ b/lua/lazyvim/plugins/extras/lang/laravel.lua @@ -8,17 +8,16 @@ return { { "adalessa/laravel.nvim", + optional = true, dependencies = { - "tpope/vim-dotenv", "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim", "nvim-neotest/nvim-nio", - "ravitemer/mcphub.nvim", -- optional }, cmd = { "Laravel" }, keys = { { - "ll", + "ll", function() Laravel.pickers.laravel() end, @@ -32,56 +31,56 @@ return { desc = "Laravel: Open View Finder", }, { - "la", + "la", function() Laravel.pickers.artisan() end, desc = "Laravel: Open Artisan Picker", }, { - "lt", + "lt", function() Laravel.commands.run("actions") end, desc = "Laravel: Open Actions Picker", }, { - "lr", + "lr", function() Laravel.pickers.routes() end, desc = "Laravel: Open Routes Picker", }, { - "lh", + "lh", function() Laravel.run("artisan docs") end, desc = "Laravel: Open Documentation", }, { - "lm", + "lm", function() Laravel.pickers.make() end, desc = "Laravel: Open Make Picker", }, { - "lc", + "lc", function() Laravel.pickers.commands() end, desc = "Laravel: Open Commands Picker", }, { - "lo", + "lo", function() Laravel.pickers.resources() end, desc = "Laravel: Open Resources Picker", }, { - "lp", + "lp", function() Laravel.commands.run("command_center") end, @@ -104,7 +103,6 @@ return { noremap = true, }, }, - event = { "VeryLazy" }, opts = { features = { pickers = {