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)))