On showing diff/file, use the tab_width specified on .editorconfig, if any (#3241)

Closes #3182
This commit is contained in:
Andrey Nering 2016-08-11 21:07:09 -03:00 committed by 无闻
parent aa1fc30b89
commit dbed39ba05
9 changed files with 137 additions and 2 deletions

View file

@ -6,10 +6,12 @@ package context
import (
"fmt"
"io/ioutil"
"path"
"strings"
"github.com/Unknwon/com"
"gopkg.in/editorconfig/editorconfig-core-go.v1"
"gopkg.in/macaron.v1"
"github.com/gogits/git-module"
@ -69,6 +71,28 @@ func (r *Repository) HasAccess() bool {
return r.AccessMode >= models.ACCESS_MODE_READ
}
// GetEditorconfig returns the .editorconfig definition if found in the
// HEAD of the default repo branch.
func (r *Repository) GetEditorconfig() (*editorconfig.Editorconfig, error) {
commit, err := r.GitRepo.GetBranchCommit(r.Repository.DefaultBranch)
if err != nil {
return nil, err
}
treeEntry, err := commit.GetTreeEntryByPath(".editorconfig")
if err != nil {
return nil, err
}
reader, err := treeEntry.Blob().Data()
if err != nil {
return nil, err
}
data, err := ioutil.ReadAll(reader)
if err != nil {
return nil, err
}
return editorconfig.ParseBytes(data)
}
func RetrieveBaseRepo(ctx *Context, repo *models.Repository) {
// Non-fork repository will not return error in this method.
if err := repo.GetBaseRepo(); err != nil {