]> git.lizzy.rs Git - micro.git/commitdiff
Allow divider customization with divchars option
authorZachary Yedidia <zyedidia@gmail.com>
Thu, 21 May 2020 18:35:54 +0000 (14:35 -0400)
committerZachary Yedidia <zyedidia@gmail.com>
Thu, 21 May 2020 18:35:54 +0000 (14:35 -0400)
Adds the `divchars` and `divreverse` options to customize divider
styles.

internal/config/settings.go
internal/display/bufwindow.go
internal/display/uiwindow.go
runtime/help/options.md

index 0c24987bb8fc965596dc103f292c194cf7c8d024..c8a280f2944e4a508b8b90fe30bd26b03eba4698 100644 (file)
@@ -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,
index 87bea8d4b166d224517584161f5a387defa45fbf..b054bfeed49540babe30bede3c6c99c1c50b6714 100644 (file)
@@ -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
index 90d6763d578ee9f3c0330dcd0768f170f190bc71..b8895885810ff2575de004208185288658f51599 100644 (file)
@@ -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 {
index 8b118380e71d7c265ca7ca1e192d54677fff3a31..a8cadba2acda3061db61158cd62dca91cae582a9 100644 (file)
@@ -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/.