Function: denote--get-common-root-directory

denote--get-common-root-directory is a byte-compiled function defined in denote.el.

Signature

(denote--get-common-root-directory DIRECTORIES)

Documentation

Return common root directory among DIRECTORIES.

DIRECTORIES are absolute file system paths.

Source Code

;; Defined in ~/.emacs.d/elpa/denote-4.2.3/denote.el
(defun denote--get-common-root-directory (directories)
  "Return common root directory among DIRECTORIES.
DIRECTORIES are absolute file system paths."
  (cond
   ((or (null directories)
        (not (seq-every-p
              (lambda (d)
                (and (file-name-absolute-p d)
                     (not (string-prefix-p "~" d))))
              directories)))
    (error "DIRECTORIES must be a list of absolute filesystem paths, not `%S'" directories))
   ((null (cdr directories))
    (car directories))
   ((let* ((parts (mapcar
                   (lambda (dir)
                     (split-string dir "/" :omit-nulls))
                   directories))
           (common-prefix (car parts)))
      (dolist (part (cdr parts))
        (let ((new-common-prefix nil))
          (while (and common-prefix
                      part
                      (string= (car common-prefix) (car part)))
            (push (car common-prefix) new-common-prefix)
            (setq common-prefix (cdr common-prefix))
            (setq part (cdr part)))
          (setq common-prefix (nreverse new-common-prefix))))
      (if common-prefix
          (format "/%s/" (mapconcat #'identity common-prefix "/"))
        "/")))))