]> git.lizzy.rs Git - micro.git/commitdiff
Add scrollmargin option, rename scrollSpeed to scrollspeed for consistency, make...
authorCamille Scholtz <onodera@openmailbox.org>
Fri, 20 May 2016 17:44:16 +0000 (19:44 +0200)
committerCamille Scholtz <onodera@openmailbox.org>
Fri, 20 May 2016 17:44:16 +0000 (19:44 +0200)
cmd/micro/command.go
cmd/micro/search.go
cmd/micro/settings.go
cmd/micro/view.go
runtime/help/help.md

index f38edf381bcc4bbe58a2db95bfe619e0ab9308c6..00badd61caf9885ca7eff985bb9a625f84880b01 100644 (file)
@@ -149,7 +149,8 @@ func HandleCommand(input string, view *View) {
                        if strings.Contains(flags, "c") {
                                // The 'check' flag was used
                                Search(search, view, true)
-                               view.Relocate(0)
+                               scrollmargin := int(settings["scrollmargin"].(float64))
+                               view.Relocate(scrollmargin)
                                Redraw(view)
                                choice, canceled := messenger.YesNoPrompt("Perform replacement? (y,n)")
                                if canceled {
index edabfbf978aa46317cef0b9637fdf1c0de17de10..af5ceefd92f22b713ef2e7c6091b7542bc6dfbde 100644 (file)
@@ -121,7 +121,8 @@ func Search(searchStr string, v *View, down bool) {
        v.Cursor.curSelection[0] = charPos + match[0]
        v.Cursor.curSelection[1] = charPos + match[1]
        v.Cursor.x, v.Cursor.y = FromCharPos(charPos+match[1]-1, v.Buf)
-       if v.Relocate(4) {
+       scrollmargin := int(settings["scrollmargin"].(float64))
+       if v.Relocate(scrollmargin) {
                v.matches = Match(v)
        }
        lastSearch = searchStr
index bc0d4d17d91d542248331fa81c2e347e06760e05..8827db257f62449324e2e0db875d4e9cf853b0b7 100644 (file)
@@ -81,7 +81,8 @@ func DefaultSettings() map[string]interface{} {
                "tabsToSpaces": false,
                "ruler":        true,
                "statusline":   true,
-               "scrollSpeed":  float64(2),
+               "scrollmargin": float64(3),
+               "scrollspeed":  float64(2),
        }
 }
 
index bb3d05c7b810929d6188cfae77b3a3615f9a4b13..22a304c31c111b6d44e324bfaa23863fedb6581f 100644 (file)
@@ -205,11 +205,14 @@ func (v *View) ReOpen() {
 func (v *View) Relocate(x int) bool {
        ret := false
        cy := v.Cursor.y
-       if cy < v.Topline {
+       if cy < v.Topline+x && cy > x-1 {
                v.Topline = cy - x
                ret = true
+       } else if cy < v.Topline {
+               v.Topline = cy
+               ret = true
        }
-       if cy > v.Topline+v.height-1 {
+       if cy > v.Topline+v.height-1-x {
                v.Topline = cy - v.height + 1 + x
                ret = true
        }
@@ -257,6 +260,7 @@ func (v *View) HandleEvent(event tcell.Event) {
        // This bool determines whether the view is relocated at the end of the function
        // By default it's true because most events should cause a relocate
        relocate := true
+       scrollmargin := int(settings["scrollmargin"].(float64))
 
        switch e := event.(type) {
        case *tcell.EventResize:
@@ -368,17 +372,17 @@ func (v *View) HandleEvent(event tcell.Event) {
                        }
                case tcell.WheelUp:
                        // Scroll up
-                       scrollSpeed := int(settings["scrollSpeed"].(float64))
-                       v.ScrollUp(scrollSpeed)
+                       scrollspeed := int(settings["scrollspeed"].(float64))
+                       v.ScrollUp(scrollspeed)
                case tcell.WheelDown:
                        // Scroll down
-                       scrollSpeed := int(settings["scrollSpeed"].(float64))
-                       v.ScrollDown(scrollSpeed)
+                       scrollspeed := int(settings["scrollspeed"].(float64))
+                       v.ScrollDown(scrollspeed)
                }
        }
 
        if relocate {
-               v.Relocate(0)
+               v.Relocate(scrollmargin)
        }
        if settings["syntax"].(bool) {
                v.matches = Match(v)
index cf99b24df6546bdfdcbeb0a30d821b48d99a5ae2..bd0747387d10b104f75d4962059af72a9bb11aff 100644 (file)
@@ -63,8 +63,8 @@ following in the `bindings.json` file.
 
 ```json
 {
-    "CtrlY": "Undo",
-    "CtrlZ": "Redo"
+       "CtrlY": "Undo",
+       "CtrlZ": "Redo"
 }
 ```
 
@@ -72,52 +72,52 @@ Here are the defaults:
 
 ```json
 {
-               "Up":             "CursorUp",
-               "Down":           "CursorDown",
-               "Right":          "CursorRight",
-               "Left":           "CursorLeft",
-               "ShiftUp":        "SelectUp",
-               "ShiftDown":      "SelectDown",
-               "ShiftLeft":      "SelectLeft",
-               "ShiftRight":     "SelectRight",
-               "AltLeft":        "WordLeft",
-               "AltRight":       "WordRight",
-               "AltShiftRight":  "SelectWordRight",
-               "AltShiftLeft":   "SelectWordLeft",
-               "CtrlLeft":       "StartOfLine",
-               "CtrlRight":      "EndOfLine",
-               "CtrlShiftLeft":  "SelectToStartOfLine",
-               "CtrlShiftRight": "SelectToEndOfLine",
-               "CtrlUp":         "CursorStart",
-               "CtrlDown":       "CursorEnd",
-               "CtrlShiftUp":    "SelectToStart",
-               "CtrlShiftDown":  "SelectToEnd",
-               "Enter":          "InsertEnter",
-               "Space":          "InsertSpace",
-               "Backspace":      "Backspace",
-               "Backspace2":     "Backspace",
-               "Tab":            "InsertTab",
-               "CtrlO":          "OpenFile",
-               "CtrlS":          "Save",
-               "CtrlF":          "Find",
-               "CtrlN":          "FindNext",
-               "CtrlP":          "FindPrevious",
-               "CtrlZ":          "Undo",
-               "CtrlY":          "Redo",
-               "CtrlC":          "Copy",
-               "CtrlX":          "Cut",
-               "CtrlK":          "CutLine",
-               "CtrlD":          "DuplicateLine",
-               "CtrlV":          "Paste",
-               "CtrlA":          "SelectAll",
-               "Home":           "Start",
-               "End":            "End",
-               "PgUp":           "PageUp",
-               "PgDn":           "PageDown",
-               "CtrlU":          "HalfPageUp",
-               "CtrlD":          "HalfPageDown",
-               "CtrlR":          "ToggleRuler",
-               "Delete":         "Delete"
+       "Up":             "CursorUp",
+       "Down":           "CursorDown",
+       "Right":          "CursorRight",
+       "Left":           "CursorLeft",
+       "ShiftUp":        "SelectUp",
+       "ShiftDown":      "SelectDown",
+       "ShiftLeft":      "SelectLeft",
+       "ShiftRight":     "SelectRight",
+       "AltLeft":        "WordLeft",
+       "AltRight":       "WordRight",
+       "AltShiftRight":  "SelectWordRight",
+       "AltShiftLeft":   "SelectWordLeft",
+       "CtrlLeft":       "StartOfLine",
+       "CtrlRight":      "EndOfLine",
+       "CtrlShiftLeft":  "SelectToStartOfLine",
+       "CtrlShiftRight": "SelectToEndOfLine",
+       "CtrlUp":         "CursorStart",
+       "CtrlDown":       "CursorEnd",
+       "CtrlShiftUp":    "SelectToStart",
+       "CtrlShiftDown":  "SelectToEnd",
+       "Enter":          "InsertEnter",
+       "Space":          "InsertSpace",
+       "Backspace":      "Backspace",
+       "Backspace2":     "Backspace",
+       "Tab":            "InsertTab",
+       "CtrlO":          "OpenFile",
+       "CtrlS":          "Save",
+       "CtrlF":          "Find",
+       "CtrlN":          "FindNext",
+       "CtrlP":          "FindPrevious",
+       "CtrlZ":          "Undo",
+       "CtrlY":          "Redo",
+       "CtrlC":          "Copy",
+       "CtrlX":          "Cut",
+       "CtrlK":          "CutLine",
+       "CtrlD":          "DuplicateLine",
+       "CtrlV":          "Paste",
+       "CtrlA":          "SelectAll",
+       "Home":           "Start",
+       "End":            "End",
+       "PgUp":           "PageUp",
+       "PgDn":           "PageDown",
+       "CtrlU":          "HalfPageUp",
+       "CtrlD":          "HalfPageDown",
+       "CtrlR":          "ToggleRuler",
+       "Delete":         "Delete"
 }
 
 ```
@@ -160,18 +160,18 @@ Here are the options that you can set:
 
        default value: `default`
        Note that the default colorschemes (default, solarized, and solarized-tc)
-    are not located in configDir, because they are embedded in the micro binary
+       are not located in configDir, because they are embedded in the micro binary
 
-    The colorscheme can be selected from all the files in the 
-    ~/.config/micro/colorschemes/ directory. Micro comes by default with three
-    colorschemes:
+       The colorscheme can be selected from all the files in the 
+       ~/.config/micro/colorschemes/ directory. Micro comes by default with three
+       colorschemes:
 
-    * default: this is the default colorscheme.
-    * solarized: this is the solarized colorscheme (used in the screenshot). 
-      You should have the solarized color palette in your terminal to use it.
-    * solarized-tc: this is the solarized colorscheme for true color, just 
-      make sure your terminal supports true color before using it and that the 
-      MICRO_TRUECOLOR environment variable is set to 1 before starting micro.
+       * default: this is the default colorscheme.
+       * solarized: this is the solarized colorscheme (used in the screenshot). 
+         You should have the solarized color palette in your terminal to use it.
+       * solarized-tc: this is the solarized colorscheme for true color, just 
+         make sure your terminal supports true color before using it and that the 
+         MICRO_TRUECOLOR environment variable is set to 1 before starting micro.
 
 
 * `tabsize`: sets the tab size to `option`
@@ -197,17 +197,21 @@ Here are the options that you can set:
 * `autoindent`: when creating a new line use the same indentation as the 
    previous line
 
-    default value: `on`
+       default value: `on`
 
 * `ruler`: display line numbers
 
-    default value: `on`
+       default value: `on`
 
 * `statusline`: display the status line at the bottom of the screen
 
-    default value: `on`
+       default value: `on`
+
+* `scrollmargin`: amount of lines you would like to see above and below the cursor
 
-* `scrollSpeed`: amount of lines to scroll
+       default value: `3`
+
+* `scrollspeed`: amount of lines to scroll
 
        default value: `2`
 
@@ -218,15 +222,15 @@ Default plugin options:
 * `linter`: lint languages on save (supported languages are C, D, Go, Java,
    Javascript, Lua). Provided by the `linter` plugin.
 
-    default value: `on`
+       default value: `on`
 
 * `goimports`: Run goimports on save. Provided by the `go` plugin.
 
-    default value: `off`
+       default value: `off`
 
 * `gofmt`: Run gofmt on save. Provided by the `go` plugin.
 
-    default value: `on`
+       default value: `on`
 
 Any option you set in the editor will be saved to the file 
 ~/.config/micro/settings.json so, in effect, your configuration file will be