Allow custom highlight mapping beyond file extensions (#15808)
Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
parent
27b29ffb22
commit
52f8dcda43
|
@ -16,6 +16,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/analyze"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"github.com/alecthomas/chroma"
|
||||
"github.com/alecthomas/chroma/formatters/html"
|
||||
"github.com/alecthomas/chroma/lexers"
|
||||
"github.com/alecthomas/chroma/styles"
|
||||
|
@ -66,15 +67,18 @@ func Code(fileName, code string) string {
|
|||
htmlbuf := bytes.Buffer{}
|
||||
htmlw := bufio.NewWriter(&htmlbuf)
|
||||
|
||||
var lexer chroma.Lexer
|
||||
if val, ok := highlightMapping[filepath.Ext(fileName)]; ok {
|
||||
//change file name to one with mapped extension so we look that up instead
|
||||
fileName = "mapped." + val
|
||||
//use mapped value to find lexer
|
||||
lexer = lexers.Get(val)
|
||||
}
|
||||
|
||||
lexer := lexers.Match(fileName)
|
||||
if lexer == nil {
|
||||
lexer = lexers.Match(fileName)
|
||||
if lexer == nil {
|
||||
lexer = lexers.Fallback
|
||||
}
|
||||
}
|
||||
|
||||
iterator, err := lexer.Tokenise(nil, string(code))
|
||||
if err != nil {
|
||||
|
@ -114,19 +118,22 @@ func File(numLines int, fileName string, code []byte) map[int]string {
|
|||
htmlbuf := bytes.Buffer{}
|
||||
htmlw := bufio.NewWriter(&htmlbuf)
|
||||
|
||||
var lexer chroma.Lexer
|
||||
if val, ok := highlightMapping[filepath.Ext(fileName)]; ok {
|
||||
fileName = "test." + val
|
||||
lexer = lexers.Get(val)
|
||||
}
|
||||
|
||||
if lexer == nil {
|
||||
language := analyze.GetCodeLanguage(fileName, code)
|
||||
|
||||
lexer := lexers.Get(language)
|
||||
lexer = lexers.Get(language)
|
||||
if lexer == nil {
|
||||
lexer = lexers.Match(fileName)
|
||||
if lexer == nil {
|
||||
lexer = lexers.Fallback
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
iterator, err := lexer.Tokenise(nil, string(code))
|
||||
if err != nil {
|
||||
|
|
Loading…
Reference in a new issue