Vscode-project-manager: Contextual Structure for Projects

Created on 6 Sep 2016  ·  13Comments  ·  Source: alefragnani/vscode-project-manager

The are some issues related with this one, but not seems the same goal.

  • #43
  • #46
  • #47

I work in several projects that are related in some way. There are two frameworks with many sub projects, for example. I could say that I work in different contexts and the projects are differents in theses contexts, so it will be nice if I could change my current context and the projects availables in this context.

In other words, I am suggesting an project.json with this format:

[
  {
     "label": "awesome-framework",
     "projects": [
       {
          "label": "core",
          "description": "C:\\awesome-framework\core"
       }, 
       {
          "label": "ui",
          "description": "C:\\awesome-framework\ui"
       }
    ]
  },
  {
     "label": "wonderful-framework",
     "projects": [
       {
          "label": "core",
          "description": "C:\\wonderful-framework\core"
       }, 
       {
          "label": "ui",
          "description": "C:\\wonderful-framework\ui"
       }
    ]
  },
  {
     "label": "personal",
     "projects": [
       {
          "label": "resume",
          "description": "C:\\personal\resume"
       }, 
       {
          "label": "game",
          "description": "C:\\personal\game"
       }
    ]
  }

]

And, to usage, there will be another keyboard shortcut to change contexts. So I start my day, choose my context with alt+shift+c and along the day I can change my projects with alt+shift+p. Maybe I little bit crazy, but I think it will be useful for whom works in more than one company.

enhancement

Most helpful comment

Thanks @robsonrosa ,

Sometime ago I was thinking in a similar idea, but with a different approach. The idea was to add, what you call _context_ as a _group_ for each project. In fact, the same project could be part of different _groups_. The structure should be something like this:

[
    {
        "label": "vscode-language-pascal",
        "description": "c:\\Users\\alefr\\Documents\\GitHub\\vscode-language-pascal",
        "groups": ["vscode" , "delphi"]
    },
    {
        "label": "vscode-bookmarks",
        "description": "c:\\Users\\alefr\\Documents\\GitHub\\vscode-bookmarks",
        "groups": ["vscode"]
    }
]

But to do that, first I would like to have this issue resolved in VS Code. So, the listing and selection would be much easier.

Even so, I never thought about a specific command to _change context/group_, and _filter_ the projects from that context while using List Projects. I liked your idea 😄 .

Thanks for your suggestion 👍

All 13 comments

Thanks @robsonrosa ,

Sometime ago I was thinking in a similar idea, but with a different approach. The idea was to add, what you call _context_ as a _group_ for each project. In fact, the same project could be part of different _groups_. The structure should be something like this:

[
    {
        "label": "vscode-language-pascal",
        "description": "c:\\Users\\alefr\\Documents\\GitHub\\vscode-language-pascal",
        "groups": ["vscode" , "delphi"]
    },
    {
        "label": "vscode-bookmarks",
        "description": "c:\\Users\\alefr\\Documents\\GitHub\\vscode-bookmarks",
        "groups": ["vscode"]
    }
]

But to do that, first I would like to have this issue resolved in VS Code. So, the listing and selection would be much easier.

Even so, I never thought about a specific command to _change context/group_, and _filter_ the projects from that context while using List Projects. I liked your idea 😄 .

Thanks for your suggestion 👍

This would be a fine addition and allow projects with many internal folders that don't need to be edited to be excluded for the larger project view. PhpStorm does this and it's very helpful.

@robsonrosa @bobrocke: I've just released a new extension that supports your use case, check it out, I think you'll like it: Projects+.

@alefragnani I don't think it makes much sense to wait for issue #11468 to be closed, even if they do implement your request the extension wouldn't be able to support deep nesting.

Cool!

@fabiospampinato congrats for your extension 👍
I decided to wait for that issue to be released because I want to avoid _workarounds_ in my extensions. I have some bad experiences in the past, and now I prefer to use available APIs only. Your _workaround_ was clever, BTW.

About the _nesting_ limitation, I'm not worried, because it wasn't supposed to support anyway. It would be limited to one level only.

Is there any update on this?

I think I would like something like this. I generally create a "Project" for each client I have, but several clients have multiple projects such as different applications.

  • Client XYZ (Project)
    -- Web App
    -- iOS App
    -- Android App
    -- API
  • Client ABC
    -- Public Website
    -- Web App

For my use case, I don't mind seeing all the sub-projects in one Explorer panel, but it would be nice when you do a global search that the search results could be minimized (tree control) by subproject.

I'm not sure if that's entirely clear or not.

Great extension though!

-Steve

Hi @adeptdeveloper ,

I’m not sure, but based on your scenario, I think you already have this, natively, in VS Code 😬 . Have you tried Multi-root Workspaces?

Each one of your “client workspace” could be a Multi-root Workspace, composed by each “App”. After created, just save each Multi-root workspace as a new Project on the extension.

Maybe, in the end, you don’t need this Projects grouping feature at all.

Hope this helps

Hi @alefragnani ,

Yes, thanks, this is exactly what I needed. I do like how your plugin handles project listing on the Activity Bar, but I found another plugin called Workspace Explorer that works as well. I wish it was in the Activity Bar but this will do.

https://marketplace.visualstudio.com/items?itemName=tomsaunders.vscode-workspace-explorer

Thanks!
-Steve

That’s great!

I know about that extension, it appears to work great too, specially if you are a Workspace centric user. In my case, I almost don’t use 😄 .

The grouping idea is what this issue is all about. I already played a bit on how it would work, but just for fun/testing the APIs. I think it should be the next big feature for the extension, but no ETA.

If you change your mind, feel free to evaluate when it’s ready.

Stay tuned

Based on the suggestion from #416, the idea is to add _icon_ for each groups, so this icon could be used in the Side Bar/Command Palette, instead of a default/basic folder.

https://github.com/alefragnani/vscode-project-manager/issues/416#issuecomment-686170986

A few month ago, my original issue was closed, in favor of https://github.com/microsoft/vscode/issues/74967, but it didn’t make any difference, because it is not assigned to any Milestone too.

That being said, I’m removing the depends on label and changing the original idea on how the UI would work.

It will be probably a multi milestone feature, and I already started playing with a few ideas, so you could see the first steps on the upcoming releases.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

codeshark1 picture codeshark1  ·  5Comments

Idealien picture Idealien  ·  4Comments

tdmalone picture tdmalone  ·  3Comments

theAkito picture theAkito  ·  3Comments

jrial picture jrial  ·  4Comments