branch: elpa/projectile
commit d52c8bcbdea20bfaaadd7e81f3b0041741047278
Author: Bozhidar Batsov <[email protected]>
Commit: Bozhidar Batsov <[email protected]>

    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.
---
 projectile.el | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/projectile.el b/projectile.el
index 18b9fc7a05..5a8e2bad0c 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 ()

Reply via email to