ui: Add package-description-string.
Provide support for Texinfo's markup in package description. * guix/ui.scm (%text-width): New parameter. (texi->plain-text): New variable. (package->recutils): Use them. (package-description-string): New variable. * emacs/guix-main.scm (%package-param-alist): Use it. * gnu/packages/perl.scm (perl-devel-globaldestruction) (perl-devel-lexalias, perl-exporter-lite): Adapt to Texinfo's markup. * gnu/packages/python.scm (python2-empy): Likewise.
This commit is contained in:
parent
8531b326f1
commit
1cd4027cfd
|
@ -293,7 +293,7 @@ Example:
|
||||||
(license . ,package-license-names)
|
(license . ,package-license-names)
|
||||||
(source . ,package-source-names)
|
(source . ,package-source-names)
|
||||||
(synopsis . ,package-synopsis)
|
(synopsis . ,package-synopsis)
|
||||||
(description . ,package-description)
|
(description . ,package-description-string)
|
||||||
(home-url . ,package-home-page)
|
(home-url . ,package-home-page)
|
||||||
(outputs . ,package-outputs)
|
(outputs . ,package-outputs)
|
||||||
(non-unique . ,(negate package-unique?))
|
(non-unique . ,(negate package-unique?))
|
||||||
|
|
|
@ -1705,7 +1705,7 @@ particular command is available.")
|
||||||
(home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
|
(home-page "http://search.cpan.org/dist/Devel-GlobalDestruction")
|
||||||
(synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
|
(synopsis "Provides equivalent of ${^GLOBAL_PHASE} eq 'DESTRUCT' for older perls")
|
||||||
(description "Devel::GlobalDestruction provides a function returning the
|
(description "Devel::GlobalDestruction provides a function returning the
|
||||||
equivalent of \"${^GLOBAL_PHASE} eq 'DESTRUCT'\" for older perls.")
|
equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
|
||||||
(license (package-license perl))))
|
(license (package-license perl))))
|
||||||
|
|
||||||
(define-public perl-devel-lexalias
|
(define-public perl-devel-lexalias
|
||||||
|
@ -1949,7 +1949,7 @@ constructors, which speeds code up at runtime by a significant amount. String
|
||||||
eval is not without its issues however - it's difficult to control the scope
|
eval is not without its issues however - it's difficult to control the scope
|
||||||
it's used in (which determines which variables are in scope inside the eval),
|
it's used in (which determines which variables are in scope inside the eval),
|
||||||
and it's easy to miss compilation errors, since eval catches them and sticks
|
and it's easy to miss compilation errors, since eval catches them and sticks
|
||||||
them in $@ instead. This module attempts to solve these problems. It
|
them in $@@ instead. This module attempts to solve these problems. It
|
||||||
provides an eval_closure function, which evals a string in a clean
|
provides an eval_closure function, which evals a string in a clean
|
||||||
environment, other than a fixed list of specified variables. Compilation
|
environment, other than a fixed list of specified variables. Compilation
|
||||||
errors are rethrown automatically.")
|
errors are rethrown automatically.")
|
||||||
|
@ -1993,7 +1993,7 @@ in your modules in a \"Java-esque\" manner.")
|
||||||
(description
|
(description
|
||||||
"Exporter::Lite is an alternative to Exporter, intended to provide a
|
"Exporter::Lite is an alternative to Exporter, intended to provide a
|
||||||
lightweight subset of the most commonly-used functionality. It supports
|
lightweight subset of the most commonly-used functionality. It supports
|
||||||
import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
|
import(), @@EXPORT and @@EXPORT_OK and not a whole lot else.")
|
||||||
(home-page (string-append "http://search.cpan.org/~neilb/"
|
(home-page (string-append "http://search.cpan.org/~neilb/"
|
||||||
"Exporter-Lite-" version))
|
"Exporter-Lite-" version))
|
||||||
(license (package-license perl))))
|
(license (package-license perl))))
|
||||||
|
|
|
@ -1174,7 +1174,7 @@ other Python program.")
|
||||||
"EmPy is a system for embedding Python expressions and statements in
|
"EmPy is a system for embedding Python expressions and statements in
|
||||||
template text; it takes an EmPy source file, processes it, and produces
|
template text; it takes an EmPy source file, processes it, and produces
|
||||||
output. This is accomplished via expansions, which are special signals to the
|
output. This is accomplished via expansions, which are special signals to the
|
||||||
EmPy system and are set off by a special prefix (by default the at sign, @).
|
EmPy system and are set off by a special prefix (by default the at sign, @@).
|
||||||
EmPy can expand arbitrary Python expressions and statements in this way, as
|
EmPy can expand arbitrary Python expressions and statements in this way, as
|
||||||
well as a variety of special forms. Textual data not explicitly delimited in
|
well as a variety of special forms. Textual data not explicitly delimited in
|
||||||
this way is sent unaffected to the output, allowing Python to be used in
|
this way is sent unaffected to the output, allowing Python to be used in
|
||||||
|
|
50
guix/ui.scm
50
guix/ui.scm
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||||
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||||
|
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||||
;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
|
;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -45,6 +46,9 @@
|
||||||
#:use-module (ice-9 regex)
|
#:use-module (ice-9 regex)
|
||||||
#:autoload (system repl repl) (start-repl)
|
#:autoload (system repl repl) (start-repl)
|
||||||
#:autoload (system repl debug) (make-debug stack->vector)
|
#:autoload (system repl debug) (make-debug stack->vector)
|
||||||
|
#:use-module (texinfo)
|
||||||
|
#:use-module (texinfo plain-text)
|
||||||
|
#:use-module (texinfo string-utils)
|
||||||
#:export (_
|
#:export (_
|
||||||
N_
|
N_
|
||||||
P_
|
P_
|
||||||
|
@ -69,6 +73,7 @@
|
||||||
switch-symlinks
|
switch-symlinks
|
||||||
config-directory
|
config-directory
|
||||||
fill-paragraph
|
fill-paragraph
|
||||||
|
package-description-string
|
||||||
string->recutils
|
string->recutils
|
||||||
package->recutils
|
package->recutils
|
||||||
package-specification->name+version+output
|
package-specification->name+version+output
|
||||||
|
@ -775,6 +780,28 @@ converted to a space; sequences of more than one line break are preserved."
|
||||||
;;; Packages.
|
;;; Packages.
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
|
(define %text-width
|
||||||
|
(make-parameter (or (and=> (getenv "WIDTH") string->number)
|
||||||
|
80)))
|
||||||
|
|
||||||
|
(set! (@@ (texinfo plain-text) wrap*)
|
||||||
|
;; XXX: Monkey patch this private procedure to let 'package->recutils'
|
||||||
|
;; parameterize the fill of description field correctly.
|
||||||
|
(lambda strings
|
||||||
|
(let ((indent (fluid-ref (@@ (texinfo plain-text) *indent*))))
|
||||||
|
(fill-string (string-concatenate strings)
|
||||||
|
#:line-width (%text-width) #:initial-indent indent
|
||||||
|
#:subsequent-indent indent))))
|
||||||
|
|
||||||
|
(define (texi->plain-text str)
|
||||||
|
"Return a plain-text representation of texinfo fragment STR."
|
||||||
|
(stexi->plain-text (texi-fragment->stexi str)))
|
||||||
|
|
||||||
|
(define (package-description-string package)
|
||||||
|
"Return a plain-text representation of PACKAGE description field."
|
||||||
|
(and=> (package-description package)
|
||||||
|
(compose texi->plain-text P_)))
|
||||||
|
|
||||||
(define (string->recutils str)
|
(define (string->recutils str)
|
||||||
"Return a version of STR where newlines have been replaced by newlines
|
"Return a version of STR where newlines have been replaced by newlines
|
||||||
followed by \"+ \", which makes for a valid multi-line field value in the
|
followed by \"+ \", which makes for a valid multi-line field value in the
|
||||||
|
@ -787,18 +814,9 @@ followed by \"+ \", which makes for a valid multi-line field value in the
|
||||||
'()
|
'()
|
||||||
str)))
|
str)))
|
||||||
|
|
||||||
(define* (package->recutils p port
|
(define* (package->recutils p port #:optional (width (%text-width)))
|
||||||
#:optional (width (or (and=> (getenv "WIDTH")
|
|
||||||
string->number)
|
|
||||||
80)))
|
|
||||||
"Write to PORT a `recutils' record of package P, arranging to fit within
|
"Write to PORT a `recutils' record of package P, arranging to fit within
|
||||||
WIDTH columns."
|
WIDTH columns."
|
||||||
(define (description->recutils str)
|
|
||||||
(let ((str (P_ str)))
|
|
||||||
(string->recutils
|
|
||||||
(fill-paragraph str width
|
|
||||||
(string-length "description: ")))))
|
|
||||||
|
|
||||||
(define (dependencies->recutils packages)
|
(define (dependencies->recutils packages)
|
||||||
(let ((list (string-join (map package-full-name
|
(let ((list (string-join (map package-full-name
|
||||||
(sort packages package<?)) " ")))
|
(sort packages package<?)) " ")))
|
||||||
|
@ -842,9 +860,15 @@ WIDTH columns."
|
||||||
(chr chr))
|
(chr chr))
|
||||||
(or (and=> (package-synopsis p) P_)
|
(or (and=> (package-synopsis p) P_)
|
||||||
"")))
|
"")))
|
||||||
(format port "description: ~a~%"
|
(format port "~a~2%"
|
||||||
(and=> (package-description p) description->recutils))
|
(string->recutils
|
||||||
(newline port))
|
(string-trim-right
|
||||||
|
(parameterize ((%text-width width))
|
||||||
|
(texi->plain-text
|
||||||
|
(string-append "description: "
|
||||||
|
(or (and=> (package-description p) P_)
|
||||||
|
""))))
|
||||||
|
#\newline))))
|
||||||
|
|
||||||
(define (string->generations str)
|
(define (string->generations str)
|
||||||
"Return the list of generations matching a pattern in STR. This function
|
"Return the list of generations matching a pattern in STR. This function
|
||||||
|
|
Loading…
Reference in New Issue