Function: treemacs--restore
treemacs--restore is a byte-compiled function defined in
treemacs-persistence.el.
Signature
(treemacs--restore)
Documentation
Restore treemacs' state from treemacs-persist-file.
Source Code
;; Defined in ~/.emacs.d/elpa/treemacs-20251226.1307/treemacs-persistence.el
(defun treemacs--restore ()
"Restore treemacs' state from `treemacs-persist-file'."
(unless (treemacs--should-not-run-persistence?)
(treemacs-unless-let (lines (treemacs--read-persist-lines))
(setf treemacs--workspaces (list (treemacs-workspace->create! :name "Default"))
(treemacs-current-workspace) (car treemacs--workspaces))
;; Don't persist during restore. Otherwise, if the user would quit
;; Emacs during restore, for example during the completing read for
;; missing project action, the whole persist file would be emptied.
(let ((kill-emacs-hook (remq #'treemacs--persist kill-emacs-hook)))
;; run in a temp buffer since validation and read functions rely on elisp-based syntax tables
;; for their regexes
(with-temp-buffer
(condition-case e
(pcase (treemacs--validate-persist-lines lines)
('success
(let* ((ws-lists (treemacs--read-workspaces (treemacs-iter->create! :list lines))))
(setf treemacs--disabled-workspaces (car ws-lists))
(setf treemacs--workspaces (cadr ws-lists))))
(`(error ,line ,error-msg)
(treemacs--write-error-persist-state lines (format "'%s' in line '%s'" error-msg line))
(treemacs-log-err "Could not restore saved state, %s:\n%s\n%s"
(pcase line
(:start "found error in the first line")
(:end "found error in the last line")
(other (format "found error in line '%s'" other)))
error-msg
(format "Broken state was saved to %s"
(propertize treemacs-last-error-persist-file 'face 'font-lock-string-face)))))
(error
(progn
(treemacs--write-error-persist-state lines e)
(treemacs-log-err "Error '%s' when loading the persisted workspace.\n%s"
e
(format "Broken state was saved to %s"
(propertize treemacs-last-error-persist-file 'face 'font-lock-string-face)))))))))))