Create a .vim/coc-settings.json file in the root of your project, i.e. /var/www/example/.vim/coc-settings.json
In here you can add settings to override the global ones. Enter this:
{ "coc.preferences.rootPatterns": [ ".thisIsDocRoot" ] }
This tells CoC to look for a .thisIsDocRoot file to determine a "workspace" dir.
Next touch /var/www/example/.thisIsDocRoot to create a file in the doc root.
Now when you edit a file in /var/www/example/plugins/myplugin CoC will:
- scan up the tree looking for
.vim/coc-settings.json which it will find at the root of your project. It merges that config. - that causes it to then look for
.thisIsDocRoot, which again it finds in the root of the project. - Intelephense now uses this to find symbols.
Note: you might also want to tell it to look in files other than .php ones, e.g. Drupal uses .module and .inc files too. To cover this, my /var/www/example/.vim/coc-settings.json file is:
{ "coc.preferences.rootPatterns": [ ".thisIsDocRoot" ], "intelephense.files.associations": [ "*.php", "*.module", "*.inc" ], "cSpell.userWords": [ "DRUPAL" ] }
Red herring: Intelephense defines a config item called intelephense.environment.documentRoot. I tried putting a value in this in various coc-settings files to no avail.
:h :cd/:h :lcd? I don't know if coc respects that but that could be a way to do it. Otherwise you might have more success asking directly in coc's issue tracker