Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VS Code Multi-root Workspaces and PHP #513

Open
seanmcbreen opened this issue Oct 31, 2017 · 5 comments · May be fixed by #509
Open

VS Code Multi-root Workspaces and PHP #513

seanmcbreen opened this issue Oct 31, 2017 · 5 comments · May be fixed by #509

Comments

@seanmcbreen
Copy link

Hi Felix,

I'm from the VS Code team I also dropped you an email, I'm reaching out with some additional resources for adopting multi-root workspaces.

But first let me say thank you for working on and maintaining the awesome PHP Intellisense Extension, and debugger, we really appreciate the work you have done to make VS Code better we have a lot of PHP users.

The purpose of this issue is that we are very close to releasing a significant new feature for VS Code - Multi-root Workspaces - which is the most requested missing feature. If you have not heard of multi-root workspaces we have described this in several of our recent updates. Today it's only enabled in our insiders release but our intent is to enable it for all users in our next update, targeted for release in the first week of November.

This is a pretty significant change and over the last four months we have updated pretty much all of VS Code to be Multi-root aware as well as updated all of our own extensions. In the process of doing this we have created a set of guidelines for Extension Authors to follow to ensure their extension can fully leverage the awesomeness that is Multi-root workspaces.

Our Request:

There are a few things to review in your extension to ensure it can fully capitalize on Multi-root Workspaces....

  • Check you do not make use of the (now deprecated) workspace.rootPath property, there is a proposed migration path and sample for this case.
  • Review any settings you contribute or change, specifically you need to review whether some of the settings can be applied on a resource (= file location) level instead of being global (= workspace level).
  • Implement a language server and in the new multi-folder setup, a language server should be able to handle multiple folders.

Once you are ready we would appreciate it if you can add a new tag to your extension. Specifically - add multi-root ready to your package.json i.e. "keywords": ["multi-root ready"]. If you upgrade to VSCE 1.32.0 this can be added to any existing keywords and will not be counted against the maximum of 5 allowed keywords.

How Can We Help/Resources:

We realize we are asking for your help here - our goal is to make sure that your extensions works well with multi-root and continues to be loved by the community. The guide above outlines the changes that are required and we have a samples as well.

But we are sure you will have questions and we thought one way we could look to help is by getting a number of the team members (myself included) to be ready to respond to questions on a Slack Channel that we will dedicate to this issue. To join that channel simply follow this link.

Again thank you for being part of the VS Code community - we appreciate everything you have done. With the release of Multi-root Workspaces we will be shipping our most requested feature, together we can really help this feature light up for users.

Happy Coding!
Sean McBreen

// cc @bpasero @roblourens

@felixfbecker
Copy link
Owner

felixfbecker commented Oct 31, 2017 via email

@Ciantic
Copy link

Ciantic commented Nov 11, 2018

One can get a workspacy support by just hacking Indexer.php

    public function index(): Promise
    {
        return coroutine(function () {

            $pattern = Path::makeAbsolute('**/*.php', $this->rootPath);
            $uris = yield $this->filesFinder->find($pattern);

Then adding a new line after that:

    public function index(): Promise
    {
        return coroutine(function () {

            $pattern = Path::makeAbsolute('**/*.php', $this->rootPath);
            $uris = yield $this->filesFinder->find($pattern);
            // New line!
            $uris = array_merge($uris, yield $this->filesFinder->find('C:/DepSource/WP/**/*.php'))

And now all your projects have WordPress support.

Edit Doing it correctly, I have no idea. Does it need to support multiple projects with own Composer.json etc. it gets complicated quickly.

@robclancy
Copy link

@felixfbecker I was wondering why things just didn't seem to be working like when I last used this. You should have a strong note in the README (so it shows on the extension page) that this only works with single folder roots. And a link to this issue so you might get people to contribute.

@Ventzy
Copy link

Ventzy commented Apr 3, 2019

Workaround - kinda obvious, but still - symlink external directories into main project directory

@yuwenlong
Copy link

yuwenlong commented Sep 27, 2019

VS Code Multi-root Workspaces and PHP.
Still can't use it now?
@felixfbecker

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants