From c3bc47ab472e057a8917f3777739a00792979e61 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Mon, 2 Dec 2024 15:05:36 +0000 Subject: [PATCH] feat(projects): add projectile switch project keybind that creates new tab-bar tab if needed --- modules/projects/siren-projectile.el | 21 +++++++++++++++++++++ modules/workspaces/siren-tab-bar.el | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/modules/projects/siren-projectile.el b/modules/projects/siren-projectile.el index 18a5f5a..71bc9bc 100644 --- a/modules/projects/siren-projectile.el +++ b/modules/projects/siren-projectile.el @@ -6,9 +6,12 @@ ;;; Code: +(require 'siren-tab-bar) + (use-package projectile :commands projectile-project-root + projectile-relevant-known-projects :general ("C-c p p" 'projectile-switch-project) @@ -22,6 +25,8 @@ ("C-x j" 'projectile-dired) ("C-x ;" 'projectile-find-file) ("C-x C-;" 'projectile-find-file) + ("C-z ;" 'siren-projectile-switch-project-and-tab) + ("C-z C-;" 'siren-projectile-switch-project-and-tab) (:keymaps 'projectile-mode-map "C-c p" 'projectile-command-map) @@ -74,6 +79,22 @@ behavior." (apply orig-fun args) (projectile-switch-project))) + (defun siren-projectile-switch-project-and-tab (&optional arg) + "Switch to a project we have visited before and create a new tab for it. +Behaves the same as `projectile-switch-project', but creates a new tab for the +project, based on the project name reported by projectile." + (interactive "P") + (let ((projects (projectile-relevant-known-projects))) + (if projects + (projectile-completing-read + "Switch to project: " projects + :action (lambda (project) + (siren-tab-bar-switch-to-or-create-tab + (projectile-project-name project)) + (projectile-switch-project-by-name project arg))) + (user-error "There are no known projects")))) + + :config (push "Gemfile" projectile-project-root-files-bottom-up) (advice-add 'projectile-find-file :around #'siren-projectile-find-file-advice) diff --git a/modules/workspaces/siren-tab-bar.el b/modules/workspaces/siren-tab-bar.el index 4f30075..e314a7e 100644 --- a/modules/workspaces/siren-tab-bar.el +++ b/modules/workspaces/siren-tab-bar.el @@ -42,8 +42,8 @@ "C-e" 'tab-group "u" 'tab-undo "C-u" 'tab-undo - ";" 'siren-tab-bar-echo-tab-list - "C-;" 'siren-tab-bar-echo-tab-list + "'" 'siren-tab-bar-echo-tab-list + "C-'" 'siren-tab-bar-echo-tab-list "0" 'siren-tab-bar-switch-to-index "1" 'siren-tab-bar-switch-to-index "2" 'siren-tab-bar-switch-to-index