From 26db747a863b08ebcfd630cce635be86c23d829d Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 27 Jun 2018 15:36:03 +0200 Subject: ui: Hint at the installation of locale packages and 'GUIX_LOCPATH'. * guix/ui.scm (install-locale): Hide the "warning: failed to install locale" on Guile 2.2. Add a hint about 'glibc-utf8-locales' and 'GUIX_LOCPATH'. --- guix/ui.scm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'guix/ui.scm') diff --git a/guix/ui.scm b/guix/ui.scm index 31830ee850..ec709450d8 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -421,8 +421,21 @@ report them in a user-friendly way." (lambda _ (setlocale LC_ALL "")) (lambda args - (warning (G_ "failed to install locale: ~a~%") - (strerror (system-error-errno args)))))) + (cond-expand + ;; Guile 2.2 already emits a warning, so let's not add a second one. + (guile-2.2 #t) + (else (warning (G_ "failed to install locale: ~a~%") + (strerror (system-error-errno args))))) + (display-hint (G_ "Consider installing the @code{glibc-utf8-locales} or +@code{glibc-locales} package and defining @code{GUIX_LOCPATH}, along these +lines: + +@example +guix package -i glibc-utf8-locales +export GUIX_LOCPATH=\"$HOME/.guix-profile/lib/locale\" +@end example + +See the \"Application Setup\" section in the manual, for more info.\n"))))) (define (initialize-guix) "Perform the usual initialization for stand-alone Guix commands." -- cgit v1.2.3 From fd1395c4982dd8cf7fe9843317d1ebb1e5d78bee Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 29 Jun 2018 12:17:41 +0200 Subject: ui: Increase relevance score for exact matches. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously "guix package -s python" would have 'python2-zope-interface' as its first result (relevance: 10), followed by many other python-* packages with the same score, while 'python' itself would come later (relevance: 7). This change makes 'python' the first result (relevance: 27). Reported by Gábor Boskovits. * guix/ui.scm (relevance)[score]: Use 'fold-matches' instead of 'match:count' to counter the number of maches. Give more weight to exact matches. --- guix/ui.scm | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'guix/ui.scm') diff --git a/guix/ui.scm b/guix/ui.scm index ec709450d8..6996b7f1c4 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -1222,11 +1222,14 @@ field in the final score. A score of zero means that OBJ does not match any of REGEXPS. The higher the score, the more relevant OBJ is to REGEXPS." (define (score str) - (let ((counts (filter-map (lambda (regexp) - (match (regexp-exec regexp str) - (#f #f) - (m (match:count m)))) - regexps))) + (let ((counts (map (lambda (regexp) + (match (fold-matches regexp str '() cons) + (() 0) + ((m) (if (string=? (match:substring m) str) + 5 ;exact match + 1)) + (lst (length lst)))) + regexps))) ;; Compute a score that's proportional to the number of regexps matched ;; and to the number of matches for each regexp. (* (length counts) (reduce + 0 counts)))) -- cgit v1.2.3