Function: projectile-merge-known-projects
projectile-merge-known-projects is a byte-compiled function defined in
projectile.el.
Signature
(projectile-merge-known-projects)
Documentation
Merge any change from projectile-known-projects-file and save to disk.
This enables multiple Emacs processes to make changes without overwriting each other's changes.
Source Code
;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
(defun projectile-merge-known-projects ()
"Merge any change from `projectile-known-projects-file' and save to disk.
This enables multiple Emacs processes to make changes without
overwriting each other's changes."
(let* ((known-now projectile-known-projects)
(known-on-file-raw (projectile--read-known-projects-file))
(unreadable (eq known-on-file-raw 'unreadable))
(known-on-last-sync projectile-known-projects-on-file)
(known-on-file (if unreadable nil known-on-file-raw))
(removed-after-sync (seq-difference known-on-last-sync known-now))
;; An unreadable file says nothing about what another process
;; removed. Reading it as "nothing is on disk" is precisely how a
;; corrupt file used to look like every project having been removed
;; elsewhere, taking the session's list down with it (issue #1927).
(removed-in-other-process
(unless unreadable
(seq-difference known-on-last-sync known-on-file)))
(result (seq-uniq
(seq-difference
(append known-now known-on-file)
(append removed-after-sync removed-in-other-process)))))
(when unreadable
(projectile--quarantine-known-projects-file))
(setq projectile-known-projects result)
(projectile-save-known-projects)))