GNU bug report logs - #45893
[PATCH 0/2] DRAFT: Hint for options.

Previous Next

Package: guix-patches;

Reported by: zimoun <zimon.toutoune <at> gmail.com>

Date: Fri, 15 Jan 2021 16:38:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #41 received at 45893 <at> debbugs.gnu.org (full text, mbox):

From: zimoun <zimon.toutoune <at> gmail.com>
To: 45893 <at> debbugs.gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>,
 zimoun <zimon.toutoune <at> gmail.com>
Subject: [PATCH v3 3/3] ui: Add hint for command typo.
Date: Tue, 19 Jan 2021 22:28:10 +0100
* guix/ui.scm (command-hint): New variable
* guix/ui.scm (run-guix-command): Use it.
---
 guix/ui.scm | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/guix/ui.scm b/guix/ui.scm
index bd504c68da..895c3a721f 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -2123,6 +2123,14 @@ Run COMMAND with ARGS.\n"))
 (define (run-guix-command command . args)
   "Run COMMAND with the given ARGS.  Report an error when COMMAND is not
 found."
+  (define (command-hint guess commands)
+    (define command-names
+      (map (lambda (command)
+             (match (command-name command)
+               ((head tail ...) head)))
+           commands))
+    (string-closest (symbol->string guess) command-names #:threshold 3))
+
   (define module
     (catch 'misc-error
       (lambda ()
@@ -2139,9 +2147,12 @@ found."
                 (load file)
                 (resolve-interface `(guix extensions ,command)))))
           (lambda _
-            (format (current-error-port)
-                    (G_ "guix: ~a: command not found~%") command)
-            (show-guix-usage))))))
+            (let ((hint (command-hint command (commands))))
+              (when hint
+                (display-hint (format #f (G_ "Do you mean @code{~a}?") hint)))
+              (format (current-error-port)
+                      (G_ "guix: ~a: command not found~%") command)
+              (show-guix-usage)))))))
 
   (let ((command-main (module-ref module
                                   (symbol-append 'guix- command))))
-- 
2.29.2





This bug report was last modified 4 years and 105 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.