;;; ui/treemacs/autoload.el -*- lexical-binding: t; -*- (defun +treemacs--init () (require 'treemacs) (let ((origin-buffer (current-buffer))) (cl-letf (((symbol-function 'treemacs-workspace->is-empty?) (symbol-function 'ignore))) (treemacs--init)) (dolist (project (treemacs-workspace->projects (treemacs-current-workspace))) (treemacs-do-remove-project-from-workspace project)) (with-current-buffer origin-buffer (treemacs-do-add-project-to-workspace (treemacs--canonical-path (doom-project-root 'nocache)) (doom-project-name 'nocache)) (setq treemacs--ready-to-follow t) (when (or treemacs-follow-after-init treemacs-follow-mode) (treemacs--follow))))) ;;;###autoload (defun +treemacs/toggle () "Initialize or toggle treemacs. Ensures that only the current project is present and all other projects have been removed. Use `treemacs' command for old functionality." (interactive) (require 'treemacs) (pcase (treemacs-current-visibility) (`visible (delete-window (treemacs-get-local-window))) (_ (+treemacs--init)))) ;;;###autoload (defun +treemacs/find-file (arg) "Open treemacs (if necessary) and find current file." (interactive "P") (let ((origin-buffer (current-buffer))) (+treemacs--init) (with-current-buffer origin-buffer (treemacs-find-file arg))))