summaryrefslogtreecommitdiff
path: root/gnu/installer/newt/keymap.scm
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2021-01-12 16:26:07 +0100
committerMathieu Othacehe <othacehe@gnu.org>2021-01-12 16:40:27 +0100
commitbb4e67415eb6d9871ee1b50b0a01e08c19f4809a (patch)
tree11b6f0c7386119f69f387ed090c9d13e90b9c3c4 /gnu/installer/newt/keymap.scm
parent55157c90711662c24c7627189020e3a5aeafa2ba (diff)
installer: Fix crash in parameters menu.
Fixes: <https://issues.guix.gnu.org/45378>. * gnu/installer/newt/keymap.scm (run-layout-page): Return false when "Continue" button is pressed. (run-keymap-page): Do not try to compute variants if layout is false. Also do not try to format the result if layout is false. * gnu/installer.scm (compute-keymap-step): Do not apply keymap if "run-keymap-page" returns false.
Diffstat (limited to 'gnu/installer/newt/keymap.scm')
-rw-r--r--gnu/installer/newt/keymap.scm21
1 files changed, 13 insertions, 8 deletions
diff --git a/gnu/installer/newt/keymap.scm b/gnu/installer/newt/keymap.scm
index 1b3af2f158b..92f7f46f34d 100644
--- a/gnu/installer/newt/keymap.scm
+++ b/gnu/installer/newt/keymap.scm
@@ -56,7 +56,7 @@ different layout at any time from the parameters menu.")))
56 (else (G_ "Exit"))) 56 (else (G_ "Exit")))
57 #:button-callback-procedure 57 #:button-callback-procedure
58 (case context 58 (case context
59 ((param) (const #t)) 59 ((param) (const #f))
60 (else 60 (else
61 (lambda _ 61 (lambda _
62 (raise 62 (raise
@@ -183,7 +183,9 @@ options."
183 (compute 183 (compute
184 (lambda (result _) 184 (lambda (result _)
185 (let* ((layout (result-step result 'layout)) 185 (let* ((layout (result-step result 'layout))
186 (variants (x11-keymap-layout-variants layout))) 186 (variants (if layout
187 (x11-keymap-layout-variants layout)
188 '())))
187 ;; Return #f if the layout does not have any variant. 189 ;; Return #f if the layout does not have any variant.
188 (and (not (null? variants)) 190 (and (not (null? variants))
189 (run-variant-page 191 (run-variant-page
@@ -196,16 +198,19 @@ options."
196 (gettext (x11-keymap-layout-description layout) 198 (gettext (x11-keymap-layout-description layout)
197 "xkeyboard-config"))))))))))) 199 "xkeyboard-config")))))))))))
198 200
199 (define (format-result result) 201 (define (format-result layout variant)
200 (let ((layout (x11-keymap-layout-name 202 (let ((layout (x11-keymap-layout-name layout))
201 (result-step result 'layout))) 203 (variant (and=> variant
202 (variant (and=> (result-step result 'variant)
203 (lambda (variant) 204 (lambda (variant)
204 (gettext (x11-keymap-variant-name variant) 205 (gettext (x11-keymap-variant-name variant)
205 "xkeyboard-config"))))) 206 "xkeyboard-config")))))
206 (toggleable-latin-layout layout variant))) 207 (toggleable-latin-layout layout variant)))
207 (format-result 208
208 (run-installer-steps #:steps keymap-steps))) 209 (let* ((result (run-installer-steps #:steps keymap-steps))
210 (layout (result-step result 'layout))
211 (variant (result-step result 'variant)))
212 (and layout
213 (format-result layout variant))))
209 214
210(define (keyboard-layout->configuration keymap) 215(define (keyboard-layout->configuration keymap)
211 "Return the operating system configuration snippet to install KEYMAP." 216 "Return the operating system configuration snippet to install KEYMAP."