microsoft / vscode

Visual Studio Code
https://code.visualstudio.com
MIT License
164.11k stars 29.27k forks source link

Add support for opening multiple project folders in same window #396

Closed stoffeastrom closed 7 years ago

stoffeastrom commented 8 years ago

Right now it doesn't seem possible to opening multiple project folders in the same window which imho is a bit constraining. If you are working on modular modern projects it's a must have to be productive.

saada commented 7 years ago

@waderyan , sorry for the late response:

Do your micro services share a parent folder? Why or why not?

Yes, for convenience. It makes it easier to find related services when they're under the same directory.

Is each microservice separated into its own git repository? Why or why not?

Yes. They not only have different repos, they also have different linting and debugging configurations. Also, using Cmd+P to switch files between projects is super useful. Global search across related projects, ...

Looking forward to seeing this in action!

sxslex commented 7 years ago

One solution would be to create a link to the folder where the files you would like to access are located. It is not ideal but it can help.

Example:

/home/myprojet
/home/mylibs
cd /home/myproject
ln -s /home/mylibs
code /home/myprojet
calloncampbell commented 7 years ago

I have 3 monitors and I want to use VSCode across all three. If I can't open multiple instances then at least support undocking the tabs and dragging them out to other windows (similar to Visual Studio 2015).

ghost commented 7 years ago

Agree.

All other text editors do it. Why didn't microsoft think in something so simple and necessary?

rsyring commented 7 years ago

@calloncampbell That feature is in this issue: https://github.com/Microsoft/vscode/issues/2686

alexeyeryshev commented 7 years ago

@calloncampbell @rsyring I dont know what I am doing wrong but by using code -n I can open as many editor instances as I want.

ronjouch commented 7 years ago

If I understand correctly, this will be investigated within the February Iteration Plan as "Initial investigation into implementing 'multi root workspaces', 'multi folder' workspaces" :)

edmundtfy commented 7 years ago

+1... Isn't this possible with old version of VSCode or was I just using Sublime? forgot... but very handy. Now my Mac is littered with 6 windows all over the place...

And no I won't open the root folder of all those 6 folders I have opened, coz the explorer is a vertical scroll and it would take me forever to browse through the files...

ravtakhar commented 7 years ago

@edmundtfy it's possible in sublime. Visual Studio Code never had support for this functionality.

g13013 commented 7 years ago

@min20 solution is just perfect !!! multi folder project, it would instead multi-windows managed via buttons

edmundtfy commented 7 years ago

@DeeJaVu considering that... VSCode has these mouseover-tooltip and control+click to go to definition. I downloaded some extensions for Sublime but the mouseover and control+click stuff don't work as well.. any recommendations?

dariusrosendahl commented 7 years ago

I really miss this after using Sublime for years. Right now I'm working with Intershop (as front-end) with hundreds-thousands files per cardridge. If I have to load a full webshop it's really slow when you want to open CTRL+P to quickly switch to a file or when you have to search.

Also, I simply do not want every folder of a project in my editor. I don't need everything as a front-end developer. Just the folders I need are enough.

Another example: creating a Wordpress site and plugins for it at the same time. Why would I need to include a full Wordpress site? It just slows down your efficiency.

Another problem we have: our front-end framework is split in different git repos'. Having more then 4 windows open is a real pain. And SCSS intellisense is not working then (IE. variables from core > package)

TLDR; Please, make this happen. VScode is unusable for large/huge projects

Zmove commented 7 years ago

+1, lets imagine you develop a wordpress or a drupal with several custom modules.

Your project root is the root of your website, but you don't want the full website to be a repo, you just want your several modules or themes as independant repo each.

Very common use case in web development that should be covered, even by the smallest/lightest IDE.

sjova commented 7 years ago

+1

virpo commented 7 years ago

+1, would make me able to edit a project and work on it's submodules seamlessly

mackintux commented 7 years ago

+1

andrewmclagan commented 7 years ago

Its the only issue stopping us from migrating our entire 32 person dev team to VS.

Micro-service development is just not feasible, its painful.

fl3pp commented 7 years ago

+1

lushibi commented 7 years ago

+1, definitely useful, I'm deciding go to vscode from sublime, but, because of this feature is missing, I think I would still use sublime until one day..

usmanahmed commented 7 years ago

Its a very necessary and basic featured. I can't believed how come developers of this great editor ignored it. It is useless without this feature. This is stopping me to switching to VSCode from Atom.

DFelten commented 7 years ago

Please add this feature. After using Sublime and then Atom this is for me a necessary feature of an editor. Of course it's not that easy because of the git integration, but it's something I need within my favourite editor.

loustefanski commented 7 years ago

+1

gsmental commented 7 years ago

+1 urgent need

nogdacosta commented 7 years ago

+1 Like it was said before, to move from Atom to VSCode we really need this feature.

buzzzzer commented 7 years ago

ATTENTION BEFORE COMMENT ***PLEASE !!!! Stop comment with a "+1"

Each of your useless comment distracts more than a hundred people only with this thread !!! If you want to support this feature - it has emotion in the first message ! If you want to subscribe to updates - for this is the "Subscribe" button to the right of topics Respect the other members, who are forced to read your "+1", "really needed", etc

doublehelix commented 7 years ago

For reference, the way Sublime Text (as an example) arranges it's projects is by "including" folder trees, with unique options per "folder" included in your project.

To visualise this, the JSON of a Sublime Text project file looks like this:

{
    "folders":
    [
        {
            "name": "Front-End (web-forms)",
            "path": "source/www/forms",
            "file_exclude_patterns":
            [
                "*.sublime-*",
                ".gitignore"
            ],
            "folder_exclude_patterns":
            [
                "node_modules",
                ".idea",
                "bin",
                "fonts"
            ]
        },
        {
            "name": "CORE C# Server Components",
            "path": "Source/Server",
            "file_exclude_patterns":
            [
                ".gitignore",
                "*.resx",
                "*.designer.cs",
                "*.StyleCop",
                "*.testsettings",
                "*.cache",
                "*.user",
                "*.vsmdi"
            ],
            "folder_exclude_patterns":
            [
                "bin",
                "obj",
                "TestResults",
                "Service References"
            ]
        },
        {
            "name": "DB schemas & utility scripts",
            "path": "Source/Database"
        },
        {
            "name": "Grunt Build source",
            "path": "Build",
            "folder_exclude_patterns":
            [
                "dist",
                "node_modules",
                "TestResults"
            ]
        }
    ],
}

As you can see, each included folder is relative to the project path (in the case of sublime text his is the path of the *.sublime-project file). Also, each folder has a section for excluding file and folder patterns with wildcards. Great for ignoring (as can be seen above) test results, libraries that you shouldn't edit, artwork and loads of other stuff.

This is the last reason I have left for not switching.

zhaopengme commented 7 years ago

It's very useful!

poparazvandragos commented 7 years ago

+1 Example: need to check if some functionality is not already implemented in other modules that the app references so that I don't duplicate functionality

Obviously the modules are stored elsewhere in the file path, not in the app itself, and using multiple windows is pain with just one screen, when you just want to quickly access a file and read the code I'm talking AngularJS apps, which don't need deployment or anything, just a running server. Why should i bother to dev in another file structure, when i can just open the App folder directly from Tomcat and have my changes take effect in real time.

And no, there is no parent folder, unless you suggest opening the Tomcat server folder as a project (which is like suggesting I open my whole HDD as a project, because I'll be able to open all the files then).

nevinm commented 7 years ago

Wow, I uninstalled atom to try out VS, and this feature hasn't been added since 2015.

stoffeastrom opened this issue on 21 Nov 2015

That's depressing. :disappointed:

PS: Opening the master folder, is not exactly a solution as it opens up all unwanted files as well, beating the whole purpose of this ticket.

gkalpak commented 7 years ago

That's depressing indeed. But then again not as depressing as people still complaining about an amazing, free, opensource editor (which consistently adds a handful of new features every month). Nor as depressing as spamming everyone watching this thread with comments about one's depression.

(Now I am one of the spammers, I guess :grin:)

Tyriar commented 7 years ago

Update: The current plan is to look into this in the March/April iterations.

See https://github.com/Microsoft/vscode/issues/21923 for the March iteration plan:

Investigate into multi-root, multi-folder workspaces #396 @bpasero @Tyriar

mugi-luffy commented 7 years ago

+1

WraithKenny commented 7 years ago

To share a real world example that refines the feature description: Example, WordPress Theme/Plugin dev.

In other editors, I set up several folders as "bookmarks", to get to a fairly large and complex file tree a little bit easier to manage. One is to the webroot, which is the root I'd prefer any debug and code completion function look up to start at (the environment). Second is to the actual project, a theme folder or a plugin folder which, in my workflow, is the version control root. Occasionally, I set up additional folders as reference, such as a parent theme, or template theme, or a plugin that I'm integrating with and I need to reference/read frequently.

So the feature set here is, 1. the ability to set the git root and the search root to different locations. 2. A folder bookmarking system that is purely visual to declutter the file tree panel.

For some on the thread, where the git root, and the project root is the same, it seems that learning and using submodules would be enough, and then it's just about 2. to get a nice less cluttered view of a nested folder.

I'm sure that some on the thread are actually asking for literal multi-project support, but I'd assume most are just asking for mainly the simpler folder bookmarking idea.

I'm additionally asking for a way to define one as a project root (search/debug), and another as a git root. (Feel free to ignore my poor naming of things.)

DannyFeliz commented 7 years ago

My workaround for this is simply create a parent folder and within create the symbolics links with all the projects that I want. e.g.

I have these projects

1. my-app-api 2. my-app-client

I create a folder called my-app-all (the name is irrelevant here) and within, I create two symbolics links pointing to my-app-api and my-app-client then in VSCode I just need to open my-app-all

Steps

  1. mkdir my-app-all
  2. cd my-app-all
  3. ls -s ../my-app-api
  4. ls -s ../my-app-client

Notes: The git integration won't work

poparazvandragos commented 7 years ago

@DannyFeliz this should be marked as an answer to this issue and posted up top for everyone to see... I've tested this on Windows too, using the MKLINK command. Example of usage:

  1. Open Command Prompt with Administrator privileges
  2. Go to your project folder 3.[optional] create a links folder
  3. use MKLINK /D "link_name" "path to folder you want to reference"

When you open the project in VS code you will see the referenced folder and all the files/folders in it.

Happy coding guys!

ehartford commented 7 years ago

This does not enable the Git integration to work.

On Mon, Mar 20, 2017 at 2:42 PM, poparazvandragos notifications@github.com wrote:

@DannyFeliz https://github.com/DannyFeliz this should be marked as an answer to this issue and posted up top for everyone to see... I've tested this on Windows too, using the MKLINK command. Example of usage:

  1. Open Command Prompt with Administrator privileges
  2. Go to your project folder 3.[optional] create a links folder
  3. use MKLINK /D "link_name" "path to folder you want to reference"

When you open the project in VS code you will see the referenced folder and all the files/folders in it.

Happy coding guys!

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Microsoft/vscode/issues/396#issuecomment-287907310, or mute the thread https://github.com/notifications/unsubscribe-auth/ABEOBVKz2bqFsRdfvyOpcFW2e_26HV5bks5rnvLWgaJpZM4Gm3nX .

poparazvandragos commented 7 years ago

@ehartford I said an answer, not THE answer, as most of us were looking just for this exact thing, displaying several directories in the same VSCode window, that reside in different locations. Symbolic Links do just that, but when working on Windows this is not the solution which comes to mind. It had to pass 2 years and for a Linux/OSX developer to come and show us the simplest workaround. I'm glad I decided to finally drop in my comment on this issue as I've got a workaround for what I wanted after just 12 days, when I needed it the most.

The issue should not be dropped, as a lot more can be done if the developers choose to step in on the matter. But for the most of us this is satisfying. I was just suggesting to somehow move this on top, so people don't waste time reading all the other comments, until they reach this comment. Some might just overlook it because of the size of the thread.

I'll just edit this as I see people already jumping on my back because I found out how to achieve what I wanted and tried to make it easier for others to see an alternative even if not perfect. BTW: You can always use the command prompt integrated into VSCode to pull/commit/push files in individual linked folders but why settle for workarounds.

EricForgy commented 7 years ago

Without Git integration, it's a total nonstarter. I don't consider this an acceptable solution by any means. Looking forward to an actual solution. Best regards.

chadbr commented 7 years ago

If it helps -- google appengine nodejs client is structured like this:

https://github.com/GoogleCloudPlatform/google-cloud-node

I'd love to be able to open / debug / work in a solution like this (even if it's one package at a time). I'd love to be able to write Typescript based projects / libs in this style.

Thanks for all the great work!

replete commented 7 years ago

Love VSCode, but it's crap at handling multiple projects. But I can understand why the feature has been put off, as it makes multiple things like source control more complicated due to nesting etc.

I would happy for a 'project quick switch' feature OR the ability to 'tab' multiple vscode instances in one window.

ghost commented 7 years ago

完全同意 ,请支持同一个窗口中打开多个项目文件夹。这功能很重要。

dariusrosendahl commented 7 years ago

@replete It's not a perfect solution for your problem. But give Project Manager a try, this is partially helping me right now.

replete commented 7 years ago

@dariusrosendahl Yep, discovered this morning funnily enough! Does the job for now.

The sidebar has only 5 icons, It wouldn't take much to add a 'Project' sidebar. But it seems vscode product owners are super fussy about how minimal it is. Too minimal IMO as it's now becoming an IDE.

alefragnani commented 7 years ago

@replete glad to know it's being helpful 😄

In fact, there in an experimental API for creating a so called Tree Explorer Contribution (just like a Symbols panel - https://github.com/Microsoft/vscode/issues/15485). With that, the extension could add an icon to the Activity Bar.

I will add an issue to my extension with your suggestion, thanks 👍

DilwoarH commented 7 years ago

+1

bugpowder commented 7 years ago

@dmccaffery

I, personally, don't care if this feature ends up in the product or not -- I understand why some folks want it, but I would point out that it does make everything slightly more convoluted.

Then maybe don't dominate the conversation with negative comments against the feature and about how VSC is not an IDE? I think a single response/negative voting is enough, or at worst two, if one needs to clarify a position further.

Besides, the "not an IDE" argument is moot. Other non-IDEs also allow for that.

For instance: when searching using a regex expression -- which workspace am I searching? one? all?

Not that big an issue. Either search all, or have a selector to scope the search to one of the open workspaces. Again, other "non IDEs" (as well as IDEs) already handle this (and other) cases.

glesperance commented 7 years ago

I fixed this issue in my own setup by creating a dir for each "workspace" and symlinking to the projects I want to see in that said workspace.

dariusrosendahl commented 7 years ago

I saw that

Initial investigation into multi-root, multi-folder workspaces #396 @bpasero @Tyriar

is done according to https://github.com/Microsoft/vscode/issues/21923 any updates on this? :)

bpasero commented 7 years ago

We (subset of the team) did an initial investigation in the amount of work involved and the challenges we see and the next steps is to discuss the result of that with the team and plan for it. We do our planning for April release during this week so I would expect more fine grained plan items as a result of this work showing up soon.

danechitoaie commented 7 years ago
screen shot 2017-04-06 at 12 09 26

If I'm not too late to the party here's a nice way this could be implemented. When you go to "Explorer" we already have two sections. One for opened files and one for the explorer tree of the current opened folder.

Ideally we could just open more folders in same window and they would be added here in its own section that can be expanded to see the explorer tree.

Same thing could be done for Source Control section. One subsection for each folder that is opened in the "explorer". So a 1to1 relation.

This way maybe we can make everyone happy. We have support for opening multiple folders in same window if we want to, and also GIT integration still works and is able to handle each "project root" separately.