diff --git a/modules/completion/ivy/config.el b/modules/completion/ivy/config.el index 1c2dee592..8eaaa1984 100644 --- a/modules/completion/ivy/config.el +++ b/modules/completion/ivy/config.el @@ -114,13 +114,14 @@ immediately runs it on the current candidate (ending the ivy session)." (def-package! counsel-projectile :commands (counsel-projectile-find-file counsel-projectile-find-dir counsel-projectile-switch-to-buffer - counsel-projectile-grep counsel-projectile-ag) + counsel-projectile-grep counsel-projectile-ag counsel-projectile-switch-project) :init (map! [remap projectile-find-file] #'counsel-projectile-find-file [remap projectile-find-dir] #'counsel-projectile-find-dir [remap projectile-switch-to-buffer] #'counsel-projectile-switch-to-buffer [remap projectile-grep] #'counsel-projectile-grep - [remap projectile-ag] #'counsel-projectile-ag) + [remap projectile-ag] #'counsel-projectile-ag + [remap projectile-switch-project] #'counsel-projectile-switch-project) :config ;; Highlight entries that have been visited (ivy-set-display-transformer #'counsel-projectile-find-file #'+ivy-projectile-find-file-transformer)) diff --git a/modules/feature/workspaces/autoload/workspaces.el b/modules/feature/workspaces/autoload/workspaces.el index 8a6050e05..e601bf711 100644 --- a/modules/feature/workspaces/autoload/workspaces.el +++ b/modules/feature/workspaces/autoload/workspaces.el @@ -479,6 +479,19 @@ created." `+workspaces|switch-to-project'." (setq +workspaces--project-dir default-directory)) +;;;###autoload +(defun +workspaces|switch-counsel-project-action (project) + "A `counsel-projectile-switch-project-action' that creates a dedicated +workspace for a new project, before prompting to open a file." + (when persp-mode + (let ((+workspaces--project-dir project) + (inhibit-message t)) + (+workspaces|switch-to-project))) + (counsel-projectile-switch-project-action project) + (+workspace-message + (format "Switched to '%s' in new workspace" new-name) + 'success)) + ;;;###autoload (defun +workspaces|switch-to-project () "Creates a workspace dedicated to a new project. Should be hooked to @@ -491,6 +504,9 @@ created." (new-name (persp-name persp))) (+workspace-switch new-name) (switch-to-buffer (doom-fallback-buffer)) + (call-interactively + (or (command-remapping #'projectile-find-file) + #'projectile-find-file)) (+workspace-message (format "Switched to '%s' in new workspace" new-name) 'success)) diff --git a/modules/feature/workspaces/config.el b/modules/feature/workspaces/config.el index 3ccf63525..312632c4c 100644 --- a/modules/feature/workspaces/config.el +++ b/modules/feature/workspaces/config.el @@ -81,7 +81,8 @@ renamed.") (add-hook 'delete-frame-functions #'+workspaces|delete-associated-workspace) ;; per-project workspaces - (setq projectile-switch-project-action #'+workspaces|set-project-action) + (setq projectile-switch-project-action #'+workspaces|set-project-action + counsel-projectile-switch-project-action #'+workspaces|switch-counsel-project-action) (add-hook 'projectile-after-switch-project-hook #'+workspaces|switch-to-project) ;;