Function: projectile--related-file-ring
projectile--related-file-ring is a byte-compiled function defined in
projectile.el.
Signature
(projectile--related-file-ring REL-PATH &optional FILE-KINDS PROJECT-FILES)
Documentation
Return the stable ring of files sharing REL-PATH's resource key.
The ring holds one file per kind that has a match, in FILE-KINDS table
order, with REL-PATH itself standing in for its own kind. Its order does
not depend on which file in the ring REL-PATH is, so advancing from
REL-PATH's position cycles through the related kinds deterministically.
FILE-KINDS defaults to the current project type's kinds and PROJECT-FILES
to projectile-current-project-files. Return nil when REL-PATH is not of
any known kind.
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile--related-file-ring (rel-path &optional file-kinds project-files)
"Return the stable ring of files sharing REL-PATH's resource key.
The ring holds one file per kind that has a match, in FILE-KINDS table
order, with REL-PATH itself standing in for its own kind. Its order does
not depend on which file in the ring REL-PATH is, so advancing from
REL-PATH's position cycles through the related kinds deterministically.
FILE-KINDS defaults to the current project type's kinds and PROJECT-FILES
to `projectile-current-project-files'. Return nil when REL-PATH is not of
any known kind."
(let* ((file-kinds (or file-kinds (projectile--file-kinds)))
(project-files (or project-files (projectile-current-project-files)))
this-kind this-key ring)
(cl-dolist (entry file-kinds)
(when-let* ((key (projectile--file-kind-match rel-path (cdr entry))))
(setq this-kind (car entry)
this-key key)
(cl-return)))
(when this-kind
(dolist (entry file-kinds (nreverse ring))
(let ((kind (car entry))
(spec (cdr entry)))
(if (eq kind this-kind)
(push rel-path ring)
(when-let* ((match (seq-find
(lambda (f)
(and (not (equal f rel-path))
(equal this-key
(projectile--file-kind-match f spec))))
project-files)))
(push match ring))))))))