From 09953ff50f9461d1da5653556974e5e3f2880e18 Mon Sep 17 00:00:00 2001 From: Alec Thomas Date: Mon, 13 Nov 2023 07:56:30 +1100 Subject: [PATCH] fix: attempt to load lexer files before using Get() File loading runs after Get(), but Get() always succeeds so it would never load a file. --- cmd/chroma/main.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/cmd/chroma/main.go b/cmd/chroma/main.go index ce71b2102..29b84f81b 100644 --- a/cmd/chroma/main.go +++ b/cmd/chroma/main.go @@ -366,11 +366,19 @@ func selexer(path, contents string) (lexer chroma.Lexer, err error) { return lexers.Analyse(contents), nil } - if lexer := lexers.Get(cli.Lexer); lexer != nil { - return lexer, nil + if _, err := os.Stat(cli.Lexer); err == nil { + cwd, err := os.Getwd() + if err != nil { + return nil, err + } + path, err := filepath.Rel(cwd, cli.Lexer) + if err != nil { + return nil, err + } + return chroma.NewXMLLexer(os.DirFS("."), path) } - lexerPath, err := filepath.Abs(cli.Lexer) - return chroma.NewXMLLexer(os.DirFS("/"), lexerPath) + + return lexers.Get(cli.Lexer), nil } func format(ctx *kong.Context, w io.Writer, style *chroma.Style, it chroma.Iterator) {