How to work with projects


#1

Is there a built-in way to create and manage a project? For example, in SublimeText you can have projects that can be swapped to quickly which can contain multiple folders that can be easily searched across and accessed via the folder pane. I see ‘project’ reference in documentation and by a couple commands in the command palette, however I do not see a way to save or swap to a project. Is this a coming feature or am I missing something?


"Sublime Text" -like 'Projects'
Open Multiple Projects in One Window
Saving projects
Question about planned multiple folder support
#2

Is there something wrong with just opening Atom in the root of your project? Or am I missing something fundamental here.


A root folder as project does not suffice
#3

Rather than having to leave the editor, it is really useful to just swap
projects using the command palette. It’s annoying to have to constantly
open/add folders to the editor or leave the editor to browse the file
system. Also, it opens up the chance to have custom settings on a project
basis. It doesn’t have to be complex. SublimeText nails it really, and it
would be wonderful to see something like this in atom. It’s the only deal
breaker for me currently.


#4

I see, that makes more sense, so to answer your question then: no, I don’t know that this is currently possible.

FWIW, packages have access to Node globals like fs, so hacking together a plugin package doesn’t seem out of the question.


#5

The project switcher would be awesome.

I think having actual project definition files like in ST would be useful too, since you gotta adjust settings for some projects (i.e. this repo wants 2-space tabs, this one wants 4, this repo needs to ignore /bin, this other one needs to show it, etc).


#6

I’d love this feature, too.

One thing I’d add, though, is that I don’t want Atom to add any files to the project like Sublime does. Sublime adds 2 more files I have to gitignore. It’d be cool if Atom just tracked the project meta data under the covers.


#7

I’m not a Node dev, so I wouldn’t know how to build this, but maybe the UX could go something like this:


(Full-resolution screenshot: http://d.pr/i/tEZO)

You would have a list of projects, and a + to add a new one. The project name and optional subtitle could be edit-in-place (single click, then edit).

Clicking a project would slide forward (iOS navigation controller style) and have the present-day file browser with a < Projects back button.

Just a thought. :smile:


Introducing Protons
#8

I think as far as project management goes it could work similar to how packages are stored currently in ~/.atom. It could be that you have a ~/.atom/projects dir that contains cson files with the project’s state.

I’d be interesting in hacking on this in the near future but unfortunately don’t have the time/bandwidth right now. Although if anyone does start working a plugin for this I’d certainly be willing to chip in :smile:


#9

I think I’m going to try and through something together over the weekend, but don’t let that stop anyone else from experimenting. I’ll post back here if I come up with anything.


#10

Awesome idea @pho3nixf1re


#11

Sublime Text project files do serve a purpose. You can define project-specific settings or build systems there and it can be used as an entry point for other developers who just need to open the project file and are ready to go.

That said, I don’t do that very often and mostly just add them to .gitignore. I have yet to find a use for the new “multiple workspaces” feature too.


#12

Kind of surprised this is even being debated. Project management is essential, simply put.

What should be discussed is the scope of how project management is delivered. In @clifton​ite 's example, he shows a superb way to integrate projects. It’s treating projects as important from a UI perspective, which Sublime for example doesn’t do. Project management in Sublime feels almost like an afterthought.

Atom’s projects (and workspaces) should be cson files in ~/.atom/projects/uniqueProjectName.cson OR optionally, located in a user defined location such as the project directory itself, like Sublime. That way, by default, they’re out of the way for people who don’t want to deal with project files.

Sublime’s project file pathing is absolute (by default) which makes projects non-portable. This is bad and should be different in Atom, with relative paths, which would be easily resolved provided the project remains in the same directory relative to the file structure.

I also want to mention that having a robust workspace management system unique to each project would be really really useful. Imagine opening up the project and then a list of workspaces is made available, which you have defined names to previously. One might be models, another admin views. You could toggle between them on the fly instead of poking around and jumbling up your tabs. I personally find myself working on models, the going back over to api, then the templates. In the end I have stylesheets open, core backend stuff, controllers, and so I just end up blanket closing all open tabs and starting fresh once the tabcount reaches confusion levels, similar to how one uses a browser. I believe Sublime recently added something like this but I haven’t experimented with it


#13

This is wrong, paths to project folders can be relative in ST and I use it all the time. You just have to set it manually.


#14

My bad! It seemed like it was a thing, thanks for clearing that up.


#15

I like your ideas here.

Regarding the workspace “mode” (e.g. working on models, then views, etc.) I think that’s largely what tab groups are for. I typically divide Atom up into panes and collect my models in one quadrant of the screen, my views in another, etc. and I always know that a certain pane contains a type of file.

A current workaround is to only open the folder containing the files you need. So instead of opening an entire Rails app, for example, you could instead just open /app/models to work on models.


#16

In the plans. We all want it, too, it just didn’t make the cut. Once the worst bugs get worked out it’s pretty high on the list.

Thanks for the feedback!


Per-project editor settings
#17

I’ll be one of the first to contribute/create a package that shows open files within the project sidebar if it isn’t supported straight up. eg. If the file is open, it has a different background/color/icon in the filesystem view showing it’s indeed open. This way you could hide the tab bar entirely. Only issue would be forgetting about having too many files open :p.


#18

Would be nice to support sublime project files while we’re at it. Converts/creates atom version on open.

Many devs use sublime and atom is obviously heavily influenced by it. There’ll probably be alot of converts and alot of existing project files as a result. Don’t make all devs recreate all projects (and their respective project-specific settings).

Something to keep in mind when writing a project package.


#19

As all of you, I’ll really like a project-managment feature in Atom.

I tried to create a plugin to parse sublime-project files, but, currently, I have too much todo at work to dev on it these days.

But I think it’s important to make a point about the location were the project files should be saved.

Some people on this topic proposed to put the project-definition file on ~/.atom/projects, which can be logical, but I think it’s very important to be able to also keep the project-definition file where we want, specially in the project path.
That can allow to use relative paths, and also be a great feature for team working.

With our team, we store the sublime-project file inside each projects, sharing the project-configuration once and for all.


#20

@nathansobo does it mean we shouldn’t focus on creating our plugin for that now, because it’ll be done inhouse by github?