From 2bfb8bb5fdebb4ae02c83a271e8eb24bc68afec1 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Sun, 31 Jan 2016 14:19:02 -0200 Subject: [PATCH] Enable sintax highlighting on diff view. Close #733 --- models/git_diff.go | 9 +++++++++ modules/template/{ => highlight}/highlight.go | 2 +- public/css/gogs.css | 14 +++++++++++--- public/less/_base.less | 8 +++++++- routers/install.go | 4 ++-- routers/repo/commit.go | 1 + routers/repo/pull.go | 2 ++ routers/repo/view.go | 3 ++- templates/repo/diff_box.tmpl | 6 +++--- 9 files changed, 38 insertions(+), 11 deletions(-) rename modules/template/{ => highlight}/highlight.go (99%) diff --git a/models/git_diff.go b/models/git_diff.go index e8bfe61027..9796ef59f8 100644 --- a/models/git_diff.go +++ b/models/git_diff.go @@ -26,6 +26,7 @@ import ( "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/process" + "github.com/gogits/gogs/modules/template/highlight" ) type DiffLineType uint8 @@ -160,12 +161,20 @@ type DiffFile struct { IsBin bool IsRenamed bool Sections []*DiffSection + HighlightClass string } func (diffFile *DiffFile) GetType() int { return int(diffFile.Type) } +func (diffFile *DiffFile) GetHighlightClass() string { + if diffFile.HighlightClass == "" { + diffFile.HighlightClass = highlight.FileNameToHighlightClass(diffFile.Name) + } + return diffFile.HighlightClass +} + type Diff struct { TotalAddition, TotalDeletion int Files []*DiffFile diff --git a/modules/template/highlight.go b/modules/template/highlight/highlight.go similarity index 99% rename from modules/template/highlight.go rename to modules/template/highlight/highlight.go index bd9813eef2..bbf08e0436 100644 --- a/modules/template/highlight.go +++ b/modules/template/highlight/highlight.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package template +package highlight import ( "path" diff --git a/public/css/gogs.css b/public/css/gogs.css index b3498d4b68..74a29e1375 100755 --- a/public/css/gogs.css +++ b/public/css/gogs.css @@ -12,10 +12,12 @@ body { img { border-radius: 3px; } -pre { +pre, +code { font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; } -pre.raw { +pre.raw, +code.raw { padding: 7px 12px; margin: 10px 0; background-color: #f8f8f8; @@ -25,7 +27,8 @@ pre.raw { line-height: 1.5; overflow: auto; } -pre.wrap { +pre.wrap, +code.wrap { white-space: pre-wrap; /* CSS 3 */ word-break: break-word; @@ -387,6 +390,11 @@ footer .container .links > *:first-child { width: 95%; } } +/* Overrides some styles of the Highlight.js plugin */ +.hljs { + background: inherit !important; + padding: 0 !important; +} .markdown { overflow: hidden; font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif; diff --git a/public/less/_base.less b/public/less/_base.less index 0322944442..1911d3cbbf 100644 --- a/public/less/_base.less +++ b/public/less/_base.less @@ -8,7 +8,7 @@ body { img { border-radius: 3px; } -pre { +pre, code { font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; &.raw { padding: 7px 12px; @@ -375,3 +375,9 @@ footer { width: 95%; } } + +/* Overrides some styles of the Highlight.js plugin */ +.hljs { + background: inherit !important; + padding: 0 !important; +} diff --git a/routers/install.go b/routers/install.go index 120aa46851..02bc6fd60c 100644 --- a/routers/install.go +++ b/routers/install.go @@ -28,7 +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/template/highlight" "github.com/gogits/gogs/modules/user" ) @@ -56,7 +56,7 @@ func NewServices() { // GlobalInit is for global configuration reload-able. func GlobalInit() { setting.NewContext() - template.NewContext() + highlight.NewContext() log.Trace("Custom path: %s", setting.CustomPath) log.Trace("Log path: %s", setting.LogRootPath) models.LoadConfigs() diff --git a/routers/repo/commit.go b/routers/repo/commit.go index c3fc4d177a..781c3da946 100644 --- a/routers/repo/commit.go +++ b/routers/repo/commit.go @@ -183,6 +183,7 @@ func Diff(ctx *middleware.Context) { ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "src", parents[0]) } ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(userName, repoName, "raw", commitID) + ctx.Data["RequireHighlightJS"] = true ctx.HTML(200, DIFF) } diff --git a/routers/repo/pull.go b/routers/repo/pull.go index e3500716d3..3240461c84 100644 --- a/routers/repo/pull.go +++ b/routers/repo/pull.go @@ -362,6 +362,7 @@ func ViewPullFiles(ctx *middleware.Context) { ctx.Data["SourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", endCommitID) ctx.Data["BeforeSourcePath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "src", startCommitID) ctx.Data["RawPath"] = setting.AppSubUrl + "/" + path.Join(headTarget, "raw", endCommitID) + ctx.Data["RequireHighlightJS"] = true ctx.HTML(200, PULL_FILES) } @@ -538,6 +539,7 @@ func CompareAndPullRequest(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("repo.pulls.compare_changes") ctx.Data["PageIsComparePull"] = true ctx.Data["IsDiffCompare"] = true + ctx.Data["RequireHighlightJS"] = true renderAttachmentSettings(ctx) headUser, headRepo, headGitRepo, prInfo, baseBranch, headBranch := ParseCompareInfo(ctx) diff --git a/routers/repo/view.go b/routers/repo/view.go index 25e312b1c1..6a4ad64642 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -19,6 +19,7 @@ import ( "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/middleware" "github.com/gogits/gogs/modules/template" + "github.com/gogits/gogs/modules/template/highlight" ) const ( @@ -79,7 +80,7 @@ func Home(ctx *middleware.Context) { ctx.Data["FileSize"] = blob.Size() ctx.Data["IsFile"] = true ctx.Data["FileName"] = blob.Name() - ctx.Data["HighlightClass"] = template.FileNameToHighlightClass(blob.Name()) + ctx.Data["HighlightClass"] = highlight.FileNameToHighlightClass(blob.Name()) ctx.Data["FileLink"] = rawLink + "/" + treename buf := make([]byte, 1024) diff --git a/templates/repo/diff_box.tmpl b/templates/repo/diff_box.tmpl index 4ea531c3c5..f96ebda52d 100644 --- a/templates/repo/diff_box.tmpl +++ b/templates/repo/diff_box.tmpl @@ -76,13 +76,13 @@ {{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}} -
{{if $line.LeftIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}
+
{{if $line.LeftIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}
{{if $line.RightIdx}}{{$line.RightIdx}}{{end}} -
{{if $line.RightIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}
+
{{if $line.RightIdx}}{{$section.GetComputedInlineDiffFor $line}}{{end}}
{{end}} @@ -104,7 +104,7 @@ {{end}} -
{{$section.GetComputedInlineDiffFor $line}}
+
{{$section.GetComputedInlineDiffFor $line}}
{{end}}