Laravel LSP's `lsp` command takes no options and speaks over stdio; the
`--stdio` argument in the PHP language definition made it exit at startup
with "The \"--stdio\" option does not exist". A registry test now checks it
starts without arguments.
Co-authored-by: tiagodiana <55031490+tiagodiana@users.noreply.github.com>
Plugin run targets keep running programs, tests and package scripts inside
the target. Language servers and debuggers run on the host again:
- Remove the Language server targets settings page, the project-only
`languageServerTargets` setting and the PHP / Node.js "Language server:
run in target" option.
- Remove debugging through plugin targets; Debug on a plugin target is
refused again. PHP Remote Debug and Python remote configurations with a
path mapping debug programs in containers.
- Remove LSP / DAP message path mapping, read-only container documents and
the `ide-core` path-mapping module that only these used.
- Run-target validation (API 1.5, unreleased) no longer has a `debug`
operation, and debug start no longer takes a request id.
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
php-debug had no entry in the missing-adapter table, so a PHP debug session without it failed with a plain error pointing at mason.nvim. It now offers Install and Debug like debugpy, Delve or js-debug, and the hint points to Settings › Languages & Frameworks › Language Servers.
Co-authored-by: Inf1mum <8135225+Inf1mum@users.noreply.github.com>
Intelephense checked PHP code against its default 8.5, whatever version the project targets. Settings › Languages & Frameworks › PHP gets a PHP language level, Auto (default: composer.json config.platform.php, else the lowest version require.php allows) or 5.6–8.5, sent as environment.phpVersion; nothing is sent without a requirement. Intelephense applies the version only to documents it parses after reading its configuration, so servers that opt in (resync-on-configuration, Intelephense only) get their open documents again right after workspace/configuration is answered (new jsonrpc Handler::after_response), and Intelephense keeps one index per level because it fixes the built-in functions when it indexes. A change to a root or workspace member composer.json reconfigures the servers.
Co-authored-by: DanielADK <18214958+DanielADK@users.noreply.github.com>