- PHP/Intelephense: expose `file_filter` via `ls_specific_settings["php"]`, so that additional
extensions containing PHP sources (e.g. Drupal's `.module` / `.install` / `.inc` / `.theme`)
become visible to the symbol tools and are indexed by the language server
- PHP: treat `.phtml` files as PHP sources by default (all PHP language servers)
Fix PHP symbol retrieval via Intelephense LSP
* intelephense.py: Add missing client capability declarations for
documentSymbol (with hierarchical support), references, hover, and
workspace symbol. Without these, Intelephense does not advertise
documentSymbolProvider and returns empty results for get_symbols_overview.
Add PHP tests validating hierarchical symbols and LS routing fix
- test_document_symbols_hierarchical_structure: verifies Intelephense
returns DocumentSymbol[] with class/method hierarchy (not flat
SymbolInformation[]) when hierarchicalDocumentSymbolSupport is declared
- test_full_symbol_tree_within_file: verifies request_full_symbol_tree
scoped to sample.php returns Dog/Animal/greet/fetch with Dog containing
greet as a child (not at root level)
- test_find_symbol_within_php_file: verifies find_symbol with a PHP
file path (relative_path=) routes to the PHP language server via
get_language_server() rather than iterating all servers
Peripheral changes:
- symbol.py (LanguageServerSymbolRetriever.find_symbols): When searching
within a specific file, route to the file-type-appropriate language server
via get_language_server() instead of querying all servers. This ensures
PHP files are served by Intelephense and not silently skipped.