From 06159627aacf70dfd605983f7c19dc5415d2a0ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 14 Mar 2023 16:57:20 +0100 Subject: [PATCH] Work on ignoring errors and giving warnings. --- member-file.scm | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/member-file.scm b/member-file.scm index 61e805d..26104fd 100644 --- a/member-file.scm +++ b/member-file.scm @@ -28,6 +28,8 @@ (module member-file ( + *member-file-context* + *member-file-check-syntax* load-member-file member-file-tests! ) @@ -54,6 +56,12 @@ ;; Configuration of error reporting (define *member-file-context* (make-parameter 3)) + ;; Tolerance to formal errors (invalid key or key without value): + ;; 'error - show source and exits with error + ;; 'warning - show source and error, continue + ;; 'quiet - ignore + (define *member-file-check-syntax* (make-parameter 'error)) + ;; Derived keys (define start/stop-keys-keys (map @@ -79,14 +87,18 @@ (car (string-chop l si))) l))) + ;; Reports error with highlighted source line(s), configured via the + ;; *member-file-check-syntax* parameter. (define (report-line-error file-name lines highlights message) - (print "Error in " file-name ": " message) - (newline) - (print-source-listing lines highlights - (*member-file-context*) - (ansi #:red #:bold) (ansi #:default) - "" "" "...") - (exit 1)) + (when (not (eq? (*member-file-check-syntax*) 'quiet)) + (print "Error in " file-name ": " message) + (newline) + (print-source-listing lines highlights + (*member-file-context*) + (ansi #:red #:bold) (ansi #:default) + "" "" "...")) + (when (eq? (*member-file-check-syntax*) 'error) + (exit 1))) ;; Parses given key-value line. Key is up to first space, value is the ;; rest of the line. If the line doesn't contain anything, returns #f.