From 1ba588c90ee1d88bf1741bbcf07abf02f98013a5 Mon Sep 17 00:00:00 2001 From: Marcel Herrguth Date: Thu, 18 Jun 2026 22:27:34 +0200 Subject: [PATCH] Closes #479 - Support Syntax highlighting for Salesforce Apex language (#725) * Closes #479 - Support Syntax highlighting for Salesforce Apex language * Linter --- internal/render/apex_test.go | 19 +++++ internal/render/highlight.go | 15 ++++ internal/render/lexers/apex.xml | 137 ++++++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 internal/render/apex_test.go create mode 100644 internal/render/lexers/apex.xml diff --git a/internal/render/apex_test.go b/internal/render/apex_test.go new file mode 100644 index 0000000..9398aad --- /dev/null +++ b/internal/render/apex_test.go @@ -0,0 +1,19 @@ +package render + +import ( + "github.com/alecthomas/chroma/v2/lexers" + "testing" +) + +func TestApexLexer(t *testing.T) { + for _, fname := range []string{"MyTrigger.trigger", "script.apex"} { + l := lexers.Get(fname) + if l == nil { + t.Errorf("no lexer for %s", fname) + } else if l.Config().Name != "Apex" { + t.Errorf("%s => got lexer %q, want Apex", fname, l.Config().Name) + } else { + t.Logf("OK: %s => %s", fname, l.Config().Name) + } + } +} diff --git a/internal/render/highlight.go b/internal/render/highlight.go index 3b85669..5863b0c 100644 --- a/internal/render/highlight.go +++ b/internal/render/highlight.go @@ -3,8 +3,10 @@ package render import ( "bufio" "bytes" + "embed" "encoding/base64" "fmt" + "io/fs" "github.com/alecthomas/chroma/v2" "github.com/alecthomas/chroma/v2/formatters/html" @@ -14,6 +16,19 @@ import ( "github.com/thomiceli/opengist/internal/git" ) +//go:embed lexers/*.xml +var customLexers embed.FS + +func init() { + paths, err := fs.Glob(customLexers, "lexers/*.xml") + if err != nil { + panic(err) + } + for _, path := range paths { + lexers.Register(chroma.MustNewXMLLexer(customLexers, path)) + } +} + type HighlightedFile struct { *git.File Type string `json:"type"` diff --git a/internal/render/lexers/apex.xml b/internal/render/lexers/apex.xml new file mode 100644 index 0000000..ff6f50b --- /dev/null +++ b/internal/render/lexers/apex.xml @@ -0,0 +1,137 @@ + + + Apex + apex + *.trigger + *.apex + text/x-apex + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +