From 154f68bfd9ab4660dc764dbed6190289082b5c94 Mon Sep 17 00:00:00 2001 From: "Gabriel A. Giovanini" Date: Sat, 8 Feb 2025 22:26:39 +0100 Subject: feat: Add syntax highlight to diff --- pkg/handler/git/handler.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'pkg/handler/git/handler.go') diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go index 9c7ba5b..80f7de6 100644 --- a/pkg/handler/git/handler.go +++ b/pkg/handler/git/handler.go @@ -361,12 +361,31 @@ func (g *GitHandler) Commit(w http.ResponseWriter, r *http.Request) error { return err } + lexer := lexers.Get("diff") + style := styles.Get(g.config.GetSyntaxHighlight()) + + formatter := html.New( + html.WithLineNumbers(true), + html.WithLinkableLineNumbers(true, "L"), + ) + + iterator, err := lexer.Tokenise(nil, diff) + if err != nil { + return err + } + + var code bytes.Buffer + err = formatter.Format(&code, style, iterator) + if err != nil { + return err + } + gitList := &templates.GitItemPage{ Name: name, Ref: ref, GitItemBase: &templates.GitItemCommitPage{ Commit: commit, - Diff: diff, + Diff: code.Bytes(), }, } templates.WritePageTemplate(w, gitList, r.Context()) -- cgit v1.2.3