mclear-tools / tabspaces

GNU General Public License v3.0
233 stars 15 forks source link

tabspaces with non-project buffers #35

Closed grolongo closed 1 year ago

grolongo commented 1 year ago

Hello,

I didn't try your package yet but after skimming through the readme it seems it's pretty much for projects only.

I use Gnus and ERC, is it possible to isolate buffers related to these two modes with your package?

Thanks.

mclearc commented 1 year ago

Hi -- yes, tabspaces lets you create workspaces using the built-in tab-bar mode. This will isolate buffers in a "tabspace" but it does so not by recognizing the particular modes (though I guess you could do some lisping to do that) but just by isolating the buffers that you open. So if you open a new tabspace and then open some Gnus buffers, they will be isolated from your other tabspaces. Same with ERC. So I use the following, for example, to have a tabspace dedicated to my agenda and to Elfeed:

(defun cpm-open-agenda-in-workspace ()
  "Open agenda in its own workspace"
  (interactive)
  (if (member "Agenda" (tabspaces--list-tabspaces))
      (progn
        (tab-bar-switch-to-tab "Agenda")
        (if (get-buffer "*Org Agenda*")
            (switch-to-buffer "*Org Agenda*")
          (org-agenda nil "d"))
        (org-agenda-redo t)
        (delete-other-windows))
    (progn
      (tab-bar-new-tab)
      (tab-bar-rename-tab "Agenda")
      (require 'org)
      (require 'mu4e)
      (lem-jump-to-org-dashboard))))

(defun cpm-open-elfeed-in-workspace ()
  "Open Elfeed in its own workspace."
  (interactive)
  (cond ((member "Elfeed" (tabspaces--list-tabspaces))
         (tab-bar-switch-to-tab "Elfeed"))
        (t
         (tab-bar-new-tab)
         (tab-bar-rename-tab "Elfeed")
         (elfeed)
         (elfeed-update))))
grolongo commented 1 year ago

Thank you for the explanation, I almost have the same functions as you already. I guess I'll use your package to better isolate buffers in the completions list :)