Add brace highlighting

Use the 'matchbrace' option which is off by default.

Ref #853
This commit is contained in:
Zachary Yedidia
2018-01-07 15:50:08 -05:00
parent 0b47502e62
commit 86c08bd747
3 changed files with 74 additions and 1 deletions

View File

@@ -69,6 +69,17 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) {
return
}
matchingBrace := Loc{-1, -1}
// bracePairs is defined in buffer.go
if buf.Settings["matchbrace"].(bool) {
for _, bp := range bracePairs {
r := buf.Cursor.RuneUnder(buf.Cursor.X)
if r == bp[0] || r == bp[1] {
matchingBrace = buf.FindMatchingBrace(bp, buf.Cursor.Loc)
}
}
}
tabsize := int(buf.Settings["tabsize"].(float64))
softwrap := buf.Settings["softwrap"].(bool)
indentrunes := []rune(buf.Settings["indentchar"].(string))
@@ -137,7 +148,12 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) {
char := line[colN]
if viewCol >= 0 {
c.lines[viewLine][viewCol] = &Char{Loc{viewCol, viewLine}, Loc{colN, lineN}, char, char, curStyle, 1}
st := curStyle
if colN == matchingBrace.X && lineN == matchingBrace.Y {
messenger.Message(matchingBrace)
st = curStyle.Reverse(true)
}
c.lines[viewLine][viewCol] = &Char{Loc{viewCol, viewLine}, Loc{colN, lineN}, char, char, st, 1}
}
if char == '\t' {
charWidth := tabsize - (viewCol+left)%tabsize