Commit graph

155 commits

Author SHA1 Message Date
Henrik Lissner
a88cb71a11
feat(workspaces): implement tab-local parameters 2025-09-23 18:47:09 -04:00
Henrik Lissner
96a1b72dda
fix(workspaces): missing tabspaces-session-file parent dir 2025-09-23 18:47:09 -04:00
Henrik Lissner
a307383ecb
fix(workspaces): unbalances parens
Amend: 243b258f8d
2025-09-23 18:47:09 -04:00
Henrik Lissner
4e1b3cdb89
tweak(workspaces): tabspaces-fully-resolve-paths = t
Ensure tabspaces always works with absolute paths, to resolve name
collisions and ambiguities in `tabspaces-project-tab-map`.
2025-09-23 18:47:09 -04:00
Henrik Lissner
c57f2dfc82
fix(workspaces): projectile/project integration
And hardcoded behaviors in tabspaces' API.
2025-09-23 18:47:08 -04:00
Henrik Lissner
065b95288e
tweak(workspaces): centralize project session files 2025-09-23 14:45:37 -04:00
Henrik Lissner
407eae5358
bump: :ui workspaces
mclear-tools/tabspaces@6c7c31b744 -> mclear-tools/tabspaces@d8fceb2406
2025-09-23 00:45:47 -04:00
Henrik Lissner
6209366987
fix(workspaces): +workspaces/kill
One-off issue with +workspaces/kill not killing the correct tab or
killing buffers associated with the current buffer.
2025-09-19 18:29:22 -04:00
Henrik Lissner
7baa364543
tweak(workspaces): +workspaces-remove-buffer-from-tab: make tab arg optional 2025-09-19 18:28:55 -04:00
Henrik Lissner
4b69b2a957
fix(workspaces): +workspaces-buffer-list: include current tab's 2025-09-19 18:28:38 -04:00
Henrik Lissner
b7d0c20998
feat(workspaces): introduce +workspaces-dir 2025-09-18 22:43:34 -04:00
Henrik Lissner
c117897290
feat(workspaces): expand and polish API
Needs more refactoring!
2025-09-18 21:57:45 -04:00
Henrik Lissner
c2a53f8f5e
fix(workspaces): remove +workspaces--evil-alternate-buffer-a advice
May not be necessary anymore because tab-bar tabs retain window buffer
history better.
2025-09-17 11:24:00 -04:00
Henrik Lissner
9c3d762f39
feat(workspaces): introduce +tabs flag 2025-09-17 11:23:04 -04:00
Henrik Lissner
704bf439d6
fix(workspaces): close-window-or-workspace remaps 2025-09-17 11:23:04 -04:00
Henrik Lissner
1592b07a7a
fix(:completion): update for tabspaces 2025-09-16 12:50:34 -04:00
Henrik Lissner
251195e688
fix(workspaces): +workspaces/kill: safeguards 2025-09-15 22:50:24 -04:00
Henrik Lissner
a2f4655290
fix(workspaces): leader keybinds
These are not final.
2025-09-15 22:49:15 -04:00
Henrik Lissner
64ab02e989
fix(workspaces): vim keybinds & ex commands for tabs
- Changed the ex commands to match neovim's ex commands.
- Fixes gt, gT, ]w, [w keybinds
- Add :tabe[dit] FILE
2025-09-15 22:44:41 -04:00
Henrik Lissner
f40bbad375
fix(workspaces): evil ex commands 2025-09-15 20:32:01 -04:00
Henrik Lissner
243b258f8d
refactor!(workspaces): replace persp-mode w/ tabspaces
BREAKING CHANGE: As the name says, this is a whole new package. There
will be functional hiccups until I've achieved behavioral parity with
the old workspaces module.
2025-09-14 20:35:13 -04:00
Henrik Lissner
b2e4e8e27c
revert: persp-mode
Bad-ptr/persp-mode.el@82680795b3 -> Bad-ptr/persp-mode.el@40e9993a97

persp-mode introduced some breaking API changes in a recent refactoring,
which have caused issues that are difficult to opt out of, even by
repinning it to an older commit. Until persp-mode sorts things out, I
simply revert it back to a point before all the changes.

Revert: c64ca09ed2
Revert: 751ac6134b
Revert: 6d5e004b87
Amend: a1121acc94
Fix: #8455
Close: #8474
Ref: #8470
2025-09-01 14:33:53 +02:00
Jonas Jelten
b1826a0c64 bump: :ui workspaces
Bad-ptr/persp-mode.el@f146ddccaf -> Bad-ptr/persp-mode.el@82680795b3

this fixes a nasty bug where new eglot workspaces corrupt the previous
one. symptoms of this can be your definition jump source buffer being
read-only and renamed to:
`*EGLOT (jump-destination-project/(your-lang-mode)) stderr*`
2025-08-30 00:49:00 +02:00
Henrik Lissner
c64ca09ed2
fix(workspaces): arity error creating workspaces
The signature of persp-window-state-get-function changed upstream in
persp-mode (bumped in a1121ac).

Fix: #8454
Amend: a1121acc94
2025-08-11 01:22:41 +02:00
Henrik Lissner
a1121acc94
bump: :ui
Alexander-Miller/treemacs@abd27c86df -> Alexander-Miller/treemacs@5fa8419950
Bad-ptr/persp-mode.el@40e9993a97 -> Bad-ptr/persp-mode.el@f146ddccaf
dgutov/diff-hl@9b032018fd -> dgutov/diff-hl@39f076efa8
doomemacs/themes@729ad03463 -> doomemacs/themes@3152c60bb5
jaypei/emacs-neotree@4a4cd85761 -> jaypei/emacs-neotree@3178805a09
jdtsmith/indent-bars@87729d685d -> jdtsmith/indent-bars@aa07a3d812
jdtsmith/ultra-scroll@b447044b9d -> jdtsmith/ultra-scroll@8c92a17743
minad/goggles@5176114e99 -> minad/goggles@791140df23
seagle0128/doom-modeline@a85cb28da8 -> seagle0128/doom-modeline@cb703c217e
tarsius/hl-todo@7ed8bbcadb -> tarsius/hl-todo@b8be53068b

Includes some refactors to the workspaces and vc-gutter modules to adapt
to upstream changes in persp-mode and diff-hl.
2025-08-10 15:34:44 +02:00
duli
361eec11a4 fix(workspaces): avoid duplicate workspace creation when no frame exists
When Emacs is started as a daemon and no frames exist, `emacsclient -c`
should simply switch to the main workspace. However, before
`+workspaces-associate-frame-fn` is called, the new frame is already
added to the frame list, which causes `persp-frame-list-without-daemon`
to always return a non-empty list. A new workspace will be created
instead of switching to the main one.
2025-06-01 00:45:04 +02:00
Henrik Lissner
722f5a2e18
fix(workspaces): use existing workspace on project switch
A "workspace already exists" error is thrown if trying to switch to
project workspace that already exists. This changes it to switch to the
workspace instead.

Fix: #8368
2025-05-06 00:26:27 -04:00
Henrik Lissner
b2db71e55a
revert: feature/workspaces: persist indirect buffers
Restoring indirect buffers indiscriminately isn't so simple, and can
come with unserializable data that Emacs will throw errors on while
restoring a saved workspace.

Revert: 5f04be599f
Fix: #6043
2025-05-01 14:48:46 -04:00
Henrik Lissner
6f6302d42d
fix(workspaces): clobbering pre-existing workspaces on switch-project
If you used `projectile-switch-project`, the workspaces module would
open a new workspace named after the project, but if a  workspace named
after that project already exists, it is hijacked (e.g. two projects in
'some-project/src' and 'another-project/src' would get the same name:
"src"). This commit uniquifies their names so this doesn't happen, and
also embeds a +workspace-project persp parameter in the workspace so
that they can be disamiguated later (this association is lost if you
rename the workspace manually, however).

Fix: #7637
2025-04-01 03:27:03 -04:00
Henrik Lissner
c6f979b4e0
refactor(workspaces): projectile integration
Simplifies +workspaces-switch-to-project-h and refactors out the
dependency on external state.
2025-04-01 03:27:03 -04:00
Henrik Lissner
7941dfa766
fix(workspaces): only trigger projectile-*-switch-project-hook once
Changes upstream made our triggers for these hooks redundant.

Fix: #6559
2025-04-01 03:27:02 -04:00
Kyuvi
8f57069dd5
feat(workspaces): add count arg to switch-{left,right} commands 2025-01-08 19:46:08 -05:00
Henrik Lissner
037b018cdd
feat: add .doommodule files
These optional dotfiles indicate the root of a module or module
group (:lang), and will later contain module metadata. They will also
serve as an alternative to packages.el and doctor.el, and will aide the
parts of the v3.0 module API concerned with resolving the current module
from a path (`doom-module-from-path`), which currently rely too heavily
on parsing path strings.

For now, however, they're simply placeholders.
2024-09-14 20:47:39 -04:00
Chenty
b835e7b6ec
fix(workspaces): don't overwrite previously workspaces on save
Otherwise, each time `+workspace-save` is called, all prior saved
workspaces would be deleted from `+workspaces-data-file` before
inserting the new one.
2024-08-22 12:20:17 -04:00
Henrik Lissner
b3bea23331
fix(workspaces): "none" workspace
Doom removes the "none" workspace from persp-mode's default list of
perspectives, because it is a special case that doesn't behave
identically to other persps in the list, making it a pain to deal with.

This worked fine up until a change to `persp-update-names-cache` (in
Bad-ptr/persp-mode.el@0d6cacc) made it re-insert this "none" workspace
into `persp-names-cache` whenever it is called, undoing our hack; this
commit adapts to that change.

Ref: Bad-ptr/persp-mode.el@0d6caccab3
Ref: Bad-ptr/persp-mode.el@b2e68f97cb
Fix: #7986
Amend: 7f3412e317
2024-08-09 15:42:54 -04:00
Henrik Lissner
7f3412e317
bump: :ui
Alexander-Miller/treemacs@54ef590b76 -> Alexander-Miller/treemacs@202d7f01d6
Bad-ptr/persp-mode.el@345baaa520 -> Bad-ptr/persp-mode.el@40e9993a97
dgutov/diff-hl@57d9d4e3e1 -> dgutov/diff-hl@b80ff9b4a7
ema2159/centaur-tabs@d6009c295a -> ema2159/centaur-tabs@063534bd00
emacs-lsp/lsp-treemacs@1d43e9e030 -> emacs-lsp/lsp-treemacs@fb1a07ae0a
emacs-straight/minimap@4898d27768 -> emacs-straight/minimap@5aa0df40bc
seagle0128/doom-modeline@1505c13564 -> seagle0128/doom-modeline@9920ef5116
tarsius/hl-todo@dd46d426c0 -> tarsius/hl-todo@82eba6b8f7
2024-08-08 17:26:58 -04:00
Henrik Lissner
9cdcfdac36
feat(workspaces): add +workspace/delete
For deleting saved workspaces (saved with `+workspace/save` or
`+workspace-save`).

Also binds `SPC TAB D` (for evil users) and `C-c w K` (for non-evil
users) to it.

Fix: #4399
Close: #7869
Co-authored-by: sriramsk1999 <sriramsk1999@users.noreply.github.com>
2024-07-29 20:57:56 -04:00
Henrik Lissner
5289861109
refactor(workspaces): +workspace/delete: rename to +workspace/kill
To be more consistent with other uses of the verb in the Emacs
ecosystem. Also done in preparation for a new +workspaces/delete command
for #7869.

Ref: #7869
2024-07-05 18:05:15 -04:00
Henrik Lissner
69bc471722
fix(workspaces): dual *Warnings* windows at startup
At some point, either Emacs, persp-mode, or I fixed what caused #319,
which swallows the *Warnings* popup when the new main workspace is
created. Until I can determine what fixed it (so I can determine whether
the whole hack should go), I'll simply add this guard.

Ref: #319
2024-04-06 12:55:01 -04:00
Henrik Lissner
90070c639a
fix(workspaces): remove ivy integration
Due to upstream changes in ivy-rich, +workspace/switch-to throws a
`wrong-type-argument listp leaf` error. As I plan to phase out Ivy
support (and the Ivy module) in the long term, I'll simply remove
ivy (and ivy-rich) integration in the workspaces module, rather than
update it.

Fix: #7499
Fix: #7173
2024-03-26 10:11:34 -04:00
Henrik Lissner
210a5d4162
bump: :ui
Alexander-Miller/treemacs@56691a530a -> Alexander-Miller/treemacs@df26b6ab9a
Bad-ptr/persp-mode.el@df95ea710e -> Bad-ptr/persp-mode.el@345baaa520
dgutov/diff-hl@b5651f1c57 -> dgutov/diff-hl@b8b2727a72
edkolev/evil-goggles@0070c9d844 -> edkolev/evil-goggles@34ca276a85
emacs-lsp/lsp-treemacs@e66ae21965 -> emacs-lsp/lsp-treemacs@e54e74deb8
emacsorphanage/anzu@5abb37455e -> emacsorphanage/anzu@26fb50b429
joostkremers/writeroom-mode@1fd52848eb -> joostkremers/writeroom-mode@f4d035e91d
mickeynp/ligature.el@0e5d0a8554 -> mickeynp/ligature.el@6ac1634612
rolandwalker/unicode-fonts@44d0a22420 -> rolandwalker/unicode-fonts@6245b97d8d
tarsius/hl-todo@70ce48470c -> tarsius/hl-todo@f1fef158f9
2024-02-04 18:58:53 -05:00
roife
1a2789c922
fix(workspaces): check before loading tab configuration
Fix: #7139
2023-10-05 17:46:46 +02:00
Henrik Lissner
88bb045388
docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
Emily Bourke
fd98b44e6a tweak(workspaces): prefill current name on rename
This change uses completing-read to get the new name from the user when
renaming workspaces, to allow them to more easily make a small change to
the existing name of a workspace.
2023-09-12 21:23:48 +02:00
Henrik Lissner
1eb3fd3449
bump: :ui
Alexander-Miller/treemacs@76807bef3c -> Alexander-Miller/treemacs@9986d6cd3d
Bad-ptr/persp-mode.el@7a594a3d8f -> Bad-ptr/persp-mode.el@df95ea710e
abo-abo/ace-window@0577c426a9 -> abo-abo/ace-window@77115afc1b
abo-abo/hydra@9e9e00cb24 -> abo-abo/hydra@317e1de330
dgutov/diff-hl@dabb7be628 -> dgutov/diff-hl@d20f16bf5e
dimitri/switch-window@8d9fe251d8 -> dimitri/switch-window@71ef2f54c9
ema2159/centaur-tabs@f4cef95acb -> ema2159/centaur-tabs@a2890d968d
emacs-lsp/lsp-treemacs@2894e6dec5 -> emacs-lsp/lsp-treemacs@a48763ba5d
joostkremers/writeroom-mode@eac1da790f -> joostkremers/writeroom-mode@1fd52848eb
k-talo/volatile-highlights.el@9a20091f0c -> k-talo/volatile-highlights.el@513c8b73cd
rolandwalker/nav-flash@2e31f32085 -> rolandwalker/nav-flash@5d4b485678
rolandwalker/unicode-fonts@47f2397ade -> rolandwalker/unicode-fonts@44d0a22420
seagle0128/doom-modeline@b66d5e5006 -> seagle0128/doom-modeline@6125309c2c
tarsius/hl-todo@e52285965b -> tarsius/hl-todo@a627d33214
2023-02-20 22:47:23 -05:00
Henrik Lissner
086e9a9322
feat(workspaces): +workspace/switch-to: add buffer list column
To offer more context for ivy users while switching between workspaces.

Close: #3006
Co-authored-by: rgrinberg <rgrinberg@users.noreply.github.com>~
2023-02-18 15:27:47 -05:00
roife
d12b0ebc80 fix(workspaces): save current tab-bar tabs to file 2023-02-18 01:01:49 -05:00
Antonio Ruiz
191745424b feat(workspaces): make tab-bar tabs workspace-local 2022-10-05 15:14:44 +02:00
TEC
5ac2a5258b docs: change link format 2022-10-05 01:01:19 +02:00
Henrik Lissner
aa54383b5d
refactor: deprecate doom-etc-dir for doom-data-dir
doom-etc-dir will be renamed to doom-data-dir, to better reflect its
purpose, and align it with XDG_DATA_HOME (where it will be moved to in
v3, where Doom will begin to obey XDG directory conventions more
closely).
2022-08-14 20:43:35 +02:00