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.
This commit is contained in:
parent
2df17bd0ee
commit
54c3c284d7
|
@ -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)))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue