Function: activities--bufferize-window-state
activities--bufferize-window-state is a byte-compiled function defined
in activities.el.
Signature
(activities--bufferize-window-state STATE)
Documentation
Return window state STATE with its buffers reincarnated.
Source Code
;; Defined in ~/.emacs.d/elpa/activities-0.7.2/activities.el
(defun activities--bufferize-window-state (state)
"Return window state STATE with its buffers reincarnated."
(cl-labels ((bufferize-state (state)
"Set windows' buffers in STATE."
(pcase state
(`(leaf . ,_attrs) (translate-leaf (bufferize-leaf state)))
((pred atom) state)
(`(,_key . ,(pred atom)) state)
((pred list) (mapcar #'bufferize-state state))))
(bufferize-leaf (leaf)
"Recreate buffers in LEAF."
(pcase-let* ((`(leaf . ,attrs) leaf)
((map parameters buffer) attrs)
((map activities-buffer) parameters)
(`(,_buffer-name . ,buffer-attrs) buffer)
(new-buffer (activities--deserialize activities-buffer)))
(setf (map-elt attrs 'buffer) (cons new-buffer buffer-attrs))
(cons 'leaf attrs)))
(translate-leaf (leaf)
"Translate window parameters in LEAF."
(pcase-let* ((`(leaf . ,attrs) leaf)
((map parameters) attrs))
(pcase-dolist (`(,parameter . ,(map deserialize))
activities-window-parameters-translators)
(condition-case-unless-debug nil
(when (map-elt parameters parameter)
(setf (map-elt parameters parameter)
(funcall deserialize (map-elt parameters parameter))))
(error (setf parameters (map-delete parameters parameter)))))
(setf (map-elt attrs 'parameters) parameters)
(cons 'leaf attrs))))
(if-let ((leaf-pos (cl-position 'leaf state)))
;; A one-window frame: the elements following `leaf' are that window's params.
(append (cl-subseq state 0 leaf-pos)
(translate-leaf (bufferize-leaf (cl-subseq state leaf-pos))))
;; Multi-window frame.
(bufferize-state state))))