mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 13:28:25 +00:00 
			
		
		
		
	* 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 <me@silverwind.io> * code review * copy/paste error * Use const for highlight size limit * Update web_src/less/_repository.less Co-authored-by: Lauris BH <lauris@nix.lv> * 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 <me@silverwind.io> Co-authored-by: Lauris BH <lauris@nix.lv>
		
			
				
	
	
		
			55 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
		
			Vendored
		
	
	
	
package m
 | 
						|
 | 
						|
import (
 | 
						|
	. "github.com/alecthomas/chroma" // nolint
 | 
						|
	"github.com/alecthomas/chroma/lexers/internal"
 | 
						|
)
 | 
						|
 | 
						|
// MySQL lexer.
 | 
						|
var MySQL = internal.Register(MustNewLexer(
 | 
						|
	&Config{
 | 
						|
		Name:            "MySQL",
 | 
						|
		Aliases:         []string{"mysql"},
 | 
						|
		Filenames:       []string{"*.sql"},
 | 
						|
		MimeTypes:       []string{"text/x-mysql"},
 | 
						|
		NotMultiline:    true,
 | 
						|
		CaseInsensitive: true,
 | 
						|
	},
 | 
						|
	Rules{
 | 
						|
		"root": {
 | 
						|
			{`\s+`, Text, nil},
 | 
						|
			{`(#|--\s+).*\n?`, CommentSingle, nil},
 | 
						|
			{`/\*`, CommentMultiline, Push("multiline-comments")},
 | 
						|
			{`[0-9]+`, LiteralNumberInteger, nil},
 | 
						|
			{`[0-9]*\.[0-9]+(e[+-][0-9]+)`, LiteralNumberFloat, nil},
 | 
						|
			{`((?:_[a-z0-9]+)?)(')`, ByGroups(LiteralStringAffix, LiteralStringSingle), Push("string")},
 | 
						|
			{`((?:_[a-z0-9]+)?)(")`, ByGroups(LiteralStringAffix, LiteralStringDouble), Push("double-string")},
 | 
						|
			{"[+*/<>=~!@#%^&|`?-]", Operator, nil},
 | 
						|
			{`\b(tinyint|smallint|mediumint|int|integer|bigint|date|datetime|time|bit|bool|tinytext|mediumtext|longtext|text|tinyblob|mediumblob|longblob|blob|float|double|double\s+precision|real|numeric|dec|decimal|timestamp|year|char|varchar|varbinary|varcharacter|enum|set)(\b\s*)(\()?`, ByGroups(KeywordType, Text, Punctuation), nil},
 | 
						|
			{`\b(add|all|alter|analyze|and|as|asc|asensitive|before|between|bigint|binary|blob|both|by|call|cascade|case|change|char|character|check|collate|column|condition|constraint|continue|convert|create|cross|current_date|current_time|current_timestamp|current_user|cursor|database|databases|day_hour|day_microsecond|day_minute|day_second|dec|decimal|declare|default|delayed|delete|desc|describe|deterministic|distinct|distinctrow|div|double|drop|dual|each|else|elseif|enclosed|escaped|exists|exit|explain|fetch|flush|float|float4|float8|for|force|foreign|from|fulltext|grant|group|having|high_priority|hour_microsecond|hour_minute|hour_second|identified|if|ignore|in|index|infile|inner|inout|insensitive|insert|int|int1|int2|int3|int4|int8|integer|interval|into|is|iterate|join|key|keys|kill|leading|leave|left|like|limit|lines|load|localtime|localtimestamp|lock|long|loop|low_priority|match|minute_microsecond|minute_second|mod|modifies|natural|no_write_to_binlog|not|numeric|on|optimize|option|optionally|or|order|out|outer|outfile|precision|primary|privileges|procedure|purge|raid0|read|reads|real|references|regexp|release|rename|repeat|replace|require|restrict|return|revoke|right|rlike|schema|schemas|second_microsecond|select|sensitive|separator|set|show|smallint|soname|spatial|specific|sql|sql_big_result|sql_calc_found_rows|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|starting|straight_join|table|terminated|then|to|trailing|trigger|undo|union|unique|unlock|unsigned|update|usage|use|user|using|utc_date|utc_time|utc_timestamp|values|varying|when|where|while|with|write|x509|xor|year_month|zerofill)\b`, Keyword, nil},
 | 
						|
			{`\b(auto_increment|engine|charset|tables)\b`, KeywordPseudo, nil},
 | 
						|
			{`(true|false|null)`, NameConstant, nil},
 | 
						|
			{`([a-z_]\w*)(\s*)(\()`, ByGroups(NameFunction, Text, Punctuation), nil},
 | 
						|
			{`[a-z_]\w*`, Name, nil},
 | 
						|
			{`@[a-z0-9]*[._]*[a-z0-9]*`, NameVariable, nil},
 | 
						|
			{`[;:()\[\],.]`, Punctuation, nil},
 | 
						|
		},
 | 
						|
		"multiline-comments": {
 | 
						|
			{`/\*`, CommentMultiline, Push("multiline-comments")},
 | 
						|
			{`\*/`, CommentMultiline, Pop(1)},
 | 
						|
			{`[^/*]+`, CommentMultiline, nil},
 | 
						|
			{`[/*]`, CommentMultiline, nil},
 | 
						|
		},
 | 
						|
		"string": {
 | 
						|
			{`[^']+`, LiteralStringSingle, nil},
 | 
						|
			{`''`, LiteralStringSingle, nil},
 | 
						|
			{`'`, LiteralStringSingle, Pop(1)},
 | 
						|
		},
 | 
						|
		"double-string": {
 | 
						|
			{`[^"]+`, LiteralStringDouble, nil},
 | 
						|
			{`""`, LiteralStringDouble, nil},
 | 
						|
			{`"`, LiteralStringDouble, Pop(1)},
 | 
						|
		},
 | 
						|
	},
 | 
						|
))
 |