;; -*- emacs-lisp -*-
;; List of packages that are maintained externally.
-;; The list is made of elements of the form (NAME KIND URL).
+;; The list is made of elements of the form (NAME KIND URL OPTS...).
;;
;; Where NAME is the name of the package;
;;
;; KIND can be one of:
;; :subtree = a "git subtree" in the `master' branch.
;; :external = kept in a separate `externals/<name>' branch.
+;; :core = part of GNU Emacs repository.
;;
-;; And URL is the URL of the remote git repository that we want to track.
-;; It can be nil, in which case we don't track anything (useless for
-;; :subtree, but not for :external).
+
+;; For KIND :external URL is the URL of the remote git repository that we want
+;; to track, while in the case of :subtree URL is useless. For packages of KIND
+;; :core URL must be a list of:
+;; STRING = A file-name to copy from Emacs repo.
+;; (STRING STRING) = A file-name to copy renamed from Emacs repo.
+
+;; For packages consisting of a single file, a plain string is also allowed.
+;; All file-names must be relative to the Emacs repository root and the package
+;; directory. When a file-name points to a directory all its files are copied
+;; recursively into the package root or specified destination. A special
+;; :excludes key can be provided to especify files to exclude when copying
+;; directories, wildcards are supported, "*.elc" and "*~" are always excluded.
+;; Exclude matches must be against the full file-name, substring matches don't
+;; work unless wildcards are used (e.g. use "etc/*" instead of "etc/").
;; The FIXMEs indicate that the branch can't be merged as is because it needs
;; some manual intervention (typically, because the two branches have