Function: projectile-mode
projectile-mode is an autoloaded, interactive and byte-compiled
function defined in projectile.el.
Signature
(projectile-mode &optional ARG)
Documentation
Minor mode to assist project management and navigation.
When called interactively, toggle projectile-mode(var)/projectile-mode(fun). With prefix
ARG, enable projectile-mode(var)/projectile-mode(fun) if ARG is positive, otherwise disable
it.
When called from Lisp, enable projectile-mode(var)/projectile-mode(fun) if ARG is omitted,
nil or positive. If ARG is toggle, toggle projectile-mode(var)/projectile-mode(fun).
Otherwise behave as if called interactively.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
;;;###autoload
(define-minor-mode projectile-mode
"Minor mode to assist project management and navigation.
When called interactively, toggle `projectile-mode'. With prefix
ARG, enable `projectile-mode' if ARG is positive, otherwise disable
it.
When called from Lisp, enable `projectile-mode' if ARG is omitted,
nil or positive. If ARG is `toggle', toggle `projectile-mode'.
Otherwise behave as if called interactively.
\\{projectile-mode-map}"
:lighter projectile--mode-line
:keymap projectile-mode-map
:group 'projectile
:require 'projectile
:global t
(cond
(projectile-mode
(add-hook 'project-find-functions #'project-projectile)
(add-hook 'find-file-hook 'projectile-find-file-hook-function)
(add-hook 'projectile-find-dir-hook #'projectile-track-known-projects-find-file-hook t)
(add-hook 'dired-before-readin-hook #'projectile-track-known-projects-find-file-hook t)
(add-hook 'dired-before-readin-hook #'projectile--maybe-run-project-changed-functions t)
(add-hook 'kill-emacs-hook #'projectile--frecency-save)
(when projectile-dynamic-mode-line
(add-hook 'window-configuration-change-hook #'projectile-update-mode-line-on-window-change))
(add-hook 'kill-emacs-hook #'projectile--teardown-all-watches)
;; Disabling the mode tears the watches down, so re-enabling it has to
;; re-arm them - a warm cache would otherwise never trigger a cache fill.
(projectile--watch-all-cached-projects)
(advice-add 'compilation-find-file :around #'compilation-find-file-projectile-find-compilation-buffer)
(advice-add 'delete-file :before #'delete-file-projectile-remove-from-cache))
(t
(remove-hook 'project-find-functions #'project-projectile)
(remove-hook 'find-file-hook #'projectile-find-file-hook-function)
(remove-hook 'projectile-find-dir-hook #'projectile-track-known-projects-find-file-hook)
(remove-hook 'dired-before-readin-hook #'projectile-track-known-projects-find-file-hook)
(remove-hook 'dired-before-readin-hook #'projectile--maybe-run-project-changed-functions)
(projectile--frecency-save)
(remove-hook 'kill-emacs-hook #'projectile--frecency-save)
(remove-hook 'window-configuration-change-hook #'projectile-update-mode-line-on-window-change)
(remove-hook 'kill-emacs-hook #'projectile--teardown-all-watches)
(projectile--teardown-all-watches)
;; Forget the last-seen project so re-enabling the mode fires
;; `projectile-project-changed-functions' on the first re-entry.
(setq projectile--current-project nil)
(advice-remove 'compilation-find-file #'compilation-find-file-projectile-find-compilation-buffer)
(advice-remove 'delete-file #'delete-file-projectile-remove-from-cache))))