Function: projectile-forget-projects-under

projectile-forget-projects-under is an autoloaded, interactive and byte-compiled function defined in projectile.el.

Signature

(projectile-forget-projects-under DIRECTORY &optional RECURSIVE)

Documentation

Remove known projects located under DIRECTORY.

Interactively, prompt for DIRECTORY. With optional argument RECURSIVE non-nil (interactively, the prefix argument), remove projects nested at any depth under DIRECTORY; otherwise only remove projects that are immediate children of DIRECTORY.

Matching is lexical (after file-truename expansion for local paths, which is skipped for remote ones to avoid a round-trip), so projects are removed even when DIRECTORY has already been deleted. Mirrors project.el's project-forget-projects-under. Return the number of projects removed.

Key Bindings

Source Code

;; Defined in ~/.emacs.d/elpa/projectile-20260820.1509/projectile.el
;;;###autoload
(defun projectile-forget-projects-under (directory &optional recursive)
  "Remove known projects located under DIRECTORY.

Interactively, prompt for DIRECTORY.  With optional argument
RECURSIVE non-nil (interactively, the prefix argument), remove
projects nested at any depth under DIRECTORY; otherwise only remove
projects that are immediate children of DIRECTORY.

Matching is lexical (after `file-truename' expansion for local paths,
which is skipped for remote ones to avoid a round-trip), so projects
are removed even when DIRECTORY has already been deleted.  Mirrors
project.el's `project-forget-projects-under'.  Return the number of
projects removed."
  (interactive "DForget projects under directory: \nP")
  (let* ((expand (lambda (path)
                   (file-name-as-directory
                    (if (file-remote-p path) path (file-truename path)))))
         (directory (funcall expand directory))
         (projects-removed
          (seq-filter
           (lambda (project)
             (let ((project (funcall expand project)))
               (if recursive
                   (string-prefix-p directory project)
                 (string= (file-name-directory (directory-file-name project))
                          directory))))
           projectile-known-projects)))
    (setq projectile-known-projects
          (seq-difference projectile-known-projects projects-removed))
    (projectile-merge-known-projects)
    (if projects-removed
        (message "Projects removed: %s"
                 (mapconcat #'identity projects-removed ", "))
      (message "No projects found under %s." (abbreviate-file-name directory)))
    (length projects-removed)))