X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocument-markup.scm;h=35347ae15083c0fac3c47c416c05857f88d4b37b;hb=90e4d7057f3857da049dfda3d130017d4719bd6b;hp=f8b9520e719f94a1aae039b67cbc7e00706e8369;hpb=e18531db1f79fb685fbd16d6a2a67bf4b6c09915;p=lilypond.git diff --git a/scm/document-markup.scm b/scm/document-markup.scm index f8b9520e71..35347ae150 100644 --- a/scm/document-markup.scm +++ b/scm/document-markup.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 1998--2010 Han-Wen Nienhuys +;;;; Copyright (C) 1998--2015 Han-Wen Nienhuys ;;;; Jan Nieuwenhuizen ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify @@ -42,26 +42,27 @@ prop-strings)) (define (doc-markup-function func) - (let* ((doc-str (procedure-documentation func)) + (let* ((full-doc (procedure-documentation func)) + (match-args (and full-doc (string-match "^\\([^)]*\\)\n" full-doc))) + (arg-names (if match-args + (with-input-from-string (match:string match-args) read) + (circular-list "arg"))) + (doc-str (if match-args (match:suffix match-args) full-doc)) (f-name (symbol->string (procedure-name func))) (c-name (regexp-substitute/global #f "-markup(-list)?$" f-name 'pre "" 'post)) (sig (object-property func 'markup-signature)) - (arg-names (let ((arg-list (cadr (procedure-source func)))) - (if (list? arg-list) - (map symbol->string (cddr arg-list)) - (make-list (length sig) "arg")))) (sig-type-names (map type-name sig)) (signature-str (string-join - (map (lambda (x) (string-append - "@var{" (car x) "} (" (cadr x) ")" )) - (zip arg-names sig-type-names)) + (map (lambda (x y) + (format #f "@var{~a} (~a)" x y)) + arg-names sig-type-names) " " ))) - + (string-append "\n\n@item @code{\\" c-name "} " signature-str "\n@funindex \\" c-name "\n" - "\n@cindex \\" c-name "\n" + "\n@cindex \\" c-name "\n" (if (string? doc-str) doc-str "") @@ -69,44 +70,33 @@ (if (null? prop-strings) "\n" (string-append "\n\n\nUsed properties:\n@itemize\n" - (apply string-append prop-strings) + (string-concatenate prop-strings) "@end itemize\n")))))) (define (markup-functionstring (procedure-name a)) (symbol->string (procedure-name b)))) - + (define (markup-category-doc-node category) (let* ((category-string (symbol->string category)) - (category-name (string-capitalize (regexp-substitute/global #f - "-" category-string 'pre " " 'post))) - (markup-functions (hash-fold (lambda (markup-function dummy functions) - (cons markup-function functions)) - '() - (hashq-ref markup-functions-by-category - category)))) + (category-name (string-capitalize + (regexp-substitute/global + #f "-" category-string 'pre " " 'post))) + (markup-functions (hash-fold (lambda (markup-function dummy functions) + (cons markup-function functions)) + '() + (hashq-ref markup-functions-by-category + category)))) (make #:appendix #t #:name category-name #:desc "" #:text (string-append "@table @asis" - (apply string-append - (map doc-markup-function - (sort markup-functions markup-function #:appendix #t @@ -114,7 +104,7 @@ #:desc "" #:text "The following commands can all be used inside @code{\\markup @{ @}}." #:children (let* (;; when a new category is defined, update `ordered-categories' - (ordered-categories '(font align graphic music instrument-specific-markup other)) + (ordered-categories '(font align graphic music instrument-specific-markup accordion-registers other)) (raw-categories (hash-fold (lambda (category functions categories) (cons category categories)) (list) @@ -125,11 +115,14 @@ raw-categories)))) (map markup-category-doc-node categories)))) -(define (markup-list-doc-node) - (make - #:appendix #t - #:name "Text markup list commands" - #:desc "" - #:text (string-append - "The following commands can all be used with @code{\\markuplines}.\n" - (markup-list-doc-string)))) +(define (markup-list-doc-string) + (string-append + "@table @asis" + (string-concatenate + (map doc-markup-function + (sort (hash-fold (lambda (markup-list-function dummy functions) + (cons markup-list-function functions)) + '() + markup-list-functions) + markup-function