#2103 Ability to map extensions for syntax highlighting in config

This commit is contained in:
Unknwon 2015-12-17 22:31:34 -05:00
parent 33a99d587a
commit 1e7e092992
5 changed files with 50 additions and 25 deletions

View file

@ -338,6 +338,10 @@ pl-PL = pl
bg-BG = bg bg-BG = bg
it-IT = it it-IT = it
; Extension mapping to highlight class
; e.g. .toml=ini
[highlight.mapping]
[other] [other]
SHOW_FOOTER_BRANDING = false SHOW_FOOTER_BRANDING = false
; Show version information about gogs and go in the footer ; Show version information about gogs and go in the footer

File diff suppressed because one or more lines are too long

View file

@ -43,11 +43,11 @@ const (
) )
var ( var (
// Build information. // Build information
BuildTime string BuildTime string
BuildGitHash string BuildGitHash string
// App settings. // App settings
AppVer string AppVer string
AppName string AppName string
AppUrl string AppUrl string
@ -55,7 +55,7 @@ var (
AppPath string AppPath string
AppDataPath = "data" AppDataPath = "data"
// Server settings. // Server settings
Protocol Scheme Protocol Scheme
Domain string Domain string
HttpAddr, HttpPort string HttpAddr, HttpPort string
@ -71,7 +71,7 @@ var (
EnableGzip bool EnableGzip bool
LandingPageUrl LandingPage LandingPageUrl LandingPage
// Security settings. // Security settings
InstallLock bool InstallLock bool
SecretKey string SecretKey string
LogInRememberDays int LogInRememberDays int
@ -79,13 +79,13 @@ var (
CookieRememberName string CookieRememberName string
ReverseProxyAuthUser string ReverseProxyAuthUser string
// Database settings. // Database settings
UseSQLite3 bool UseSQLite3 bool
UseMySQL bool UseMySQL bool
UsePostgreSQL bool UsePostgreSQL bool
UseTiDB bool UseTiDB bool
// Webhook settings. // Webhook settings
Webhook struct { Webhook struct {
QueueLength int QueueLength int
DeliverTimeout int DeliverTimeout int
@ -94,7 +94,7 @@ var (
PagingNum int PagingNum int
} }
// Repository settings. // Repository settings
Repository struct { Repository struct {
AnsiCharset string AnsiCharset string
ForcePrivate bool ForcePrivate bool
@ -104,7 +104,7 @@ var (
RepoRootPath string RepoRootPath string
ScriptType string ScriptType string
// UI settings. // UI settings
ExplorePagingNum int ExplorePagingNum int
IssuePagingNum int IssuePagingNum int
FeedMaxCommitNum int FeedMaxCommitNum int
@ -113,47 +113,47 @@ var (
AdminNoticePagingNum int AdminNoticePagingNum int
AdminOrgPagingNum int AdminOrgPagingNum int
// Markdown sttings. // Markdown sttings
Markdown struct { Markdown struct {
EnableHardLineBreak bool EnableHardLineBreak bool
} }
// Picture settings. // Picture settings
PictureService string PictureService string
AvatarUploadPath string AvatarUploadPath string
GravatarSource string GravatarSource string
DisableGravatar bool DisableGravatar bool
// Log settings. // Log settings
LogRootPath string LogRootPath string
LogModes []string LogModes []string
LogConfigs []string LogConfigs []string
// Attachment settings. // Attachment settings
AttachmentPath string AttachmentPath string
AttachmentAllowedTypes string AttachmentAllowedTypes string
AttachmentMaxSize int64 AttachmentMaxSize int64
AttachmentMaxFiles int AttachmentMaxFiles int
AttachmentEnabled bool AttachmentEnabled bool
// Time settings. // Time settings
TimeFormat string TimeFormat string
// Cache settings. // Cache settings
CacheAdapter string CacheAdapter string
CacheInternal int CacheInternal int
CacheConn string CacheConn string
// Session settings. // Session settings
SessionConfig session.Options SessionConfig session.Options
// Git settings. // Git settings
Git struct { Git struct {
MaxGitDiffLines int MaxGitDiffLines int
GcArgs []string `delim:" "` GcArgs []string `delim:" "`
} }
// Cron tasks. // Cron tasks
Cron struct { Cron struct {
UpdateMirror struct { UpdateMirror struct {
Enabled bool Enabled bool
@ -174,17 +174,19 @@ var (
} `ini:"cron.check_repo_stats"` } `ini:"cron.check_repo_stats"`
} }
// I18n settings. // I18n settings
Langs, Names []string Langs, Names []string
dateLangs map[string]string dateLangs map[string]string
// Other settings. // Highlight settings are loaded in modules/template/hightlight.go
// Other settings
ShowFooterBranding bool ShowFooterBranding bool
ShowFooterVersion bool ShowFooterVersion bool
// Global setting objects. // Global setting objects
Cfg *ini.File Cfg *ini.File
CustomPath string // Custom directory path. CustomPath string // Custom directory path
CustomConf string CustomConf string
ProdMode bool ProdMode bool
RunUser string RunUser string

View file

@ -7,6 +7,8 @@ package template
import ( import (
"path" "path"
"strings" "strings"
"github.com/gogits/gogs/modules/setting"
) )
var ( var (
@ -16,13 +18,13 @@ var (
"copying": true, "copying": true,
} }
// File names that are representing highlight class. // File names that are representing highlight classes.
highlightFileNames = map[string]bool{ highlightFileNames = map[string]bool{
"dockerfile": true, "dockerfile": true,
"makefile": true, "makefile": true,
} }
// Extensions that are same as highlight class. // Extensions that are same as highlight classes.
highlightExts = map[string]bool{ highlightExts = map[string]bool{
".arm": true, ".arm": true,
".as": true, ".as": true,
@ -57,8 +59,18 @@ var (
".ts": true, ".ts": true,
".vb": 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 // FileNameToHighlightClass returns the best match for highlight class name
// based on the rule of highlight.js. // based on the rule of highlight.js.
func FileNameToHighlightClass(fname string) string { func FileNameToHighlightClass(fname string) string {
@ -76,5 +88,10 @@ func FileNameToHighlightClass(fname string) string {
return ext[1:] return ext[1:]
} }
name, ok := highlightMapping[ext]
if ok {
return name
}
return "" return ""
} }

View file

@ -28,6 +28,7 @@ import (
"github.com/gogits/gogs/modules/middleware" "github.com/gogits/gogs/modules/middleware"
"github.com/gogits/gogs/modules/setting" "github.com/gogits/gogs/modules/setting"
"github.com/gogits/gogs/modules/ssh" "github.com/gogits/gogs/modules/ssh"
"github.com/gogits/gogs/modules/template"
"github.com/gogits/gogs/modules/user" "github.com/gogits/gogs/modules/user"
) )
@ -55,6 +56,7 @@ func NewServices() {
// GlobalInit is for global configuration reload-able. // GlobalInit is for global configuration reload-able.
func GlobalInit() { func GlobalInit() {
setting.NewContext() setting.NewContext()
template.NewContext()
log.Trace("Custom path: %s", setting.CustomPath) log.Trace("Custom path: %s", setting.CustomPath)
log.Trace("Log path: %s", setting.LogRootPath) log.Trace("Log path: %s", setting.LogRootPath)
models.LoadConfigs() models.LoadConfigs()