From 116b247439cbda6f1f1ceeb9707ee6a6af720368 Mon Sep 17 00:00:00 2001 From: Camille Scholtz Date: Fri, 20 May 2016 19:44:16 +0200 Subject: [PATCH] Add scrollmargin option, rename scrollSpeed to scrollspeed for consistency, make help.md more consistent (replaced some spaces with tabs) --- cmd/micro/command.go | 3 +- cmd/micro/search.go | 3 +- cmd/micro/settings.go | 3 +- cmd/micro/view.go | 18 +++--- runtime/help/help.md | 134 ++++++++++++++++++++++-------------------- 5 files changed, 86 insertions(+), 75 deletions(-) diff --git a/cmd/micro/command.go b/cmd/micro/command.go index f38edf38..00badd61 100644 --- a/cmd/micro/command.go +++ b/cmd/micro/command.go @@ -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 { diff --git a/cmd/micro/search.go b/cmd/micro/search.go index edabfbf9..af5ceefd 100644 --- a/cmd/micro/search.go +++ b/cmd/micro/search.go @@ -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 diff --git a/cmd/micro/settings.go b/cmd/micro/settings.go index bc0d4d17..8827db25 100644 --- a/cmd/micro/settings.go +++ b/cmd/micro/settings.go @@ -81,7 +81,8 @@ func DefaultSettings() map[string]interface{} { "tabsToSpaces": false, "ruler": true, "statusline": true, - "scrollSpeed": float64(2), + "scrollmargin": float64(3), + "scrollspeed": float64(2), } } diff --git a/cmd/micro/view.go b/cmd/micro/view.go index bb3d05c7..22a304c3 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -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) diff --git a/runtime/help/help.md b/runtime/help/help.md index cf99b24d..bd074738 100644 --- a/runtime/help/help.md +++ b/runtime/help/help.md @@ -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 -- 2.44.0