From ea6a87d41a9fcaa9fff81c1a5310726b1e15c548 Mon Sep 17 00:00:00 2001 From: JT Olds Date: Tue, 27 Feb 2018 18:53:04 -0700 Subject: [PATCH] allow optionally brace matching with the closing brace to the left of the cursor this behavior, while slightly less obvious, allows for observing what brace you just closed. as you write closing braces, the brace you closed gets highlighted --- cmd/micro/cellview.go | 15 +++++++++++++-- cmd/micro/settings.go | 2 ++ runtime/help/options.md | 6 ++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/cmd/micro/cellview.go b/cmd/micro/cellview.go index c33d29257..9c50856e4 100644 --- a/cmd/micro/cellview.go +++ b/cmd/micro/cellview.go @@ -73,9 +73,20 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) { // 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}) } } } diff --git a/cmd/micro/settings.go b/cmd/micro/settings.go index cf1b20931..9466227e7 100644 --- a/cmd/micro/settings.go +++ b/cmd/micro/settings.go @@ -215,6 +215,7 @@ func DefaultGlobalSettings() map[string]interface{} { "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{}, @@ -257,6 +258,7 @@ func DefaultLocalSettings() map[string]interface{} { "indentchar": " ", "keepautoindent": false, "matchbrace": false, + "matchbraceleft": false, "rmtrailingws": false, "ruler": true, "savecursor": false, diff --git a/runtime/help/options.md b/runtime/help/options.md index 3ef67a062..a767f5bdb 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -186,6 +186,12 @@ Here are the options that you can set: 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`