mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	#2103 Ability to map extensions for syntax highlighting in config
This commit is contained in:
		@@ -338,6 +338,10 @@ pl-PL = pl
 | 
			
		||||
bg-BG = bg
 | 
			
		||||
it-IT = it
 | 
			
		||||
 | 
			
		||||
; Extension mapping to highlight class
 | 
			
		||||
; e.g. .toml=ini
 | 
			
		||||
[highlight.mapping]
 | 
			
		||||
 | 
			
		||||
[other]
 | 
			
		||||
SHOW_FOOTER_BRANDING = false
 | 
			
		||||
; Show version information about gogs and go in the footer
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -43,11 +43,11 @@ const (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	// Build information.
 | 
			
		||||
	// Build information
 | 
			
		||||
	BuildTime    string
 | 
			
		||||
	BuildGitHash string
 | 
			
		||||
 | 
			
		||||
	// App settings.
 | 
			
		||||
	// App settings
 | 
			
		||||
	AppVer      string
 | 
			
		||||
	AppName     string
 | 
			
		||||
	AppUrl      string
 | 
			
		||||
@@ -55,7 +55,7 @@ var (
 | 
			
		||||
	AppPath     string
 | 
			
		||||
	AppDataPath = "data"
 | 
			
		||||
 | 
			
		||||
	// Server settings.
 | 
			
		||||
	// Server settings
 | 
			
		||||
	Protocol           Scheme
 | 
			
		||||
	Domain             string
 | 
			
		||||
	HttpAddr, HttpPort string
 | 
			
		||||
@@ -71,7 +71,7 @@ var (
 | 
			
		||||
	EnableGzip         bool
 | 
			
		||||
	LandingPageUrl     LandingPage
 | 
			
		||||
 | 
			
		||||
	// Security settings.
 | 
			
		||||
	// Security settings
 | 
			
		||||
	InstallLock          bool
 | 
			
		||||
	SecretKey            string
 | 
			
		||||
	LogInRememberDays    int
 | 
			
		||||
@@ -79,13 +79,13 @@ var (
 | 
			
		||||
	CookieRememberName   string
 | 
			
		||||
	ReverseProxyAuthUser string
 | 
			
		||||
 | 
			
		||||
	// Database settings.
 | 
			
		||||
	// Database settings
 | 
			
		||||
	UseSQLite3    bool
 | 
			
		||||
	UseMySQL      bool
 | 
			
		||||
	UsePostgreSQL bool
 | 
			
		||||
	UseTiDB       bool
 | 
			
		||||
 | 
			
		||||
	// Webhook settings.
 | 
			
		||||
	// Webhook settings
 | 
			
		||||
	Webhook struct {
 | 
			
		||||
		QueueLength    int
 | 
			
		||||
		DeliverTimeout int
 | 
			
		||||
@@ -94,7 +94,7 @@ var (
 | 
			
		||||
		PagingNum      int
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Repository settings.
 | 
			
		||||
	// Repository settings
 | 
			
		||||
	Repository struct {
 | 
			
		||||
		AnsiCharset            string
 | 
			
		||||
		ForcePrivate           bool
 | 
			
		||||
@@ -104,7 +104,7 @@ var (
 | 
			
		||||
	RepoRootPath string
 | 
			
		||||
	ScriptType   string
 | 
			
		||||
 | 
			
		||||
	// UI settings.
 | 
			
		||||
	// UI settings
 | 
			
		||||
	ExplorePagingNum     int
 | 
			
		||||
	IssuePagingNum       int
 | 
			
		||||
	FeedMaxCommitNum     int
 | 
			
		||||
@@ -113,47 +113,47 @@ var (
 | 
			
		||||
	AdminNoticePagingNum int
 | 
			
		||||
	AdminOrgPagingNum    int
 | 
			
		||||
 | 
			
		||||
	// Markdown sttings.
 | 
			
		||||
	// Markdown sttings
 | 
			
		||||
	Markdown struct {
 | 
			
		||||
		EnableHardLineBreak bool
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Picture settings.
 | 
			
		||||
	// Picture settings
 | 
			
		||||
	PictureService   string
 | 
			
		||||
	AvatarUploadPath string
 | 
			
		||||
	GravatarSource   string
 | 
			
		||||
	DisableGravatar  bool
 | 
			
		||||
 | 
			
		||||
	// Log settings.
 | 
			
		||||
	// Log settings
 | 
			
		||||
	LogRootPath string
 | 
			
		||||
	LogModes    []string
 | 
			
		||||
	LogConfigs  []string
 | 
			
		||||
 | 
			
		||||
	// Attachment settings.
 | 
			
		||||
	// Attachment settings
 | 
			
		||||
	AttachmentPath         string
 | 
			
		||||
	AttachmentAllowedTypes string
 | 
			
		||||
	AttachmentMaxSize      int64
 | 
			
		||||
	AttachmentMaxFiles     int
 | 
			
		||||
	AttachmentEnabled      bool
 | 
			
		||||
 | 
			
		||||
	// Time settings.
 | 
			
		||||
	// Time settings
 | 
			
		||||
	TimeFormat string
 | 
			
		||||
 | 
			
		||||
	// Cache settings.
 | 
			
		||||
	// Cache settings
 | 
			
		||||
	CacheAdapter  string
 | 
			
		||||
	CacheInternal int
 | 
			
		||||
	CacheConn     string
 | 
			
		||||
 | 
			
		||||
	// Session settings.
 | 
			
		||||
	// Session settings
 | 
			
		||||
	SessionConfig session.Options
 | 
			
		||||
 | 
			
		||||
	// Git settings.
 | 
			
		||||
	// Git settings
 | 
			
		||||
	Git struct {
 | 
			
		||||
		MaxGitDiffLines int
 | 
			
		||||
		GcArgs          []string `delim:" "`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Cron tasks.
 | 
			
		||||
	// Cron tasks
 | 
			
		||||
	Cron struct {
 | 
			
		||||
		UpdateMirror struct {
 | 
			
		||||
			Enabled    bool
 | 
			
		||||
@@ -174,17 +174,19 @@ var (
 | 
			
		||||
		} `ini:"cron.check_repo_stats"`
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// I18n settings.
 | 
			
		||||
	// I18n settings
 | 
			
		||||
	Langs, Names []string
 | 
			
		||||
	dateLangs    map[string]string
 | 
			
		||||
 | 
			
		||||
	// Other settings.
 | 
			
		||||
	// Highlight settings are loaded in modules/template/hightlight.go
 | 
			
		||||
 | 
			
		||||
	// Other settings
 | 
			
		||||
	ShowFooterBranding bool
 | 
			
		||||
	ShowFooterVersion  bool
 | 
			
		||||
 | 
			
		||||
	// Global setting objects.
 | 
			
		||||
	// Global setting objects
 | 
			
		||||
	Cfg          *ini.File
 | 
			
		||||
	CustomPath   string // Custom directory path.
 | 
			
		||||
	CustomPath   string // Custom directory path
 | 
			
		||||
	CustomConf   string
 | 
			
		||||
	ProdMode     bool
 | 
			
		||||
	RunUser      string
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,8 @@ package template
 | 
			
		||||
import (
 | 
			
		||||
	"path"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
@@ -16,13 +18,13 @@ var (
 | 
			
		||||
		"copying": true,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// File names that are representing highlight class.
 | 
			
		||||
	// File names that are representing highlight classes.
 | 
			
		||||
	highlightFileNames = map[string]bool{
 | 
			
		||||
		"dockerfile": true,
 | 
			
		||||
		"makefile":   true,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Extensions that are same as highlight class.
 | 
			
		||||
	// Extensions that are same as highlight classes.
 | 
			
		||||
	highlightExts = map[string]bool{
 | 
			
		||||
		".arm":    true,
 | 
			
		||||
		".as":     true,
 | 
			
		||||
@@ -57,8 +59,18 @@ var (
 | 
			
		||||
		".ts":     true,
 | 
			
		||||
		".vb":     true,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Extensions that are not same as highlight classes.
 | 
			
		||||
	highlightMapping = map[string]string{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func NewContext() {
 | 
			
		||||
	keys := setting.Cfg.Section("highlight.mapping").Keys()
 | 
			
		||||
	for i := range keys {
 | 
			
		||||
		highlightMapping[keys[i].Name()] = keys[i].Value()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FileNameToHighlightClass returns the best match for highlight class name
 | 
			
		||||
// based on the rule of highlight.js.
 | 
			
		||||
func FileNameToHighlightClass(fname string) string {
 | 
			
		||||
@@ -76,5 +88,10 @@ func FileNameToHighlightClass(fname string) string {
 | 
			
		||||
		return ext[1:]
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	name, ok := highlightMapping[ext]
 | 
			
		||||
	if ok {
 | 
			
		||||
		return name
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,6 +28,7 @@ import (
 | 
			
		||||
	"github.com/gogits/gogs/modules/middleware"
 | 
			
		||||
	"github.com/gogits/gogs/modules/setting"
 | 
			
		||||
	"github.com/gogits/gogs/modules/ssh"
 | 
			
		||||
	"github.com/gogits/gogs/modules/template"
 | 
			
		||||
	"github.com/gogits/gogs/modules/user"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -55,6 +56,7 @@ func NewServices() {
 | 
			
		||||
// GlobalInit is for global configuration reload-able.
 | 
			
		||||
func GlobalInit() {
 | 
			
		||||
	setting.NewContext()
 | 
			
		||||
	template.NewContext()
 | 
			
		||||
	log.Trace("Custom path: %s", setting.CustomPath)
 | 
			
		||||
	log.Trace("Log path: %s", setting.LogRootPath)
 | 
			
		||||
	models.LoadConfigs()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user