((name-sym (car music-func-pair))
(music-func (cdr music-func-pair))
(func (ly:music-function-extract music-func))
- (arg-names
- (map symbol->string
- (cddr (cadr (procedure-source func)))))
- (doc (procedure-documentation func))
+ (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 (if match-args (match:suffix match-args) full-doc))
(sign (ly:music-function-signature music-func))
(type-names (map (lambda (pred)
(if (pair? pred)
name-sym (car type-names)
(if (string-null? signature-str) "" " - ") signature-str
name-sym
- (if doc
+ (if (and doc (not (string-null? doc)))
doc
(begin
(ly:warning "music function `~a' not documented." name-sym)
(pair? (car args)))
(currying-lambda (car args) doc-string?
`((lambda ,(cdr args) ,@body)))
- (if doc-string?
- `(lambda ,args ,doc-string? ,@body)
- `(lambda ,args ,@body))))
+ `(lambda ,args
+ ,(format #f "~a\n~a" (cddr args) (or doc-string? ""))
+ ,@body)))
(set! signature (map (lambda (pred)
(if (pair? pred)