Subject: [bug#39375] [PATCH] gnu: emacs-utils: Port to emacs-next.

From: Maxim Cournoyer <[email-masked]>
Date: Fri, 28 Feb 2020 09:50:41 -0500

Hi Leo,

Leo Prikler <[email-masked]> writes:

> * guix/build/emacs-utils.scm (emacs-batch-eval*): New variable.
> (emacs-generate-autoloads): Redefine in terms of emacs-batch-eval*.
> Require autoload (needed with emacs-next).
> ---
>  guix/build/emacs-utils.scm | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/guix/build/emacs-utils.scm b/guix/build/emacs-utils.scm
> index 885fd0a217..1462f9d0af 100644
> --- a/guix/build/emacs-utils.scm
> +++ b/guix/build/emacs-utils.scm
> @@ -23,6 +23,7 @@
>    #:use-module (guix build utils)
>    #:export (%emacs
>              emacs-batch-eval
> +            emacs-batch-eval*
>              emacs-batch-edit-file
>              emacs-batch-disable-compilation
>              emacs-generate-autoloads
> @@ -46,6 +47,14 @@
>    (invoke (%emacs) "--quick" "--batch"
>            (format #f "--eval=~S" expr)))
>  
> +(define (emacs-batch-eval* . exprs)
> +  "Run Emacs in batch mode, and execute all of the elisp expressions EXPRS."
> +  (apply invoke (%emacs) "--quick" "--batch"
> +         (map
> +          (lambda (expr)
> +            (format #f "--eval=~S" expr))
> +          exprs)))
> +
>  (define (emacs-batch-edit-file file expr)
>    "Load FILE in Emacs using batch mode, and execute the elisp code EXPR."
>    (invoke (%emacs) "--quick" "--batch"
> @@ -64,7 +73,7 @@
>           (expr `(let ((backup-inhibited t)
>                        (generated-autoload-file ,file))
>                    (update-directory-autoloads ,directory))))
> -    (emacs-batch-eval expr)))
> +    (emacs-batch-eval* '(require 'autoload) expr)))
>  
>  (define* (emacs-byte-compile-directory dir)
>    "Byte compile all files in DIR and its sub-directories."

As I wrote here <https://bugs.gnu.org/39804>, I think we have something
fundamentally flawed in our Emacs 27 build, which I'd like to have
addressed at its core.

Thanks,

Maxim