From b6eec664bbbde795bfabb5621e5a2c766fc2b6b2 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 30 Dec 2017 01:18:41 -0500 Subject: [PATCH] Fix new workspace when switching projects #314 --- modules/completion/ivy/config.el | 1 - modules/feature/workspaces/config.el | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index bca99444e..fa707c5ea 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -51,7 +51,6 @@ immediately runs it on the current candidate (ending the ivy session)." [remap recentf-open-files] #'counsel-recentf [remap imenu] #'counsel-imenu [remap bookmark-jump] #'counsel-bookmark - [remap projectile-switch-project] #'counsel-projectile-switch-project [remap projectile-find-file] #'counsel-projectile-find-file [remap imenu-anywhere] #'ivy-imenu-anywhere [remap execute-extended-command] #'counsel-M-x diff --git a/modules/feature/workspaces/config.el b/modules/feature/workspaces/config.el index bd71d9a45..f03fb236f 100644 --- a/modules/feature/workspaces/config.el +++ b/modules/feature/workspaces/config.el @@ -47,10 +47,22 @@ renamed.") ;; per-frame and per-project workspaces (setq persp-init-new-frame-behaviour-override nil - persp-interactive-init-frame-behaviour-override #'+workspace-on-new-frame - projectile-switch-project-action #'projectile-find-file) + persp-interactive-init-frame-behaviour-override #'+workspace-on-new-frame) (add-hook 'delete-frame-functions #'+workspaces|delete-associated-workspace-maybe) - (advice-add #'projectile-switch-project-by-name :around #'+workspaces*switch-project-by-name) + + (defun +workspaces|per-project (&optional root) + "Open a new workspace when switching to another project. + +Ensures the scratch (or dashboard) buffers are CDed into the project's root." + (when persp-mode + (let ((cwd default-directory)) + (+workspace-switch (projectile-project-name) t) + (switch-to-buffer (doom-fallback-buffer)) + (setq default-directory cwd) + (+workspace-message + (format "Switched to '%s' in new workspace" (+workspace-current-name)) + 'success)))) + (setq projectile-switch-project-action #'+workspaces|per-project) ;; only auto-save when real buffers are present (advice-add #'persp-asave-on-exit :around #'+workspaces*autosave-real-buffers)