(if (defined? 'set-debug-cell-accesses!)
(set-debug-cell-accesses! #f))
-;;(set-debug-cell-accesses! 5000)
+;(set-debug-cell-accesses! 1000)
(use-modules (ice-9 regex)
(ice-9 safe)
(ice-9 optargs)
(oop goops)
- (srfi srfi-1) ; lists
- (srfi srfi-13)) ; strings
+ (srfi srfi-1) ;; lists
+ (srfi srfi-13)) ;; strings
;; my display
(debug-enable 'backtrace)
(read-enable 'positions)))
-(define-public (line-column-location file line col)
- "Print an input location, including column number ."
- (string-append (number->string line) ":"
- (number->string col) " " file))
-
-(define-public (line-location file line col)
- "Print an input location, without column number ."
- (string-append (number->string line) " " file))
-
-(define-public point-and-click #f)
+;; initialize defaults.
+(ly:set-option 'command-line-settings
+ '((resolution . 90)
+ (preview-include-book-title . #t)
+ ))
(define-public tex-backend?
(member (ly:output-backend) '("texstr" "tex")))
"paper.scm"
"backend-library.scm"
+ "x11-color.scm"
+
;; must be after everything has been defined
"safe-lily.scm"))
protects))
outfile)))
+(define-public (tweak-grob-property grob sym val)
+ (set! (ly:grob-property grob sym) val))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
(define-public (lilypond-main files)
"Entry point for LilyPond."
- (let* ((failed '())
- (handler (lambda (key failed-file)
- (set! failed (append (list failed-file) failed)))))
- ;;(handler (lambda (key . arg) (set! failed (append arg failed)))))
- (for-each
- (lambda (f)
- (catch 'ly-file-failed
- (lambda () (ly:parse-file f))
- (lambda (x . args) (handler x f)))
- ;;(lambda (x) (handler x f)))
- (if #f
- (dump-gc-protects)))
- files)
-
+
+ (if (null? files)
+ (no-files-handler))
+
+ (let ((failed (lilypond-all files)))
(if (pair? failed)
- (ly:error (_ "failed files: ~S") (string-join failed))
+ (begin
+ (ly:error (_ "failed files: ~S") (string-join failed))
+ (exit 1))
(begin
;; HACK: be sure to exit with single newline
(ly:message "")
(exit 0)))))
-(define-public (tweak-grob-property grob sym val)
- (set! (ly:grob-property grob sym) val))
+(define (no-files-handler)
+ (ly:usage)
+ (exit 2))
+
+(define-public (lilypond-all files)
+ (let* ((failed '())
+ (handler (lambda (key failed-file)
+ (set! failed (append (list failed-file) failed)))))
+ ;;(handler (lambda (key . arg) (set! failed (append arg failed)))))
+ (for-each (lambda (x) (lilypond-file handler x)) files)))
+
+(define (lilypond-file handler file-name)
+ (catch 'ly-file-failed
+ (lambda () (ly:parse-file file-name))
+ (lambda (x . args) (handler x file-name)))
+ ;;(lambda (x) (handler x f)))
+ (if #f
+ (dump-gc-protects)))
+
+(use-modules (scm editor))
+
+(define-public (gui-main files)
+ (if (null? files) (gui-no-files-handler))
+ (let* ((base (basename (car files) ".ly"))
+ (log-name (string-append base ".log"))
+ (log-file (open-file log-name "w")))
+ (display "# -*-compilation-*-" log-file)
+ (newline log-file)
+ (ly:message (_ "Redirecting output to ~a...") log-name)
+ (ly:port-move (fileno (current-error-port)) log-file)
+ (if (null? (lilypond-all files))
+ (exit 0)
+ (begin
+ (system (get-editor-command log-name 0 0))
+ (exit 1)))))
+
+(define (gui-no-files-handler)
+ (let* ((input (string-append
+ (string-regexp-substitute
+ "share/lilypond/" "share/doc/lilypond-"
+ (getenv "LILYPONDPREFIX"))
+ "-1/input"))
+ (ly (string-append input "/" "Welcome to LilyPond.ly"))
+ (cmd (get-editor-command ly 0 0)))
+ (system cmd)))
+
+;; FIXME
+;; (define lilypond-main gui-main)