]> source.dussan.org Git - gitea.git/commitdiff
Allow custom highlight mapping beyond file extensions (#15808)
authormlpo <mlpo@mlpo.fr>
Thu, 13 May 2021 09:31:23 +0000 (11:31 +0200)
committerGitHub <noreply@github.com>
Thu, 13 May 2021 09:31:23 +0000 (12:31 +0300)
Co-authored-by: Lauris BH <lauris@nix.lv>
modules/highlight/highlight.go

index 914ba8210ebf6d2bc6ce1158776f6975dba9f351..a46499691e57019bbf2045255fdf576021e96b72 100644 (file)
@@ -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,14 +67,17 @@ 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.Fallback
+               lexer = lexers.Match(fileName)
+               if lexer == nil {
+                       lexer = lexers.Fallback
+               }
        }
 
        iterator, err := lexer.Tokenise(nil, string(code))
@@ -114,17 +118,20 @@ 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)
        }
 
-       language := analyze.GetCodeLanguage(fileName, code)
-
-       lexer := lexers.Get(language)
        if lexer == nil {
-               lexer = lexers.Match(fileName)
+               language := analyze.GetCodeLanguage(fileName, code)
+
+               lexer = lexers.Get(language)
                if lexer == nil {
-                       lexer = lexers.Fallback
+                       lexer = lexers.Match(fileName)
+                       if lexer == nil {
+                               lexer = lexers.Fallback
+                       }
                }
        }