guix-commits
[Top][All Lists]
Advanced

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

100/197: installer: Do not perform tasks more than once.


From: Danny Milosavljevic
Subject: 100/197: installer: Do not perform tasks more than once.
Date: Mon, 3 Jul 2017 20:37:07 -0400 (EDT)

dannym pushed a commit to branch wip-installer-2
in repository guix.

commit 3fd85d74aff69364c8488fc330cead209a251081
Author: John Darrington <address@hidden>
Date:   Sun Jan 15 13:31:19 2017 +0100

    installer: Do not perform tasks more than once.
    
    * gnu/system/installer/guixsd-installer.scm (uniquify): New procedure.
    (main-page-key-handler): Use it to remove duplicates from the page stack.
---
 gnu/system/installer/guixsd-installer.scm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/gnu/system/installer/guixsd-installer.scm 
b/gnu/system/installer/guixsd-installer.scm
index 7c79d14..348e073 100644
--- a/gnu/system/installer/guixsd-installer.scm
+++ b/gnu/system/installer/guixsd-installer.scm
@@ -197,6 +197,19 @@
            (do-task task-name page))))
    task-name-list))
 
+
+(define (uniquify in)
+  "Remove duplicates from the list IN. Keep the items which are closest to the
+tail of the list."
+  (let loop ((l (reverse in))
+             (acc '()))
+    (if (null? l)
+        acc
+        (loop (cdr l)
+              (if (member (car l) (cdr l))
+                  acc
+                  (cons (car l) acc))))))
+
 (define (main-page-key-handler page ch)
   (let ((main-menu (page-datum page 'menu)))
     (std-menu-key-handler main-menu ch)
@@ -204,6 +217,7 @@
      ((eq? ch #\newline)
       (let ((item (menu-get-current-item main-menu)))
         (do-task (car item) page)
+        (set! page-stack (uniquify page-stack))
         ((page-refresh (car page-stack)) (car page-stack)))))))
 
 (define (main-page-init page)



reply via email to

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