mirror of
https://github.com/zyedidia/micro.git
synced 2026-02-05 22:50:21 +09:00
a few miscellaneous fixes and improvements (#1105)
* 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.
This commit is contained in:
@@ -1515,6 +1515,42 @@ func (v *View) PageDown(usePlugin bool) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// SelectPageUp selects up one page
|
||||
func (v *View) SelectPageUp(usePlugin bool) bool {
|
||||
if usePlugin && !PreActionCall("SelectPageUp", v) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !v.Cursor.HasSelection() {
|
||||
v.Cursor.OrigSelection[0] = v.Cursor.Loc
|
||||
}
|
||||
v.Cursor.UpN(v.Height)
|
||||
v.Cursor.SelectTo(v.Cursor.Loc)
|
||||
|
||||
if usePlugin {
|
||||
return PostActionCall("SelectPageUp", v)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// SelectPageDown selects down one page
|
||||
func (v *View) SelectPageDown(usePlugin bool) bool {
|
||||
if usePlugin && !PreActionCall("SelectPageDown", v) {
|
||||
return false
|
||||
}
|
||||
|
||||
if !v.Cursor.HasSelection() {
|
||||
v.Cursor.OrigSelection[0] = v.Cursor.Loc
|
||||
}
|
||||
v.Cursor.DownN(v.Height)
|
||||
v.Cursor.SelectTo(v.Cursor.Loc)
|
||||
|
||||
if usePlugin {
|
||||
return PostActionCall("SelectPageDown", v)
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// CursorPageUp places the cursor a page up
|
||||
func (v *View) CursorPageUp(usePlugin bool) bool {
|
||||
if usePlugin && !PreActionCall("CursorPageUp", v) {
|
||||
|
||||
@@ -80,6 +80,8 @@ var bindingActions = map[string]func(*View, bool) bool{
|
||||
"End": (*View).End,
|
||||
"PageUp": (*View).PageUp,
|
||||
"PageDown": (*View).PageDown,
|
||||
"SelectPageUp": (*View).SelectPageUp,
|
||||
"SelectPageDown": (*View).SelectPageDown,
|
||||
"HalfPageUp": (*View).HalfPageUp,
|
||||
"HalfPageDown": (*View).HalfPageDown,
|
||||
"StartOfLine": (*View).StartOfLine,
|
||||
@@ -255,6 +257,7 @@ var bindingKeys = map[string]tcell.Key{
|
||||
"Escape": tcell.KeyEscape,
|
||||
"Enter": tcell.KeyEnter,
|
||||
"Backspace": tcell.KeyBackspace2,
|
||||
"OldBackspace": tcell.KeyBackspace,
|
||||
|
||||
// I renamed these keys to PageUp and PageDown but I don't want to break someone's keybindings
|
||||
"PgUp": tcell.KeyPgUp,
|
||||
|
||||
@@ -76,8 +76,8 @@ func (c *CellView) Draw(buf *Buffer, top, height, left, width int) {
|
||||
curX := buf.Cursor.X
|
||||
curLoc := buf.Cursor.Loc
|
||||
if buf.Settings["matchbraceleft"].(bool) {
|
||||
curX--
|
||||
if curX > 0 {
|
||||
curX--
|
||||
curLoc = curLoc.Move(-1, buf)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,10 @@ func (v *View) ToggleTabbar() {
|
||||
}
|
||||
|
||||
func (v *View) paste(clip string) {
|
||||
leadingWS := GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y))
|
||||
leadingWS := ""
|
||||
if v.Cursor.X > 0 {
|
||||
leadingWS = GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y))
|
||||
}
|
||||
|
||||
if v.Cursor.HasSelection() {
|
||||
v.Cursor.DeleteSelection()
|
||||
|
||||
@@ -187,6 +187,8 @@ Start
|
||||
End
|
||||
PageUp
|
||||
PageDown
|
||||
SelectPageUp
|
||||
SelectPageDown
|
||||
HalfPageUp
|
||||
HalfPageDown
|
||||
StartOfLine
|
||||
@@ -352,6 +354,7 @@ CtrlRightSq
|
||||
CtrlCarat
|
||||
CtrlUnderscore
|
||||
Backspace
|
||||
OldBackspace
|
||||
Tab
|
||||
Esc
|
||||
Escape
|
||||
|
||||
Reference in New Issue
Block a user