]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/document-markup.scm
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / scm / document-markup.scm
index 2eca8cc7d77286bf7adbbb84998299e6c4e50a60..35347ae15083c0fac3c47c416c05857f88d4b37b 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 1998--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;
 ;;;; LilyPond is free software: you can redistribute it and/or modify
     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