From b658f94e5a7dce183fed4f230b7458101c82d0af Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 20 Jan 2020 22:35:00 -0500 Subject: [PATCH] Change ctrl-arrow default binding for non-Mac OSes On non-Mac operating systems, the default for CtrlLeft/CtrlRight is now WordLeft and WordRight instead of moving the cursor to the start and end of lines (now rebound to Alt-Left/Right by default). Default keybindings are unchanged on Mac. Fixes #1465 --- internal/action/bindings.go | 104 ---------------------------- internal/action/defaults_darwin.go | 105 ++++++++++++++++++++++++++++ internal/action/defaults_other.go | 107 +++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+), 104 deletions(-) create mode 100644 internal/action/defaults_darwin.go create mode 100644 internal/action/defaults_other.go diff --git a/internal/action/bindings.go b/internal/action/bindings.go index 8984c043..be75fd0c 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -386,107 +386,3 @@ var keyEvents = map[string]tcell.Key{ "PgUp": tcell.KeyPgUp, "PgDown": tcell.KeyPgDn, } - -// DefaultBindings returns a map containing micro's default keybindings -func DefaultBindings() map[string]string { - return map[string]string{ - "Up": "CursorUp", - "Down": "CursorDown", - "Right": "CursorRight", - "Left": "CursorLeft", - "ShiftUp": "SelectUp", - "ShiftDown": "SelectDown", - "ShiftLeft": "SelectLeft", - "ShiftRight": "SelectRight", - "AltLeft": "WordLeft", - "AltRight": "WordRight", - "AltUp": "MoveLinesUp", - "AltDown": "MoveLinesDown", - "AltShiftRight": "SelectWordRight", - "AltShiftLeft": "SelectWordLeft", - "CtrlLeft": "StartOfLine", - "CtrlRight": "EndOfLine", - "CtrlShiftLeft": "SelectToStartOfLine", - "ShiftHome": "SelectToStartOfLine", - "CtrlShiftRight": "SelectToEndOfLine", - "ShiftEnd": "SelectToEndOfLine", - "CtrlUp": "CursorStart", - "CtrlDown": "CursorEnd", - "CtrlShiftUp": "SelectToStart", - "CtrlShiftDown": "SelectToEnd", - "Alt-{": "ParagraphPrevious", - "Alt-}": "ParagraphNext", - "Enter": "InsertNewline", - "CtrlH": "Backspace", - "Backspace": "Backspace", - "Alt-CtrlH": "DeleteWordLeft", - "Alt-Backspace": "DeleteWordLeft", - "Tab": "Autocomplete|IndentSelection|InsertTab", - "Backtab": "CycleAutocompleteBack|OutdentSelection|OutdentLine", - "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", - "CtrlT": "AddTab", - "Alt,": "PreviousTab", - "Alt.": "NextTab", - "Home": "StartOfLine", - "End": "EndOfLine", - "CtrlHome": "CursorStart", - "CtrlEnd": "CursorEnd", - "PageUp": "CursorPageUp", - "PageDown": "CursorPageDown", - "CtrlPageUp": "PreviousTab", - "CtrlPageDown": "NextTab", - "CtrlG": "ToggleHelp", - "Alt-g": "ToggleKeyMenu", - "CtrlR": "ToggleRuler", - "CtrlL": "command-edit:goto ", - "Delete": "Delete", - "CtrlB": "ShellMode", - "CtrlQ": "Quit", - "CtrlE": "CommandMode", - "CtrlW": "NextSplit", - "CtrlU": "ToggleMacro", - "CtrlJ": "PlayMacro", - "Insert": "ToggleOverwriteMode", - - // Emacs-style keybindings - "Alt-f": "WordRight", - "Alt-b": "WordLeft", - "Alt-a": "StartOfLine", - "Alt-e": "EndOfLine", - // "Alt-p": "CursorUp", - // "Alt-n": "CursorDown", - - // Integration with file managers - "F2": "Save", - "F3": "Find", - "F4": "Quit", - "F7": "Find", - "F10": "Quit", - "Esc": "Escape", - - // Mouse bindings - "MouseWheelUp": "ScrollUp", - "MouseWheelDown": "ScrollDown", - "MouseLeft": "MousePress", - "MouseMiddle": "PastePrimary", - "Ctrl-MouseLeft": "MouseMultiCursor", - - "Alt-n": "SpawnMultiCursor", - "Alt-m": "SpawnMultiCursorSelect", - "Alt-p": "RemoveMultiCursor", - "Alt-c": "RemoveAllMultiCursors", - "Alt-x": "SkipMultiCursor", - } -} diff --git a/internal/action/defaults_darwin.go b/internal/action/defaults_darwin.go new file mode 100644 index 00000000..77800214 --- /dev/null +++ b/internal/action/defaults_darwin.go @@ -0,0 +1,105 @@ +package action + +// DefaultBindings returns a map containing micro's default keybindings +func DefaultBindings() map[string]string { + return map[string]string{ + "Up": "CursorUp", + "Down": "CursorDown", + "Right": "CursorRight", + "Left": "CursorLeft", + "ShiftUp": "SelectUp", + "ShiftDown": "SelectDown", + "ShiftLeft": "SelectLeft", + "ShiftRight": "SelectRight", + "AltLeft": "WordLeft", + "AltRight": "WordRight", + "AltUp": "MoveLinesUp", + "AltDown": "MoveLinesDown", + "AltShiftRight": "SelectWordRight", + "AltShiftLeft": "SelectWordLeft", + "CtrlLeft": "StartOfLine", + "CtrlRight": "EndOfLine", + "CtrlShiftLeft": "SelectToStartOfLine", + "ShiftHome": "SelectToStartOfLine", + "CtrlShiftRight": "SelectToEndOfLine", + "ShiftEnd": "SelectToEndOfLine", + "CtrlUp": "CursorStart", + "CtrlDown": "CursorEnd", + "CtrlShiftUp": "SelectToStart", + "CtrlShiftDown": "SelectToEnd", + "Alt-{": "ParagraphPrevious", + "Alt-}": "ParagraphNext", + "Enter": "InsertNewline", + "CtrlH": "Backspace", + "Backspace": "Backspace", + "Alt-CtrlH": "DeleteWordLeft", + "Alt-Backspace": "DeleteWordLeft", + "Tab": "Autocomplete|IndentSelection|InsertTab", + "Backtab": "CycleAutocompleteBack|OutdentSelection|OutdentLine", + "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", + "CtrlT": "AddTab", + "Alt,": "PreviousTab", + "Alt.": "NextTab", + "Home": "StartOfLine", + "End": "EndOfLine", + "CtrlHome": "CursorStart", + "CtrlEnd": "CursorEnd", + "PageUp": "CursorPageUp", + "PageDown": "CursorPageDown", + "CtrlPageUp": "PreviousTab", + "CtrlPageDown": "NextTab", + "CtrlG": "ToggleHelp", + "Alt-g": "ToggleKeyMenu", + "CtrlR": "ToggleRuler", + "CtrlL": "command-edit:goto ", + "Delete": "Delete", + "CtrlB": "ShellMode", + "CtrlQ": "Quit", + "CtrlE": "CommandMode", + "CtrlW": "NextSplit", + "CtrlU": "ToggleMacro", + "CtrlJ": "PlayMacro", + "Insert": "ToggleOverwriteMode", + + // Emacs-style keybindings + "Alt-f": "WordRight", + "Alt-b": "WordLeft", + "Alt-a": "StartOfLine", + "Alt-e": "EndOfLine", + // "Alt-p": "CursorUp", + // "Alt-n": "CursorDown", + + // Integration with file managers + "F2": "Save", + "F3": "Find", + "F4": "Quit", + "F7": "Find", + "F10": "Quit", + "Esc": "Escape", + + // Mouse bindings + "MouseWheelUp": "ScrollUp", + "MouseWheelDown": "ScrollDown", + "MouseLeft": "MousePress", + "MouseMiddle": "PastePrimary", + "Ctrl-MouseLeft": "MouseMultiCursor", + + "Alt-n": "SpawnMultiCursor", + "Alt-m": "SpawnMultiCursorSelect", + "Alt-p": "RemoveMultiCursor", + "Alt-c": "RemoveAllMultiCursors", + "Alt-x": "SkipMultiCursor", + } +} diff --git a/internal/action/defaults_other.go b/internal/action/defaults_other.go new file mode 100644 index 00000000..255d6f21 --- /dev/null +++ b/internal/action/defaults_other.go @@ -0,0 +1,107 @@ +// +build !darwin + +package action + +// DefaultBindings returns a map containing micro's default keybindings +func DefaultBindings() map[string]string { + return map[string]string{ + "Up": "CursorUp", + "Down": "CursorDown", + "Right": "CursorRight", + "Left": "CursorLeft", + "ShiftUp": "SelectUp", + "ShiftDown": "SelectDown", + "ShiftLeft": "SelectLeft", + "ShiftRight": "SelectRight", + "CtrlLeft": "WordLeft", + "CtrlRight": "WordRight", + "AltUp": "MoveLinesUp", + "AltDown": "MoveLinesDown", + "CtrlShiftRight": "SelectWordRight", + "CtrlShiftLeft": "SelectWordLeft", + "AltLeft": "StartOfLine", + "AltRight": "EndOfLine", + "AltShiftLeft": "SelectToStartOfLine", + "ShiftHome": "SelectToStartOfLine", + "AltShiftRight": "SelectToEndOfLine", + "ShiftEnd": "SelectToEndOfLine", + "CtrlUp": "CursorStart", + "CtrlDown": "CursorEnd", + "CtrlShiftUp": "SelectToStart", + "CtrlShiftDown": "SelectToEnd", + "Alt-{": "ParagraphPrevious", + "Alt-}": "ParagraphNext", + "Enter": "InsertNewline", + "CtrlH": "Backspace", + "Backspace": "Backspace", + "Alt-CtrlH": "DeleteWordLeft", + "Alt-Backspace": "DeleteWordLeft", + "Tab": "Autocomplete|IndentSelection|InsertTab", + "Backtab": "CycleAutocompleteBack|OutdentSelection|OutdentLine", + "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", + "CtrlT": "AddTab", + "Alt,": "PreviousTab", + "Alt.": "NextTab", + "Home": "StartOfLine", + "End": "EndOfLine", + "CtrlHome": "CursorStart", + "CtrlEnd": "CursorEnd", + "PageUp": "CursorPageUp", + "PageDown": "CursorPageDown", + "CtrlPageUp": "PreviousTab", + "CtrlPageDown": "NextTab", + "CtrlG": "ToggleHelp", + "Alt-g": "ToggleKeyMenu", + "CtrlR": "ToggleRuler", + "CtrlL": "command-edit:goto ", + "Delete": "Delete", + "CtrlB": "ShellMode", + "CtrlQ": "Quit", + "CtrlE": "CommandMode", + "CtrlW": "NextSplit", + "CtrlU": "ToggleMacro", + "CtrlJ": "PlayMacro", + "Insert": "ToggleOverwriteMode", + + // Emacs-style keybindings + "Alt-f": "WordRight", + "Alt-b": "WordLeft", + "Alt-a": "StartOfLine", + "Alt-e": "EndOfLine", + // "Alt-p": "CursorUp", + // "Alt-n": "CursorDown", + + // Integration with file managers + "F2": "Save", + "F3": "Find", + "F4": "Quit", + "F7": "Find", + "F10": "Quit", + "Esc": "Escape", + + // Mouse bindings + "MouseWheelUp": "ScrollUp", + "MouseWheelDown": "ScrollDown", + "MouseLeft": "MousePress", + "MouseMiddle": "PastePrimary", + "Ctrl-MouseLeft": "MouseMultiCursor", + + "Alt-n": "SpawnMultiCursor", + "Alt-m": "SpawnMultiCursorSelect", + "Alt-p": "RemoveMultiCursor", + "Alt-c": "RemoveAllMultiCursors", + "Alt-x": "SkipMultiCursor", + } +} -- 2.44.0