summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2016-09-21 01:23:41 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2016-09-21 01:23:41 +0900
commit00f96aae769be244ea5f14811d58d8adddf587f7 (patch)
tree426769da0d6d47bfbcc0d3590c32685424e45be0
parenta749e6bd16a4fa1374dd454868a4084288ff78dd (diff)
Avoid rendering delay when displaying extremely long lines
Related #666
-rw-r--r--src/terminal.go7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/terminal.go b/src/terminal.go
index c036117e..0e9436a7 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -401,6 +401,8 @@ func displayWidth(runes []rune) int {
const (
minWidth = 16
minHeight = 4
+
+ maxDisplayWidthCalc = 1024
)
func calculateSize(base int, size sizeSpec, margin int, minSize int) int {
@@ -651,6 +653,11 @@ func displayWidthWithLimit(runes []rune, prefixWidth int, limit int) int {
}
func trimLeft(runes []rune, width int) ([]rune, int32) {
+ if len(runes) > maxDisplayWidthCalc && len(runes) > width {
+ trimmed := len(runes) - width
+ return runes[trimmed:], int32(trimmed)
+ }
+
currentWidth := displayWidth(runes)
var trimmed int32