Skip to content

Commit

Permalink
Only preview regular file < 1MB in nav mode.
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaq committed Oct 16, 2016
1 parent 2620318 commit a80e6d1
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions edit/navigation.go
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,13 @@ func newErrNavColumn(err error) *navColumn {
return nc
}

var ErrNotValidUTF8 = errors.New("not utf8")
const BigFileThreshold = 1024 * 1024

var (
ErrNotRegular = errors.New("no preview for non-regular file")
ErrTooBig = errors.New("no preview for big file")
ErrNotValidUTF8 = errors.New("no preview for non-utf8 file")
)

func newFilePreviewNavColumn(fname string) *navColumn {
// XXX This implementation is a bit hacky, since listing is not really
Expand All @@ -366,6 +372,16 @@ func newFilePreviewNavColumn(fname string) *navColumn {
if err != nil {
return newErrNavColumn(err)
}
info, err := file.Stat()
if err != nil {
return newErrNavColumn(err)
}
if (info.Mode() & (os.ModeDevice | os.ModeNamedPipe | os.ModeSocket | os.ModeCharDevice)) != 0 {
return newErrNavColumn(ErrNotRegular)
}
if info.Size() > BigFileThreshold {
return newErrNavColumn(ErrTooBig)
}
bs, err := ioutil.ReadAll(file)
if err != nil {
return newErrNavColumn(err)
Expand All @@ -377,7 +393,7 @@ func newFilePreviewNavColumn(fname string) *navColumn {
lines := strings.Split(content, "\n")
styleds := make([]styled, len(lines))
for i, line := range lines {
styleds[i] = styled{line, ""}
styleds[i] = styled{strings.Replace(line, "\t", " ", -1), ""}
}
return newNavColumn(styleds, func(int) bool { return false })
}
Expand Down

0 comments on commit a80e6d1

Please sign in to comment.