X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fdocumentation-lib.scm;h=626f2fc250ce7350f237f2eeec4609accb42ce36;hb=d765f3af45be51f15da55cf570a4b172200e1035;hp=047dc03fdcb9f2305ce29a6e0873568ef0a3c8ba;hpb=e01d440915be7b23b804d5886d685ba91617edf0;p=lilypond.git diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index 047dc03fdc..626f2fc250 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -3,21 +3,9 @@ ;;; ;;; source file of the GNU LilyPond music typesetter ;;; -;;; (c) 2000 Han-Wen Nienhuys +;;; (c) 2000--2001 Han-Wen Nienhuys ;;; Jan Nieuwenhuizen -(define (uniqued-alist alist acc) - (if (null? alist) acc - (if (assoc (caar alist) acc) - (uniqued-alist (cdr alist) acc) - (uniqued-alist (cdr alist) (cons (car alist) acc) - )))) - - -(define (aliststring (car x)) - (symbol->string (car y)))) - (define (processing name) (display (string-append "\nProcessing " name " ... ") (current-error-port))) @@ -39,11 +27,17 @@ (string-append "@code{" (texify (scm->string x)) "}") ) + +;; +;; don't confuse users with # syntax. +;; (define (scm->string val) - (string-append - (if (self-evaluating? val) "" "'") - (call-with-output-string (lambda (port) (display val port))) - )) + (if (and (procedure? val) (symbol? (procedure-name val))) + (symbol->string (procedure-name val)) + (string-append + (if (self-evaluating? val) "" "'") + (call-with-output-string (lambda (port) (display val port))) + ))) (define (node name) (string-append @@ -94,10 +88,25 @@ Add a ref if REF is set "\n@end table\n")) (define (texi-menu items-alist) + (let + ( + (maxwid (apply max (map (lambda (x) (string-length (car x))) + items-alist))) + ) + + + (string-append "\n@menu" (apply string-append - (map (lambda (x) (string-append "\n* " (car x) ":: " (cdr x))) + (map (lambda (x) + (string-append + (pad-string-to + (string-append "\n* " (car x) ":: ") + (+ maxwid 8) + ) + (cdr x)) + ) items-alist)) "\n@end menu\n" ;; Menus don't appear in html, so we make a list ourselves @@ -106,7 +115,7 @@ Add a ref if REF is set (description-list->texi (map (lambda (x) (cons (ref-ify (car x)) (cdr x))) items-alist)) "\n@end ifhtml\n" - "\n@end ignore\n")) + "\n@end ignore\n"))) (define (texi-node-menu name items-alist) @@ -115,7 +124,11 @@ Add a ref if REF is set (texi-section 1 name #f) (texi-menu items-alist))) + + (define (texi-file-head name file-name top items-alist) + + (string-append "\\input texinfo @c -*-texinfo-*-" "\n@setfilename " file-name ".info" @@ -123,15 +136,26 @@ Add a ref if REF is set "\n@dircategory GNU music project" "\n@direntry" ;; prepend GNU for dir, must be unique - "\n* GNU " name " (" file-name "). " name "." + "\n* GNU " name ": (" file-name "). " name "." "\n@end direntry" - (node "Top") ",(lilypond)Index,(lilypond)Development," top + ;; ugh, prev and next should be settable, of course + (node "Top") ",(lilypond)Index,(lilypond)Full Grob interface list," top "\n@top" (texi-section 1 name #f) (texi-menu items-alist) "\n@contents" )) +(define (itexi-file-head name file-name top items-alist) + (string-append + "@c -*-texinfo-*-" + (node name) ",,," top + (texi-section 1 name #f) + (texi-menu items-alist) + "\n@contents" + )) + + (define (context-name name) name) @@ -139,7 +163,9 @@ Add a ref if REF is set name) (define (grob-name name) - name) + (if (symbol? name) + (symbol->string name) + name)) (define (interface-name name) name) @@ -148,6 +174,8 @@ Add a ref if REF is set (string-append "@ref{" x "}")) (define (human-listify l) + "Produce a textual enumeration from L, a list of strings" + (cond ((null? l) "none") ((null? (cdr l)) (car l))