mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-08 17:02:17 +00:00
Laravel ships a first-party language server (laravel/lsp, the one behind
the official VS Code/Zed/Sublime extensions) that answers hover,
definition and completion inside config('…'), route('…') and view('…')
calls — places Intelephense returns null.
Register it in languages/php.toml after Intelephense and the phpactor
fallback (Intelephense keeps hover, rename and symbols for PHP code),
gated by require-root-marker on artisan so it only starts in Laravel
projects — the same pattern angular-language-server uses for
angular.json.
Add a ToolSpec so Settings › Language Servers can install it: GitHub
releases carry plain per-platform binaries (server-v*-<arch>-<os>[.exe]),
which Method::Release + ArchiveKind::Raw already handle; the versioned
asset name lands in bin/ via the usual link/wrapper step. laravel-lsp
runs the project's PHP, so needs stays empty (PHP detection is the
project interpreter's job).
Closes #2100
44 lines
1.4 KiB
TOML
44 lines
1.4 KiB
TOML
id = "php"
|
||
name = "PHP"
|
||
extensions = ["php", "phtml", "php3", "php4", "php5", "phps", "phpt"]
|
||
first-line = "^(<\\?php|#!.*\\bphp\\b)"
|
||
line-comment = "//"
|
||
block-comment = ["/*", "*/"]
|
||
indent = { tab-size = 4, insert-spaces = true }
|
||
ui-mode = "PHP"
|
||
tree-sitter = "php"
|
||
|
||
[[language-servers]]
|
||
name = "intelephense"
|
||
command = "intelephense"
|
||
args = ["--stdio"]
|
||
root-markers = ["composer.json", ".phpactor.json", "index.php"]
|
||
install-hint = "npm i -g intelephense"
|
||
# Intelephense applies the PHP version only to documents it parses after reading it.
|
||
resync-on-configuration = true
|
||
|
||
[[language-servers]]
|
||
name = "phpactor"
|
||
# Alternative: used only when the server above is not installed.
|
||
fallback = true
|
||
command = "phpactor"
|
||
args = ["language-server"]
|
||
root-markers = ["composer.json", ".phpactor.json"]
|
||
install-hint = "Install phpactor (https://phpactor.readthedocs.io/en/master/usage/standalone.html)"
|
||
|
||
# Laravel projects only: hover, definition and completion inside
|
||
# config('…'), route('…') and view('…'). Last: Intelephense keeps PHP hover,
|
||
# rename and symbols. https://github.com/laravel/lsp
|
||
[[language-servers]]
|
||
name = "laravel-lsp"
|
||
command = "laravel-lsp"
|
||
args = ["--stdio"]
|
||
root-markers = ["artisan"]
|
||
require-root-marker = true
|
||
install-hint = "composer global require laravel/lsp"
|
||
|
||
[debugger]
|
||
adapter = "php-debug"
|
||
command = "php-debug-adapter"
|
||
install-hint = "Install PHP Debug (Xdebug) in Settings › Languages & Frameworks › Language Servers, and enable Xdebug"
|