I would love to be able to handle a multiple frame situation where I have one project open in a frame with treemacs open in it and then open up a new frame with a separate instance of a treemacs buffer that is independent of each other.
Already underway. It's quite a complex bit of refactoring, but it'll happen eventually.
That's great to hear! I would try to help but the limits of my elisp are fairly low. I might look into the bookmark feature because that seems like lower hanging fruit.
I'm afraid I already wrote most the code for the bookmarks, what's left is only the boring parts - cleanup, testing and documentation.
If you do want to help there's one thing you can try: you know how when you expand a node in neotree it automatically moves to the first line in the expanded tree? I'd like to add this to treemacs, as an optional feature. That should be fairly simple, mostly an extra step around treemacs--push-button, and does not require knowing treemacs' codebase.
That would be a cool feature, it would be great if the same worked for pers-mode, i.e. one separate treemacs buffer per layout.
Ive thought about something like this as well. It might be possible to make that change later on without overthrowing everything. Maybe. No promises.
that would be great
Volunteers wanted!
I've now finished what I hope is most of the work (the 80/20 rule still applies of course), to the point that, with the exception of 2 specific modules, treemacs should run frame-locally with all its bells and whistles. If anyone can't wait to use this feature or wants to help me get this done quicker can now do so by using the feature branch and making sure I've caught everything:
You'll need to clone the repo, check out the frames branch and install that version of treemacs by adding a :load-path property in use-package pointing to the local reppository. With this in place use treemacs as usual and report any frame-scope related bugs in this ticket.
The 2 modules that don't work yet are filewatch-mode and session persistence. Using them will as is will probably make treemacs throw up stack traces. Everything else should be good to go, including eyebrowse and persp.
Every frame will have its own treemacs buffer, though spawned frames should start without one and you need to initialize it first. Destroying a frame will likewise kill its treemacs buffer if it has one. All the transient state, like remembering which directory or tag nodes are open, should likewise be confined to a single treemacs buffer instead of being global.
Hey, that's awesome! I will take a spin with it shortly
Anyone actually up to giving this a try?
If so you should update, filewatch mode, too, can now handle multiple buffers.
Support for desktop-save-mode is pushed as well now.
The only component still missing, other than a lot of testing, is persp mode's session restoration.
Persp does not restore frames, so that point is down as well.
This should be my lat push here - everything's done, including the readme. There's also a nice performance boost in there as well, though you're unlikely to notice unless you're working with very large projects.
I'll to some testing for a few days, then push to master.
Multi-frame support is now live.
Most helpful comment
Already underway. It's quite a complex bit of refactoring, but it'll happen eventually.