summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--emacs/guix-main.scm23
-rw-r--r--emacs/guix-messages.el21
-rw-r--r--emacs/guix-ui-generation.el13
3 files changed, 30 insertions, 27 deletions
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 5460c9686e..dfa9cba8e4 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -137,10 +137,9 @@ return two values: name and version.  For example, for SPEC
 (define (manifest-entries->package-specifications entries)
   (map manifest-entry->package-specification entries))
 
-(define (generation-package-specifications profile number)
-  "Return a list of package specifications for generation NUMBER."
-  (let ((manifest (profile-manifest
-                   (generation-file-name profile number))))
+(define (profile-package-specifications profile)
+  "Return a list of package specifications for PROFILE."
+  (let ((manifest (profile-manifest profile)))
     (manifest-entries->package-specifications
      (manifest-entries manifest))))
 
@@ -153,11 +152,11 @@ Each element of the list is a list of the package specification and its path."
                  (manifest-entry-item entry)))
          (manifest-entries manifest))))
 
-(define (generation-difference profile number1 number2)
-  "Return a list of package specifications for outputs installed in generation
-NUMBER1 and not installed in generation NUMBER2."
-  (let ((specs1 (generation-package-specifications profile number1))
-        (specs2 (generation-package-specifications profile number2)))
+(define (profile-difference profile1 profile2)
+  "Return a list of package specifications for outputs installed in PROFILE1
+and not installed in PROFILE2."
+  (let ((specs1 (profile-package-specifications profile1))
+        (specs2 (profile-package-specifications profile2)))
     (lset-difference string=? specs1 specs2)))
 
 (define (manifest-entries->hash-table entries)
@@ -698,11 +697,11 @@ See 'entry-sexps' for details."
                       profile))
          (manifest (profile-manifest profile))
          (patterns (if (and (eq? entry-type 'output)
-                            (eq? search-type 'generation-diff))
+                            (eq? search-type 'profile-diff))
                        (match search-vals
-                         ((g1 g2)
+                         ((p1 p2)
                           (map specification->output-pattern
-                               (generation-difference profile g1 g2)))
+                               (profile-difference p1 p2)))
                          (_ '()))
                        (apply (patterns-maker entry-type search-type)
                               manifest search-vals)))
diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el
index eb2a76e216..234d3d11da 100644
--- a/emacs/guix-messages.el
+++ b/emacs/guix-messages.el
@@ -98,7 +98,7 @@
          val profile)
       (many "%d package outputs installed in generation %d of profile '%s'."
             count val profile))
-     (generation-diff
+     (profile-diff
       guix-message-outputs-by-diff))
 
     (generation
@@ -183,19 +183,18 @@ Try \"M-x guix-search-by-name\"."
                      "matching time period '%s' - '%s'.")
              str-beg profile time-beg time-end)))
 
-(defun guix-message-outputs-by-diff (profile entries generations)
-  "Display a message for outputs searched by GENERATIONS difference."
+(defun guix-message-outputs-by-diff (_ entries profiles)
+  "Display a message for outputs searched by PROFILES difference."
   (let* ((count (length entries))
          (str-beg (guix-message-string-entries count 'output))
-         (gen1 (car  generations))
-         (gen2 (cadr generations)))
+         (profile1 (car  profiles))
+         (profile2 (cadr profiles)))
     (cl-multiple-value-bind (new old str-action)
-        (if (> gen1 gen2)
-            (list gen1 gen2 "added to")
-          (list gen2 gen1 "removed from"))
-      (message (concat "%s %s generation %d comparing with "
-                       "generation %d of profile '%s'.")
-               str-beg str-action new old profile))))
+        (if (string-lessp profile2 profile1)
+            (list profile1 profile2 "added to")
+          (list profile2 profile1 "removed from"))
+      (message "%s %s profile '%s' comparing with profile '%s'."
+               str-beg str-action new old))))
 
 (defun guix-result-message (profile entries entry-type
                             search-type search-vals)
diff --git a/emacs/guix-ui-generation.el b/emacs/guix-ui-generation.el
index 89a235a29c..752d8523b9 100644
--- a/emacs/guix-ui-generation.el
+++ b/emacs/guix-ui-generation.el
@@ -212,6 +212,11 @@ VAL is a boolean value."
         (user-error "2 generations should be marked for comparing")
       (sort numbers #'<))))
 
+(defun guix-generation-list-profiles-to-compare ()
+  "Return a sorted list of 2 marked generation profiles for comparing."
+  (mapcar #'guix-generation-current-packages-profile
+          (guix-generation-list-generations-to-compare)))
+
 (defun guix-generation-list-show-added-packages ()
   "List package outputs added to the latest marked generation.
 If 2 generations are marked with \\[guix-list-mark], display
@@ -221,8 +226,8 @@ installed in the other one."
   (guix-buffer-get-display-entries
    'list 'output
    (cl-list* (guix-ui-current-profile)
-             'generation-diff
-             (reverse (guix-generation-list-generations-to-compare)))
+             'profile-diff
+             (reverse (guix-generation-list-profiles-to-compare)))
    'add))
 
 (defun guix-generation-list-show-removed-packages ()
@@ -234,8 +239,8 @@ installed in the other one."
   (guix-buffer-get-display-entries
    'list 'output
    (cl-list* (guix-ui-current-profile)
-             'generation-diff
-             (guix-generation-list-generations-to-compare))
+             'profile-diff
+             (guix-generation-list-profiles-to-compare))
    'add))
 
 (defun guix-generation-list-compare (diff-fun gen-fun)