aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBozhidar Batsov <bozhidar@batsov.dev>2026-02-28 10:11:57 +0200
committerBozhidar Batsov <bozhidar@batsov.dev>2026-02-28 10:22:31 +0200
commitd52c8bcbdea20bfaaadd7e81f3b0041741047278 (patch)
tree4dbca7df62f4dec5716abd01dc854c6bb6a3690f
parent62b74483810a21c07866e97d4b385bbd5b422465 (diff)
Avoid redundant projectile-project-root call in detect-project-type
projectile-project-type already resolves the project root. Pass it through to projectile-detect-project-type so it doesn't resolve it a second time just for the cache key.
-rw-r--r--projectile.el10
1 files changed, 6 insertions, 4 deletions
diff --git a/projectile.el b/projectile.el
index 18b9fc7..5a8e2ba 100644
--- a/projectile.el
+++ b/projectile.el
@@ -3829,10 +3829,11 @@ a manual COMMAND-TYPE command is created with
Normally you'd set this from .dir-locals.el.")
(put 'projectile-project-type 'safe-local-variable #'symbolp)
-(defun projectile-detect-project-type (&optional dir)
+(defun projectile-detect-project-type (&optional dir project-root)
"Detect the type of the project.
When DIR is specified it detects its project type, otherwise it acts
-on the current project.
+on the current project. PROJECT-ROOT, if provided, is used for caching
+instead of re-resolving via `projectile-project-root'.
Fallback to a generic project type when the type can't be determined."
(let ((project-type
@@ -3845,7 +3846,8 @@ Fallback to a generic project type when the type can't be determined."
(and (projectile-verify-files marker dir) project-type))))
projectile-project-types))
'generic)))
- (puthash (projectile-project-root dir) project-type projectile-project-type-cache)
+ (puthash (or project-root (projectile-project-root dir))
+ project-type projectile-project-type-cache)
project-type))
(defun projectile-project-type (&optional dir)
@@ -3857,7 +3859,7 @@ The project type is cached for improved performance."
(or (and (not dir) projectile-project-type)
(if-let* ((project-root (projectile-project-root dir)))
(or (gethash project-root projectile-project-type-cache)
- (projectile-detect-project-type dir)))))
+ (projectile-detect-project-type dir project-root)))))
;;;###autoload
(defun projectile-project-info ()