Function: projectile-session-default-tab-name
projectile-session-default-tab-name is a byte-compiled function
defined in projectile.el.
Signature
(projectile-session-default-tab-name ROOT)
Documentation
Return the tab name for the project rooted at ROOT.
Use the project's name, prepending as many parent-directory components as it takes to stay distinct from every other open project tab that shares the name, so same-named checkouts (even ones whose immediate parent also matches) remain distinguishable.
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile-session-default-tab-name (root)
"Return the tab name for the project rooted at ROOT.
Use the project's name, prepending as many parent-directory components as
it takes to stay distinct from every other open project tab that shares
the name, so same-named checkouts (even ones whose immediate parent also
matches) remain distinguishable."
(let* ((name (projectile-session--project-name root))
;; roots of the other open project tabs that share this name;
;; `delq'/`mapcar' rather than `seq-keep', which is Emacs 29.1+
(clashers (delq nil
(mapcar
(lambda (tab)
(let ((other (projectile-session--tab-root tab)))
(and (not (projectile-session--same-root-p other root))
(equal (projectile-session--project-name other) name)
other)))
(projectile-session--project-tabs)))))
(if (null clashers)
name
(let ((max-depth (length (projectile-session--parent-components root)))
(depth 1))
(while (and (< depth max-depth)
(let ((candidate (projectile-session--name-with-parents
root name depth)))
(seq-some
(lambda (other)
(equal candidate (projectile-session--name-with-parents
other name depth)))
clashers)))
(setq depth (1+ depth)))
(projectile-session--name-with-parents root name depth)))))