bug-guix
[Top][All Lists]
Advanced

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

Re: Enhanced 'warning'


From: Nikita Karetnikov
Subject: Re: Enhanced 'warning'
Date: Thu, 18 Apr 2013 23:27:48 +0400

> You should reuse the body of the current ‘warning’ macro, though.

What's wrong with this macro?

(define-syntax define-diagnostic
  (syntax-rules ()
    ((define-diagnostic name prefix)
     (define-syntax name
       (lambda (x)
         (define (augmented-format-string fmt)
           (string-append "~:[~*~;guix ~a: ~]~a" (syntax->datum fmt)))

         (syntax-case x (N_ _)                    ; these are literals, yeah...
           ((name (_ fmt) args ...)
            (string? (syntax->datum #'fmt))
            (with-syntax ((fmt*   (augmented-format-string #'fmt))
                          (prefix (datum->syntax x prefix)))
              #'(format (guix-warning-port) (gettext fmt*)
                        (program-name) (program-name) prefix
                        args ...)))
           ((name (N_ singular plural n) args ...)
            (and (string? (syntax->datum #'singular))
                 (string? (syntax->datum #'plural)))
            (with-syntax ((s      (augmented-format-string #'singular))
                          (p      (augmented-format-string #'plural))
                          (prefix (datum->syntax x prefix)))
              #'(format (guix-warning-port)
                        (ngettext s p n %gettext-domain)
                        (program-name) (program-name) prefix
                        args ...)))))))))

I'm getting the "extra ellipsis in form" error.

Attachment: pgplVn82aK7ha.pgp
Description: PGP signature


reply via email to

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