I found the problem, PHPTools seems to be ignoring this setting https://community.devsense.com/d/1670-high-resources/23
"files.exclude": {
"**\/vendor\/**\/vendor\/**": true,
}
Anyway, after more experiementing, I think it is better to address my challenges together.
First, let me explain my multiroot workspace structure
It is configured in the workspace file and my explorer shows these roots:
- project - filesystem: project/src/*.php
- packageA - filesystem: project/vendor/owner/packageA/src/AAAServiceProviderHelper.php
- packageB - filesystem: project/vendor/owner/packageB
- packageC - filesystem: project/vendor/owner/packageC
Sometimes, packageB and packageC may contain their own vendor
- project - filesystem: project/src/*.php
- packageA - filesystem: project/vendor/owner/packageA/src/AAAServiceProviderHelper.php
- packageB - filesystem: project/vendor/owner/packageB/vendor/packageA/src/AAAServiceProviderHelper.php
- packageC - filesystem: project/vendor/owner/packageC/vendor/packageA/src/AAAServiceProviderHelper.php
It seems that PHPTools is comparing what it found in 3 and 4 and confusing it with 2
Challenge 1: I need PHPTools to ignore vendor
of 3 and 4 but must scan project/vendor/**
, then it will detect 2, possible?
Challenge 2: I need PHPTools to scan 2 because I can't Go to definition
for files in /project/vendor/laravel/framework/src/...
use Illuminate\Support\ServiceProvider;
class MyServiceProvider extends ServiceProvider
e.g. When I press F12
Go to definition
on ServiceProvider
, it reports No definition found for ServiceProvider
F12
only works after I manually open the file at /project/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php
Appreciate if there is a solution for both my problems. Thank you.