From af7ffaa2798148e2a1b249da2330200bc032d7b1 Mon Sep 17 00:00:00 2001 From: mrsdizzie Date: Tue, 30 Jun 2020 17:34:03 -0400 Subject: Server-side syntax highlighting for all code (#12047) * Server-side syntax hilighting for all code This PR does a few things: * Remove all traces of highlight.js * Use chroma library to provide fast syntax hilighting directly on the server * Provide syntax hilighting for diffs * Re-style both unified and split diffs views * Add custom syntax hilighting styling for both regular and arc-green Fixes #7729 Fixes #10157 Fixes #11825 Fixes #7728 Fixes #3872 Fixes #3682 And perhaps gets closer to #9553 * fix line marker * fix repo search * Fix single line select * properly load settings * npm uninstall highlight.js * review suggestion * code review * forgot to call function * fix test * Apply suggestions from code review suggestions from @silverwind thanks Co-authored-by: silverwind * code review * copy/paste error * Use const for highlight size limit * Update web_src/less/_repository.less Co-authored-by: Lauris BH * update size limit to 1MB and other styling tweaks * fix highlighting for certain diff sections * fix test * add worker back as suggested Co-authored-by: silverwind Co-authored-by: Lauris BH --- modules/indexer/code/search.go | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'modules/indexer') diff --git a/modules/indexer/code/search.go b/modules/indexer/code/search.go index ca57b3ff88..29ed416541 100644 --- a/modules/indexer/code/search.go +++ b/modules/indexer/code/search.go @@ -6,8 +6,6 @@ package code import ( "bytes" - "html" - gotemplate "html/template" "strings" "code.gitea.io/gitea/modules/highlight" @@ -23,9 +21,8 @@ type Result struct { UpdatedUnix timeutil.TimeStamp Language string Color string - HighlightClass string LineNumbers []int - FormattedLines gotemplate.HTML + FormattedLines string } func indices(content string, selectionStartIndex, selectionEndIndex int) (int, int) { @@ -80,19 +77,13 @@ func searchResult(result *SearchResult, startIndex, endIndex int) (*Result, erro openActiveIndex := util.Max(result.StartIndex-index, 0) closeActiveIndex := util.Min(result.EndIndex-index, len(line)) err = writeStrings(&formattedLinesBuffer, - `
  • `, - html.EscapeString(line[:openActiveIndex]), - ``, - html.EscapeString(line[openActiveIndex:closeActiveIndex]), - ``, - html.EscapeString(line[closeActiveIndex:]), - `
  • `, + line[:openActiveIndex], + line[openActiveIndex:closeActiveIndex], + line[closeActiveIndex:], ) } else { err = writeStrings(&formattedLinesBuffer, - `
  • `, - html.EscapeString(line), - `
  • `, + line, ) } if err != nil { @@ -109,9 +100,8 @@ func searchResult(result *SearchResult, startIndex, endIndex int) (*Result, erro UpdatedUnix: result.UpdatedUnix, Language: result.Language, Color: result.Color, - HighlightClass: highlight.FileNameToHighlightClass(result.Filename), LineNumbers: lineNumbers, - FormattedLines: gotemplate.HTML(formattedLinesBuffer.String()), + FormattedLines: highlight.Code(result.Filename, formattedLinesBuffer.String()), }, nil } -- cgit v1.2.3