;;; bandali-projectile.el --- bandali's Projectile setup -*- lexical-binding: t; -*- ;; Copyright (C) 2020 Amin Bandali ;; Author: Amin Bandali ;; Keywords: convenience ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; My Projectile setup. ;;; Code: (use-package projectile :disabled :defer 0.5 :bind-keymap ("C-c p" . projectile-command-map) :config (projectile-mode) (defun b/projectile-mode-line-fun () "Report project name and type in the modeline." (let ((project-name (projectile-project-name)) (project-type (projectile-project-type))) (format "%s%s" projectile-mode-line-prefix (if project-type (format ":%s" project-type) "")))) (setq projectile-mode-line-function 'b/projectile-mode-line-fun) (defun my-projectile-invalidate-cache (&rest _args) ;; ignore the args to `magit-checkout' (projectile-invalidate-cache nil)) (eval-after-load 'magit-branch '(progn (advice-add 'magit-checkout :after #'my-projectile-invalidate-cache) (advice-add 'magit-branch-and-checkout :after #'my-projectile-invalidate-cache))) (when (featurep 'which-key) (which-key-add-key-based-replacements "C-c p" "projectile" "C-c p s" "projectile/search" "C-c p x" "projectile/execute" "C-c p 4" "projectile/other-window")) :custom (projectile-completion-system 'ivy) (projectile-mode-line-prefix " proj")) (provide 'bandali-projectile) ;;; bandali-projectile.el ends here