]> git.eshelyaron.com Git - emacs.git/commitdiff
emacs-lisp/package.el (describe-package-1): Describe incompatibility.
authorArtur Malabarba <bruce.connor.am@gmail.com>
Sat, 14 Feb 2015 17:06:27 +0000 (15:06 -0200)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Sat, 14 Feb 2015 17:09:50 +0000 (15:09 -0200)
lisp/ChangeLog
lisp/emacs-lisp/package.el

index 42b386f3f221ced8c09261a0f17af764c2ee9b90..3cc42a5964bf2309d71ce73532dae348276a95f6 100644 (file)
@@ -5,6 +5,7 @@
        (package-refresh-contents, package-initialize): Do build the
        compatibility table.
        (package--build-compatibility-table): New function.
+       (describe-package-1): Describe why a package is incompatible.
 
 2015-02-14  Stefan Monnier  <monnier@iro.umontreal.ca>
 
index 64a646a98966bfc40e0b3ee291ed2955dad9795b..d8a4fc9c84681d35ef87c5f80e9de0eaf8bc71dc 100644 (file)
@@ -1817,8 +1817,9 @@ the table."
          (built-in (eq pkg-dir 'builtin))
          (installable (and archive (not built-in)))
          (status (if desc (package-desc-status desc) "orphan"))
+         (incompatible-reason (package--incompatible-p desc))
          (signed (if desc (package-desc-signed desc))))
-    (when (string= status "incompat")
+    (when incompatible-reason
       (setq status "incompatible"))
     (prin1 name)
     (princ " is ")
@@ -1850,6 +1851,12 @@ the table."
            (if signed
                (insert ".")
              (insert " (unsigned).")))
+          (incompatible-reason
+           (insert (propertize "Incompatible" 'face font-lock-warning-face)
+                   " because it depends on ")
+           (if (stringp incompatible-reason)
+               (insert "Emacs " incompatible-reason ".")
+             (insert "uninstallable packages.")))
           (installable
            (insert (capitalize status))
            (insert " from " (format "%s" archive))
@@ -1870,19 +1877,22 @@ the table."
     (setq reqs (if desc (package-desc-reqs desc)))
     (when reqs
       (insert "   " (propertize "Requires" 'font-lock-face 'bold) ": ")
-      (let ((first t)
-            name vers text)
+      (let ((first t))
         (dolist (req reqs)
-          (setq name (car req)
-                vers (cadr req)
-                text (format "%s-%s" (symbol-name name)
-                             (package-version-join vers)))
-          (cond (first (setq first nil))
-                ((>= (+ 2 (current-column) (length text))
-                     (window-width))
-                 (insert ",\n               "))
-                (t (insert ", ")))
-          (help-insert-xref-button text 'help-package name))
+          (let* ((name (car req))
+                 (vers (cadr req))
+                 (text (format "%s-%s" (symbol-name name)
+                               (package-version-join vers)))
+                 (reason (if (and (listp incompatible-reason)
+                                  (assq name incompatible-reason))
+                             " (not available)" "")))
+            (cond (first (setq first nil))
+                  ((>= (+ 2 (current-column) (length text) (length reason))
+                       (window-width))
+                   (insert ",\n               "))
+                  (t (insert ", ")))
+            (help-insert-xref-button text 'help-package name)
+            (insert reason)))
         (insert "\n")))
     (insert "    " (propertize "Summary" 'font-lock-face 'bold)
             ": " (if desc (package-desc-summary desc)) "\n")