ui/workspaces: refactor restoration of indirect buffers

This commit is contained in:
Henrik Lissner 2019-07-08 21:21:02 +02:00
parent e645185907
commit c5cd29ef74
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -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))