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
}
// 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:
}
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)
```json
{
- "CtrlY": "Undo",
- "CtrlZ": "Redo"
+ "CtrlY": "Undo",
+ "CtrlZ": "Redo"
}
```
```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"
}
```
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`
* `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`
* `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