fix(workspaces): save current tab-bar tabs to file

This commit is contained in:
roife 2022-12-23 23:22:44 +08:00 committed by Henrik Lissner
parent f6616e8a06
commit d12b0ebc80
2 changed files with 18 additions and 1 deletions

View file

@ -580,6 +580,14 @@ This be hooked to `projectile-after-switch-project-hook'."
'tab-bar-tabs (tab-bar-tabs)) 'tab-bar-tabs (tab-bar-tabs))
(set-persp-parameter 'tab-bar-closed-tabs tab-bar-closed-tabs))) (set-persp-parameter 'tab-bar-closed-tabs tab-bar-closed-tabs)))
;;;###autoload
(defun +workspaces-save-tab-bar-data-to-file-h (&rest _)
"Save the current workspace's tab bar data to file."
(when (get-current-persp)
;; HACK: Remove fields (for window-configuration) that cannot be serialized.
(set-persp-parameter 'tab-bar-tabs
(frameset-filter-tabs (tab-bar-tabs) nil nil t))))
;;;###autoload ;;;###autoload
(defun +workspaces-load-tab-bar-data-h (_) (defun +workspaces-load-tab-bar-data-h (_)
"Restores the tab bar data of the workspace we have just switched to." "Restores the tab bar data of the workspace we have just switched to."
@ -587,6 +595,12 @@ This be hooked to `projectile-after-switch-project-hook'."
(setq tab-bar-closed-tabs (persp-parameter 'tab-bar-closed-tabs)) (setq tab-bar-closed-tabs (persp-parameter 'tab-bar-closed-tabs))
(tab-bar--update-tab-bar-lines t)) (tab-bar--update-tab-bar-lines t))
;;;###autoload
(defun +workspaces-load-tab-bar-data-from-file-h (&rest _)
"Restores the tab bar data from file."
(tab-bar-tabs-set (persp-parameter 'tab-bar-tabs))
(tab-bar--update-tab-bar-lines t))
;; ;;
;;; Advice ;;; Advice

View file

@ -282,4 +282,7 @@ stored in `persp-save-dir'.")
(add-hook! 'tab-bar-mode-hook (add-hook! 'tab-bar-mode-hook
(defun +workspaces-set-up-tab-bar-integration-h () (defun +workspaces-set-up-tab-bar-integration-h ()
(add-hook 'persp-before-deactivate-functions #'+workspaces-save-tab-bar-data-h) (add-hook 'persp-before-deactivate-functions #'+workspaces-save-tab-bar-data-h)
(add-hook 'persp-activated-functions #'+workspaces-load-tab-bar-data-h)))) (add-hook 'persp-activated-functions #'+workspaces-load-tab-bar-data-h)
;; Load and save configurations for tab-bar.
(add-hook 'persp-before-save-state-to-file-functions #'+workspaces-save-tab-bar-data-to-file-h)
(+workspaces-load-tab-bar-data-from-file-h))))