diff --git a/Makefile b/Makefile index 971942f..56bae84 100644 --- a/Makefile +++ b/Makefile @@ -198,7 +198,7 @@ member-parser.import.scm: $(MEMBER-PARSER-SOURCES) MEMBER-PRINT-SOURCES=member-print.scm dictionary.import.scm \ member-record.import.scm month.import.scm utils.import.scm \ - table.import.scm + table.import.scm listing.import.scm ansi.import.scm member-print.so: member-print.o member-print.o: member-print.import.scm diff --git a/member-print.scm b/member-print.scm index 3fdf4b5..27ca6f9 100644 --- a/member-print.scm +++ b/member-print.scm @@ -31,6 +31,7 @@ ( print-member-info print-member-table + print-member-source ) (import scheme @@ -42,7 +43,9 @@ member-record month utils - table) + table + listing + ansi) ;; Prints human-readable information (define (print-member-info mr) @@ -116,4 +119,19 @@ (result (filter identity (append head body)))) (print (table->string result #:table-border #t #:row-border #t #:col-border #t)))) + ;; Nicely prints the member source with any errors recorded. + (define (print-member-source mr) + (let* ((lines (dict-ref mr 'source mr)) + (file-name (dict-ref mr 'file-name)) + (hls (dict-ref mr 'highlights))) + (print file-name ":") + (print-source-listing + lines + hls + -1 + a:error a:default + "" "" ; Not used + "..." ; Not used + ))) + ) diff --git a/member-record.scm b/member-record.scm index ba2d538..fb92926 100644 --- a/member-record.scm +++ b/member-record.scm @@ -244,7 +244,7 @@ ((#\I) (number->string (member-record-info mr 'id))) ((#\S) (number->string (member-suspended-months mr))) ((#\E) - (let ((n (length (member-record-info mr 'highlights '())))) + (let ((n (length (dict-ref mr 'highlights '())))) (if (<= n 2) "" (sprintf "[~A]" (- n 2)))))