From 632e4312d550e0bb35607989cf772057a94e9060 Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 13 Aug 2016 21:28:52 -0400 Subject: [PATCH] Syntax highlighting optimization --- cmd/micro/highlighter.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/cmd/micro/highlighter.go b/cmd/micro/highlighter.go index a4fd2fdb..09935571 100644 --- a/cmd/micro/highlighter.go +++ b/cmd/micro/highlighter.go @@ -443,20 +443,19 @@ func Match(v *View) SyntaxMatches { str := strings.Join(buf.Lines(totalStart, totalEnd), "\n") startNum := ToCharPos(Loc{0, totalStart}, v.Buf) - toplineNum := ToCharPos(Loc{0, v.Topline}, v.Buf) - for _, rule := range rules { if rule.startend { if indicies := rule.regex.FindAllStringIndex(str, -1); indicies != nil { for _, value := range indicies { value[0] = runePos(value[0], str) + startNum value[1] = runePos(value[1], str) + startNum - for i := value[0]; i < value[1]; i++ { - if i < toplineNum { + startLoc := FromCharPos(value[0], buf) + endLoc := FromCharPos(value[1], buf) + for curLoc := startLoc; curLoc.LessThan(endLoc); curLoc = curLoc.Move(1, buf) { + if curLoc.Y < v.Topline { continue } - loc := FromCharPos(i, buf) - colNum, lineNum := loc.X, loc.Y + colNum, lineNum := curLoc.X, curLoc.Y if lineNum == -1 || colNum == -1 { continue }