emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 2fe6110 2/6: * emacs-lisp/package.el (package-dir-i


From: Artur Malabarba
Subject: [Emacs-diffs] master 2fe6110 2/6: * emacs-lisp/package.el (package-dir-info): New function.
Date: Sat, 17 Jan 2015 00:26:42 +0000

branch: master
commit 2fe6110d710b71b90f90c84bfa8eaf6b129eb0a6
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    * emacs-lisp/package.el (package-dir-info): New function.
    
    Find package information for a directory. The return result is a
    `package-desc'.
---
 lisp/ChangeLog             |    2 ++
 lisp/emacs-lisp/package.el |   18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 93796e6..dce08a4 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -3,6 +3,8 @@
        * emacs-lisp/package.el (package--read-pkg-desc): New
        function. Read a `define-package' form in current buffer. Return
        the pkg-desc, with desc-kind set to KIND.
+       (package-dir-info): New function. Find package information for a
+       directory. The return result is a `package-desc'.
 
 2015-01-16  Jorgen Schaefer  <address@hidden>
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index d590667..77b15c1 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1281,6 +1281,24 @@ The return result is a `package-desc'."
           (package--read-pkg-desc 'tar)
         (kill-buffer (current-buffer))))))
 
+(defun package-dir-info ()
+  "Find package information for a directory.
+The return result is a `package-desc'."
+  (cl-assert (derived-mode-p 'dired-mode))
+  (let* ((desc-file (package--description-file default-directory)))
+    (if (file-readable-p desc-file)
+        (with-temp-buffer
+          (insert-file-contents desc-file)
+          (package--read-pkg-desc 'dir))
+      (let ((files (directory-files default-directory t "\\.el\\'" t))
+            info)
+        (while files
+          (with-temp-buffer
+            (insert-file-contents (pop files))
+            (if (setq info (ignore-errors (package-buffer-info)))
+                (setq files nil)
+              (setf (package-desc-kind info) 'dir))))))))
+
 (defun package--read-pkg-desc (kind)
   "Read a `define-package' form in current buffer.
 Return the pkg-desc, with desc-kind set to KIND."



reply via email to

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