diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2021-09-21 20:35:49 +0000 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-09-21 20:35:49 +0000 |
commit | d58e52b0713648dd30d41b41277854a935d8d15a (patch) | |
tree | d50ce303f957e20ffe96217ae034119f1609dd18 /gnu/installer/keymap.scm | |
parent | a3324e57531186a42feb3aa488556faa67386e9c (diff) | |
download | guix-d58e52b0713648dd30d41b41277854a935d8d15a.tar guix-d58e52b0713648dd30d41b41277854a935d8d15a.tar.gz |
installer: keymap: Fix optional fields handling.
Fixes: <https://issues.guix.gnu.org/50723>.
The keymap xml contains optional shortDescription and description fields. The
assoc-ref call on those fields can return false, handle it correctly.
* gnu/installer/keymap.scm (xkb-rules->models+layouts): Introduce a new
"maybe-empty" helper to deal with optional fields. Use it for shortDescription
and description fields.
Diffstat (limited to 'gnu/installer/keymap.scm')
-rw-r--r-- | gnu/installer/keymap.scm | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gnu/installer/keymap.scm b/gnu/installer/keymap.scm index c42b308009..83b65a0427 100644 --- a/gnu/installer/keymap.scm +++ b/gnu/installer/keymap.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2018, 2021 Mathieu Othacehe <othacehe@gnu.org> ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de> ;;; ;;; This file is part of GNU Guix. @@ -79,6 +79,11 @@ "Parse FILE and return two values, the list of supported X11-KEYMAP-MODEL and X11-KEYMAP-LAYOUT records. FILE is an XML file from the X Keyboard Configuration Database, describing possible XKB configurations." + (define maybe-empty + (match-lambda + ((x) x) + (#f ""))) + (define (model m) (sxml-match m [(model @@ -108,7 +113,7 @@ Configuration Database, describing possible XKB configurations." . ,rest-variant)) (x11-keymap-variant (name name) - (description (car + (description (maybe-empty (assoc-ref rest-variant 'description))))])) (define (layout l) @@ -120,9 +125,9 @@ Configuration Database, describing possible XKB configurations." (variantList ,[variant -> v] ...)) (x11-keymap-layout (name name) - (synopsis (car + (synopsis (maybe-empty (assoc-ref rest-layout 'shortDescription))) - (description (car + (description (maybe-empty (assoc-ref rest-layout 'description))) (variants (list v ...)))] [(layout @@ -131,9 +136,9 @@ Configuration Database, describing possible XKB configurations." . ,rest-layout)) (x11-keymap-layout (name name) - (synopsis (car + (synopsis (maybe-empty (assoc-ref rest-layout 'shortDescription))) - (description (car + (description (maybe-empty (assoc-ref rest-layout 'description))) (variants '()))])) |