ui/workspaces: refactor restoration of indirect buffers
This commit is contained in:
parent
e645185907
commit
c5cd29ef74
1 changed files with 6 additions and 8 deletions
|
@ -197,7 +197,7 @@ stored in `persp-save-dir'.")
|
||||||
:predicate #'buffer-base-buffer
|
:predicate #'buffer-base-buffer
|
||||||
:save-function (lambda (buf tag vars)
|
:save-function (lambda (buf tag vars)
|
||||||
(list tag (buffer-name buf) vars
|
(list tag (buffer-name buf) vars
|
||||||
(buffer-name (buffer-base-buffer))))
|
(buffer-name (buffer-base-buffer buf))))
|
||||||
:load-function (lambda (savelist &rest _rest)
|
:load-function (lambda (savelist &rest _rest)
|
||||||
(cl-destructuring-bind (buf-name _vars base-buf-name &rest _)
|
(cl-destructuring-bind (buf-name _vars base-buf-name &rest _)
|
||||||
(cdr savelist)
|
(cdr savelist)
|
||||||
|
@ -206,12 +206,10 @@ stored in `persp-save-dir'.")
|
||||||
nil)))
|
nil)))
|
||||||
(defun +workspaces|reload-indirect-buffers (&rest _)
|
(defun +workspaces|reload-indirect-buffers (&rest _)
|
||||||
(dolist (ibc +workspaces--indirect-buffers-to-restore)
|
(dolist (ibc +workspaces--indirect-buffers-to-restore)
|
||||||
(let* ((nbn (car ibc))
|
(cl-destructuring-bind (buffer-name . base-buffer-name) ibc
|
||||||
(bbn (cdr ibc))
|
(when (buffer-live-p (get-buffer base-buffer-name))
|
||||||
(bb (get-buffer bbn)))
|
(when (get-buffer buffer-name)
|
||||||
(when bb
|
(setq buffer-name (generate-new-buffer-name buffer-name)))
|
||||||
(when (get-buffer nbn)
|
(make-indirect-buffer bb buffer-name t))))
|
||||||
(setq nbn (generate-new-buffer-name nbn)))
|
|
||||||
(make-indirect-buffer bb nbn t))))
|
|
||||||
(setq +workspaces--indirect-buffers-to-restore nil))
|
(setq +workspaces--indirect-buffers-to-restore nil))
|
||||||
(add-hook 'persp-after-load-state-functions #'+workspaces|reload-indirect-buffers))
|
(add-hook 'persp-after-load-state-functions #'+workspaces|reload-indirect-buffers))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue