// 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] {
+ if buf.Cursor.RuneUnder(buf.Cursor.X) == bp[0] {
matchingBrace = buf.FindMatchingBrace(bp, buf.Cursor.Loc)
+ break
+ }
+ left := buf.Cursor.Loc.X
+ if buf.Settings["matchbraceleft"].(bool) {
+ left -= 1
+ if left < 0 {
+ left = 0
+ }
+ }
+ if buf.Cursor.RuneUnder(left) == bp[1] {
+ matchingBrace = buf.FindMatchingBrace(
+ bp, Loc{X: left, Y: buf.Cursor.Loc.Y})
}
}
}
"keepautoindent": false,
"keymenu": false,
"matchbrace": false,
+ "matchbraceleft": false,
"mouse": true,
"pluginchannels": []string{"https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"},
"pluginrepos": []string{},
"indentchar": " ",
"keepautoindent": false,
"matchbrace": false,
+ "matchbraceleft": false,
"rmtrailingws": false,
"ruler": true,
"savecursor": false,
default value: `false`
+* `matchbraceleft`: when matching a closing brace, should matching match the
+ brace directly under the cursor, or the character to the left? only matters
+ if `matchbrace` is true
+
+ default value: `false`
+
* `syntax`: turns syntax on or off.
default value: `true`