From bfe68b1626c3ce4d853fe72d56535bf554b303db Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Thu, 21 May 2020 14:35:54 -0400 Subject: [PATCH] Allow divider customization with divchars option Adds the `divchars` and `divreverse` options to customize divider styles. --- internal/config/settings.go | 2 ++ internal/display/bufwindow.go | 21 ++++++++++++++++++++- internal/display/uiwindow.go | 15 ++++++++++++++- runtime/help/options.md | 15 +++++++++++++++ 4 files changed, 51 insertions(+), 2 deletions(-) diff --git a/internal/config/settings.go b/internal/config/settings.go index 0c24987b..c8a280f2 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -248,6 +248,8 @@ func DefaultCommonSettings() map[string]interface{} { var DefaultGlobalOnlySettings = map[string]interface{}{ "autosave": float64(0), "colorscheme": "default", + "divchars": "|-", + "divreverse": true, "infobar": true, "keymenu": false, "mouse": true, diff --git a/internal/display/bufwindow.go b/internal/display/bufwindow.go index 87bea8d4..b054bfee 100644 --- a/internal/display/bufwindow.go +++ b/internal/display/bufwindow.go @@ -682,8 +682,27 @@ func (w *BufWindow) displayStatusLine() { w.sline.Display() } else if w.Y+w.Height != infoY { w.drawStatus = true + + divchars := config.GetGlobalOption("divchars").(string) + if util.CharacterCountInString(divchars) != 2 { + divchars = "|-" + } + + _, _, size := util.DecodeCharacterInString(divchars) + divchar, combc, _ := util.DecodeCharacterInString(divchars[size:]) + + dividerStyle := config.DefStyle + if style, ok := config.Colorscheme["divider"]; ok { + dividerStyle = style + } + + divreverse := config.GetGlobalOption("divreverse").(bool) + if divreverse { + dividerStyle = dividerStyle.Reverse(true) + } + for x := w.X; x < w.X+w.Width; x++ { - screen.SetContent(x, w.Y+w.Height-1, '-', nil, config.DefStyle.Reverse(true)) + screen.SetContent(x, w.Y+w.Height-1, divchar, combc, dividerStyle) } } else { w.drawStatus = false diff --git a/internal/display/uiwindow.go b/internal/display/uiwindow.go index 90d6763d..b8895885 100644 --- a/internal/display/uiwindow.go +++ b/internal/display/uiwindow.go @@ -4,6 +4,7 @@ import ( "github.com/zyedidia/micro/v2/internal/buffer" "github.com/zyedidia/micro/v2/internal/config" "github.com/zyedidia/micro/v2/internal/screen" + "github.com/zyedidia/micro/v2/internal/util" "github.com/zyedidia/micro/v2/internal/views" ) @@ -24,11 +25,23 @@ func (w *UIWindow) drawNode(n *views.Node) { dividerStyle = style } + divchars := config.GetGlobalOption("divchars").(string) + if util.CharacterCountInString(divchars) != 2 { + divchars = "|-" + } + + divchar, combc, _ := util.DecodeCharacterInString(divchars) + + divreverse := config.GetGlobalOption("divreverse").(bool) + if divreverse { + dividerStyle = dividerStyle.Reverse(true) + } + for i, c := range cs { if c.IsLeaf() && c.Kind == views.STVert { if i != len(cs)-1 { for h := 0; h < c.H; h++ { - screen.SetContent(c.X+c.W, c.Y+h, '|', nil, dividerStyle.Reverse(true)) + screen.SetContent(c.X+c.W, c.Y+h, divchar, combc, dividerStyle) } } } else { diff --git a/runtime/help/options.md b/runtime/help/options.md index 8b118380..a8cadba2 100644 --- a/runtime/help/options.md +++ b/runtime/help/options.md @@ -80,6 +80,21 @@ Here are the available options: default value: `false` +* `divchars`: specifies the "divider" characters used for the dividing line + between vertical/horizontal splits. The first character is for vertical + dividers, and the second is for horizontal dividers. By default, for + horizontal splits the statusline serves as a divider, but if the statusline + is disabled the horizontal divider character will be used. + + default value: `|-` + +* `divreverse`: colorschemes provide the color (foreground and background) for + the characters displayed in split dividers. With this option enabled, the + colors specified by the colorscheme will be reversed (foreground and + background colors swapped). + + default value: `true` + * `encoding`: the encoding to open and save files with. Supported encodings are listed at https://www.w3.org/TR/encoding/.