emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/package.el-reload-files-on-upgrade 300dbb1 1/6: *


From: Artur Malabarba
Subject: [Emacs-diffs] scratch/package.el-reload-files-on-upgrade 300dbb1 1/6: * emacs-lisp/package.el (package--list-loaded-files): New function
Date: Sat, 13 Dec 2014 02:47:43 +0000

branch: scratch/package.el-reload-files-on-upgrade
commit 300dbb1e183afd63721ee4e83e105e494b83d8d7
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    * emacs-lisp/package.el (package--list-loaded-files): New function
    
    New function to list files in a given directory which correspond to
    already loaded files.
---
 lisp/ChangeLog             |    6 ++++++
 lisp/emacs-lisp/package.el |   36 +++++++++++++++++++++++-------------
 2 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 454ee00..6c54dd5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-10  Artur Malabarba  <address@hidden>
+
+       * emacs-lisp/package.el (package--list-loaded-files): New function
+       to list files in a given directory which correspond to already
+       loaded files.
+
 2014-12-10  Andreas Schwab  <address@hidden>
 
        * files.el (file-tree-walk): Use file-name-as-directory
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 4e5c397..9caa5a2 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -543,19 +543,29 @@ Return the max version (as a string) if the package is 
held at a lower version."
     ;; Don't return nil.
     t))
 
-(defun package-built-in-p (package &optional min-version)
-  "Return true if PACKAGE is built-in to Emacs.
-Optional arg MIN-VERSION, if non-nil, should be a version list
-specifying the minimum acceptable version."
-  (if (package-desc-p package) ;; was built-in and then was converted
-      (eq 'builtin (package-desc-dir package))
-    (let ((bi (assq package package--builtin-versions)))
-      (cond
-       (bi (version-list-<= min-version (cdr bi)))
-       ((remove 0 min-version) nil)
-       (t
-        (require 'finder-inf nil t) ; For `package--builtins'.
-        (assq package package--builtins))))))
+(defun package-list-loaded-files (dir)
+  "List all files in DIR which correspond to loaded features.
+Returns the `file-name-base' of each file, sorted by most recently
+loaded last."
+  (let* ((history (mapcar (lambda (x) (file-name-sans-extension
+                                 (file-truename (car x))))
+                         load-history))
+        ;; List all files that have already been loaded.
+        (list-of-conflicts
+         (remove
+          nil
+          (mapcar (lambda (x) (let* ((path (file-name-sans-extension
+                                       (file-truename
+                                        (find-library-name (file-name-base 
x)))))
+                                (pos (when path (member path history))))
+                           ;; Return (FILENAME . HISTORY-POSITION)
+                           (when pos (cons path (length pos)))))
+           (directory-files "./" nil "^[^\\.].*\\.el\\'" 'nosort)))))
+    ;; Turn the list of (FILENAME . POS) back into a list of features.
+    (mapcar (lambda (x) (file-name-base (car x)))
+     (sort list-of-conflicts
+          ;; Sort the files by ascending HISORY-POSITION.
+          (lambda (x y) (< (cdr x) (cdr y)))))))
 
 (defun package--from-builtin (bi-desc)
   (package-desc-create :name (pop bi-desc)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]