* add binding for more primitive backspace
* support selecting page up and page down
* fix matchbraceleft for braces that start on x=0
* fix multiline copy-paste indenting
let's say you have two lines like
<space><space>line1
<space><space>line2
so you start from cursor x=0 and select both lines, then paste.
we don't want any leading whitespace in this case, because the
cursor is already at x=0 and the selection already includes
whitespace.
* Make ^X act like ^K when nothing is selected
^K is hard to reach with your left hand or requires to use both hands
Also with this you could remove ^K whatsoever and make room for a different command
This is how I configured nano by the way
Line duplication also becomes nearly instantaneous with a flash-quick ^X+^V+^V combo (nano doesn't have a dedicated shortcut)
Small block (5-10 lines) cuts/copies/duplicates can also be made this way
* Remove unnecessary lines
* Call CutLine the right way
by default home sends the cursor to the beginning of the line.
if the cursor is at the beginning of the line already though, home
will send the cursor to the first non-whitespace rune. tapping home
will toggle between these two line starts.
The -l flag to the replace command means "literal" and will treat
the search term literally instead of as a regular expression.
The command bar also now supports expanding environment variables
and running expressions through the shell and using the result
in the command.
When savehistory is enabled, micro will save your command history across
sessions. This includes command-mode, shell-mode, open, jump-to-line...
Anything that uses up-arrow for history in the infobar.
This option is on by default.
Closes#874
Use the `keymenu` option (default `off`) to enable. ToggleKeyMenu is
also bound to `Alt-g` and this info is now displayed in the status line.
Closes#829
* SelectLeft on the last character is now possible
* SelectLeft on the last character is now possible
* CursorRight on selection places the cursor after the last selected character
* SelectRight on the last character do not select the last character and do nothing
This changes the behavior of cursor movement so that all cursors are
adjusted when a change is made to the buffer. Cursors don't have to be
manually moved after calling Insert or Remove, those functions will move
the cursor properly on their own.
This should fix issues 1-3 mentioned in the multiple cursors discussion.
Ref #5
With the new code that allows binding mouse buttons this was remarkably
easy to add.
The new binding is:
"Ctrl-MouseLeft": "MouseMultiCursor"
Note: A number of terminals don't support Ctrl-MouseLeft (macOS
especially) so you might want to rebind to MouseRight or MouseMiddle.
This commit creates new keybindings and actions to handle multiple
cursors.
Here are the defaults:
"Alt-n": "SpawnMultiCursor",
"Alt-p": "RemoveMultiCursor",
"Alt-c": "RemoveAllMultiCursors",
"Alt-x": "SkipMultiCursor",
This commit enables users to bind the mouse buttons (left, middle,
right buttons and the scroll wheel).
The default bindings now include the mouse bindings:
"MouseWheelUp": "ScrollUp",
"MouseWheelDown": "ScrollDown",
"MouseLeft": "MousePress",
"MouseMiddle": "PastePrimary",
Mouse buttons can now also be bound to normal actions. For example:
"MouseLeft": "Backspace"
This also means that plugins can access mouse event callbacks in the
standard way ('onAction').
More documentation for this will be coming soon.
Fixes#542
This option makes micro treat spaces at the beginning of lines as if
they are tabs. This option only does anything if tabstospaces is already
on. E.g. micro will move over 4 spaces at once when at the start of a
line.
Closes#616