From 54c3c284d7f319d6db7c665c612fdbeefe81ae5f Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Mon, 4 Jan 2016 22:59:04 +0300 Subject: [PATCH] emacs: Replace 'generation-diff' search with 'profile-diff'. * emacs/guix-main.scm (generation-package-specifications): Rename to... (profile-package-specifications): ... this. Take a single 'profile' argument. (generation-difference): Rename to... (profile-difference): ... this. Take profiles as arguments. (package/output-sexps): Adjust accordingly. * emacs/guix-ui-generation.el (guix-generation-list-profiles-to-compare): New procedure. (guix-generation-list-show-added-packages) (guix-generation-list-show-removed-packages): Use it. * emacs/guix-messages.el (guix-messages): Replace 'generation-diff' with 'profile-diff'. (guix-message-outputs-by-diff): Adjust accordingly. --- emacs/guix-main.scm | 23 +++++++++++------------ emacs/guix-messages.el | 21 ++++++++++----------- emacs/guix-ui-generation.el | 13 +++++++++---- 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)