Add auto indent

This commit is contained in:
Zachary Yedidia
2016-04-20 21:47:52 -04:00
parent 6aab17f445
commit 6d3344e4bd
3 changed files with 24 additions and 2 deletions

View File

@@ -75,3 +75,16 @@ func Contains(list []string, a string) bool {
func Insert(str string, pos int, value string) string {
return string([]rune(str)[:pos]) + value + string([]rune(str)[pos:])
}
// GetLeadingWhitespace returns the leading whitespace of the given string
func GetLeadingWhitespace(str string) string {
ws := ""
for _, c := range str {
if c == ' ' || c == '\t' {
ws += string(c)
} else {
break
}
}
return ws
}

View File

@@ -377,8 +377,17 @@ func (v *View) HandleEvent(event tcell.Event) {
v.cursor.DeleteSelection()
v.cursor.ResetSelection()
}
v.eh.Insert(v.cursor.Loc(), "\n")
ws := GetLeadingWhitespace(v.buf.lines[v.cursor.y])
v.cursor.Right()
if settings.AutoIndent {
v.eh.Insert(v.cursor.Loc(), ws)
for i := 0; i < len(ws); i++ {
v.cursor.Right()
}
}
v.cursor.lastVisualX = v.cursor.GetVisualX()
case tcell.KeySpace:
// Insert a space

View File

@@ -14,14 +14,14 @@
- [ ] Persistent undo/redo (saved between open and closing micro)
- [ ] Auto indent
- [ ] More options
- [ ] Tabs to spaces
- [ ] Wrap lines
### Done
- [x] Auto indent
- [x] Line numbers
- [x] Search and replace