anchor.diff:  
   (defun find-project-directory (name &key exit)
     "Return the directory pathname of the project named NAME.
  -If EXIT is true and the project was not found, don't parse the projects roots again."
  +If EXIT is non-nil and the project was not found, don't parse the project roots again."
     (unless *git-projects*
       (setf *git-projects* (parse-projects)))
     (let ((result (find name *git-projects*
  
positive.code: *Disclaimer*: this feature is meant to grow with Next 1.4 and onwards!
  ***********************************************************************
  
  We could clone on Github/Gitlab, be notified if we have unpushed changes, browse files in a text editor, use hooks...
  "))
  
  (in-package :next/vcs)
  
  (defparameter *vcs-projects-roots* '("~/projects" "~/src" "~/work" "~/common-lisp" "~/quicklisp/local-projects")
    "A list of directories to look for VCS repositories to.")
  ;; Possible improvement: specify the depth to look for projects alongside the directory.
  ;; See magit-list-repositories.
  
  
negative.code:       (setf result (find-project-directory name :exit t)))
      result))
  
  ;XXX: add ftype declaration.
  (defun ensure-directory (base)
    "Create this directory if it doesn't exist.
  Needed to call `truename' to exand a tilde after it.
  BASE: directory name (string)."
    ;; ensure a trailing slash.
    (setf base
          (str:concat (string-right-trim (list #\/) base)
                      "/"))
    (ensure-directories-exist base))
  
  (defun concat-filenames (base dir)
    "Concat filenames. Expand a tilde in BASE.
  Create BASE if it doesn't exist."
    (ensure-directory base)
    ;; truename expands the tilde, but fails if the directory doesn't actually exist.
    ;; The tilde must be expanded for the following git clone command, that otherwise creates
    ;; ./~/my/foo instead of /home/user/my/foo.
  