(address . guix-patches@gnu.org)(name . Liliana Marie Prikler)(address . liliana.prikler@gmail.com)
This patch adds a handy way for generating info documentation for emacs
packages from texinfo or org files.
Andrew Tropin (3):
build-system: emacs: Add documentation-files argument.
gnu: emacs-orderless: Use documentation-files argument.
gnu: emacs-consult: Use documentation-files argument.
gnu/packages/emacs-xyz.scm | 11 +++--------
guix/build-system/emacs.scm | 11 +++++++++++
guix/build/emacs-build-system.scm | 17 +++++++++++++++++
3 files changed, 31 insertions(+), 8 deletions(-)
--
2.37.1
From 74b671b94d16db2f21c1df02672fef0b5228a08a Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Thu, 18 Aug 2022 17:43:14 +0300
Subject: [PATCH 1/3] build-system: emacs: Add documentation-files argument.
Allows to build info files from texinfo or org.
* guix/build-system/emacs.scm (default-texinfo): New variable.
* guix/build-system/emacs.scm (lower): New arguments.
* guix/build/emacs-build-system.scm (generate-docs): New variable.
---
guix/build-system/emacs.scm | 11 +++++++++++
guix/build/emacs-build-system.scm | 17 +++++++++++++++++
2 files changed, 28 insertions(+)
Toggle diff (82 lines)
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 3df68789ff..632ba2ddb3 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -56,8 +56,16 @@ (define (default-emacs)
(let ((emacs-mod (resolve-interface '(gnu packages emacs))))
(module-ref emacs-mod 'emacs-minimal)))
+(define (default-texinfo)
+ "Return the default texinfo package."
+ ;; Lazily resolve the binding to avoid a circular dependency.
+ (let ((texinfo-mod (resolve-interface '(gnu packages texinfo))))
+ (module-ref texinfo-mod 'texinfo)))
+
(define* (lower name
#:key source inputs native-inputs outputs system target
+ documentation-files
+ (texinfo (default-texinfo))
(emacs (default-emacs))
#:allow-other-keys
#:rest arguments)
@@ -77,6 +85,7 @@ (define private-keywords
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
(build-inputs `(("emacs" ,emacs)
+ ,@(if (null? documentation-files) '() `(("texinfo" ,texinfo)))
,@native-inputs))
(outputs outputs)
(build emacs-build)
@@ -87,6 +96,7 @@ (define* (emacs-build name inputs
(tests? #f)
(parallel-tests? #t)
(test-command ''("make" "check"))
+ (documentation-files ''())
(phases '%standard-phases)
(outputs '("out"))
(include (quote %default-include))
@@ -109,6 +119,7 @@ (define builder
#:test-command #$test-command
#:tests? #$tests?
#:parallel-tests? #$parallel-tests?
+ #:documentation-files #$documentation-files
#:phases #$phases
#:outputs #$(outputs->gexp outputs)
#:include #$include
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 6a6918bfdd..08c61ddfd8 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -274,6 +274,22 @@ (define (match-stripped-file action regex)
(install-file? file stat #:verbose? #t)))
#f))))
+(define* (generate-docs #:key outputs documentation-files #:allow-other-keys)
+ "Convert texinfo or org files specified in DOCUMENTATION-FILES argument to
+info files."
+ (map
+ (lambda (path)
+ (if (or (string-suffix? ".texi" path)
+ (string-suffix? ".texinfo" path)
+ (string-suffix? ".txi" path))
+ (invoke "makeinfo" path)
+ (emacs-batch-script ; else org file
+ `(progn
+ (require 'ox-texinfo)
+ (find-file ,path)
+ (org-texinfo-export-to-info)))))
+ documentation-files))
+
(define* (move-doc #:key outputs #:allow-other-keys)
"Move info files from the ELPA package directory to the info directory."
(let* ((out (assoc-ref outputs "out"))
@@ -343,6 +359,7 @@ (define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'unpack unpack)
(add-after 'unpack 'expand-load-path expand-load-path)
+ (add-after 'expand-load-path 'generate-docs generate-docs)
(delete 'bootstrap)
(delete 'configure)
(delete 'build)
--
2.37.1
From 6c8fb7d173c24ef6c00aca5a7697cf14d1353f37 Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Thu, 18 Aug 2022 17:49:18 +0300
Subject: [PATCH 2/3] gnu: emacs-orderless: Use documentation-files argument.
* gnu/packages/emacs-xyz.scm (emacs-orderless): Use documentation-files argument.
---
gnu/packages/emacs-xyz.scm | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
Toggle diff (22 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 811e293c1d..f3d515b3c6 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9045,14 +9045,7 @@ (define-public emacs-orderless
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'install 'makeinfo
- (lambda* (#:key outputs #:allow-other-keys)
- (invoke "makeinfo" "orderless.texi")
- (install-file "orderless.info"
- (string-append (assoc-ref outputs "out")
- "/share/info")))))))
+ (list #:documentation-files #~'("orderless.texi")))
(native-inputs
(list texinfo))
(home-page "https://github.com/oantolin/orderless")
--
2.37.1
From d3ad4d4446ba4275bec5f9ed2aaa7e74289727f2 Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Thu, 18 Aug 2022 17:50:00 +0300
Subject: [PATCH 3/3] gnu: emacs-consult: Use documentation-files argument.
* gnu/packages/emacs-xyz.scm (emacs-consult): Use documentation-files argument.
---
gnu/packages/emacs-xyz.scm | 2 ++
1 file changed, 2 insertions(+)
Toggle diff (15 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index f3d515b3c6..cab1ad9dee 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -9071,6 +9071,8 @@ (define-public emacs-consult
(base32 "0sy4rn1vjk1g50r8z14hzj8lds6s7ij2zkjqfi6mfash5il75wnq"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
+ (arguments
+ (list #:documentation-files #~'("README.org")))
(propagated-inputs (list emacs-compat))
(home-page "https://github.com/minad/consult")
(synopsis "Consulting completing-read")
--
2.37.1
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCgAdFiEEKEGaxlA4dEDH6S/6IgjSCVjB3rAFAmL+UswACgkQIgjSCVjB
3rDHMg/+JsVmk6RTsi9dfGIa81j39FmUrS489YDxzPZ0A4xer7JSarBOWpw74/6k
66mfoEjkbVqVVb3TFX5GgPtEzJ9TVRWYYu1ojcHi5RK7UOkMMHJE7/D0Hb9wHSgf
o3Yh9+PIuoNf+WNsX6pka9ko42T2OHlKu7mu3nWDo5zNskjAFBcyKZbFnUEmBb5E
n7/fvlqiw1xBG5IfSEbnhCIXskKUTmwfgiTO3M7l2haY26E9Rlsb9/e6x1IFcUaC
DTb1n50CnARD2HrMI/cZoHclg3zG8ZAPYT10d9A2g0W/vFgglZ2AK8YdZLvcicbn
cu6hrWJQf2zsZxenkxaMT74ApGmk48qUIpqkiUcPp98tiqDn7TJdSbJuFuNJ6kj/
f2PFs+7QSJ2lCWKz2n6mE7CQV/w3rxqTYDIHYHxDhxhZ3Do/gkK1rjanyqO/57XT
W4PYDyue2B17l0rK72ii+gQ5u+MECfvrFsutH5yPMmuTCyDh69vNFOeK9Ysk+ru2
AK+8MBCaTtqRtM054quenIjSfwWP7toKcWcGaaXFRms9XcE0h3OoGFW6HNF42UHh
5tY0Xb3MquSy9JHeZYgl/8escoAm73UlgqH6OOCnoT0oKxE5s3hAaYbWARWb8sSn
hiwXPsIlx5BT0ZJ5++ugQ0nRNP/4yq4pRXfGHmYTdcciF4IRI9w=
=rBp9
-----END PGP SIGNATURE-----