From 83d0917e7abe8ff051baeaab003e5aa6c09f1b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Mon, 15 May 2023 19:40:24 +0200 Subject: [PATCH] Integrate git blame with highlighting. --- src/Makefile | 3 ++- src/listing.scm | 7 ++++++- src/members-print.scm | 2 +- src/util-git.scm | 13 ++++++++++--- src/util-time.scm | 11 ++++++++--- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/Makefile b/src/Makefile index b17b714..9f791b9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -355,7 +355,8 @@ specification.o: specification.import.scm specification.import.scm: $(SPECIFICATION-SOURCES) UTIL-GIT-SOURCES=util-git.scm util-io.import.scm \ - util-dict-list.import.scm util-parser.import.scm + util-dict-list.import.scm util-parser.import.scm \ + util-time.import.scm util-git.o: util-git.import.scm util-git.import.scm: $(UTIL-GIT-SOURCES) diff --git a/src/listing.scm b/src/listing.scm index 96be059..fae2f82 100644 --- a/src/listing.scm +++ b/src/listing.scm @@ -199,7 +199,12 @@ post-str) "")) (else - "xxx"))) + (format "~A~A ~A" + pre-str + (if (ldict? line) + (ldict-ref line key "--") + "**") + post-str)))) keys) rtbl))) (loop (cdr lines) diff --git a/src/members-print.scm b/src/members-print.scm index 534c72f..8473bba 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -180,7 +180,7 @@ blame hls #:context -1 - #:keys '(commit number line comment) + #:keys '(committer-time number line comment) ))) ;; Prints nicely printed payments diff --git a/src/util-git.scm b/src/util-git.scm index 0ff0ad2..cb187f3 100644 --- a/src/util-git.scm +++ b/src/util-git.scm @@ -38,7 +38,8 @@ (chicken string) util-io util-dict-list - util-parser) + util-parser + util-time) ;; Valid git operating modes (define git-modes @@ -128,9 +129,15 @@ blames)))) (else ;; Any header - (let ((kv (parser-parse-line line))) + (let* ((kv (parser-parse-line line)) + (k (car kv)) + (v (cdr kv)) + (v1 (case k + ((committer-time) + (seconds->iso-date-string (string->number v))) + (else v)))) (loop (cdr lines) - (ldict-set blame (car kv) (cdr kv)) + (ldict-set blame k v1) blames)))))))) ) diff --git a/src/util-time.scm b/src/util-time.scm index 1552dad..dda744b 100644 --- a/src/util-time.scm +++ b/src/util-time.scm @@ -29,6 +29,7 @@ util-time ( current-util-milliseconds + seconds->iso-date-string today/iso ) @@ -49,9 +50,9 @@ (else (current-process-milliseconds)))) - ;; Returns today as YYYY-MM-DD string - (define (today/iso) - (let ((d (seconds->local-time))) + ;; Converts seconds since epoch to ISO date string + (define (seconds->iso-date-string . args) + (let ((d (apply seconds->local-time args))) (format "~A-~A-~A" (number->string (+ 1900 (vector-ref d 5))) @@ -64,5 +65,9 @@ (+ 100 (vector-ref d 3))) 1)))) + ;; Returns today as YYYY-MM-DD string + (define (today/iso) + (seconds->iso-date-string)) + )