mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-16 13:57:07 +09:00
Add retab
This commit is contained in:
@@ -309,29 +309,7 @@ func (h *BufHandler) ParagraphNext() bool {
|
|||||||
// Retab changes all tabs to spaces or all spaces to tabs depending
|
// Retab changes all tabs to spaces or all spaces to tabs depending
|
||||||
// on the user's settings
|
// on the user's settings
|
||||||
func (h *BufHandler) Retab() bool {
|
func (h *BufHandler) Retab() bool {
|
||||||
// b := h.Buf
|
h.Buf.Retab()
|
||||||
// toSpaces := b.Settings["tabstospaces"].(bool)
|
|
||||||
// tabsize := util.IntOpt(b.Settings["tabsize"])
|
|
||||||
// dirty := false
|
|
||||||
//
|
|
||||||
// for i := 0; i < b.LinesNum(); i++ {
|
|
||||||
// l := b.LineBytes(i)
|
|
||||||
//
|
|
||||||
// ws := util.GetLeadingWhitespace(l)
|
|
||||||
// if len(ws) != 0 {
|
|
||||||
// if toSpaces {
|
|
||||||
// ws = bytes.Replace(ws, []byte("\t"), []byte(util.Spaces(tabsize)), -1)
|
|
||||||
// } else {
|
|
||||||
// ws = bytes.Replace(ws, []byte(util.Spaces(tabsize)), []byte("\t"), -1)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// l = bytes.TrimLeft(l, " \t")
|
|
||||||
// b.lines[i].data = append(ws, l...)
|
|
||||||
// dirty = true
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// b.IsModified = dirty
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ func (h *BufHandler) PluginCmd(args []string) {
|
|||||||
// RetabCmd changes all spaces to tabs or all tabs to spaces
|
// RetabCmd changes all spaces to tabs or all tabs to spaces
|
||||||
// depending on the user's settings
|
// depending on the user's settings
|
||||||
func (h *BufHandler) RetabCmd(args []string) {
|
func (h *BufHandler) RetabCmd(args []string) {
|
||||||
|
h.Buf.Retab()
|
||||||
}
|
}
|
||||||
|
|
||||||
// RawCmd opens a new raw view which displays the escape sequences micro
|
// RawCmd opens a new raw view which displays the escape sequences micro
|
||||||
|
|||||||
@@ -601,3 +601,29 @@ func (b *Buffer) FindMatchingBrace(braceType [2]rune, start Loc) Loc {
|
|||||||
}
|
}
|
||||||
return start
|
return start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Retab changes all tabs to spaces or vice versa
|
||||||
|
func (b *Buffer) Retab() {
|
||||||
|
toSpaces := b.Settings["tabstospaces"].(bool)
|
||||||
|
tabsize := IntOpt(b.Settings["tabsize"])
|
||||||
|
dirty := false
|
||||||
|
|
||||||
|
for i := 0; i < b.LinesNum(); i++ {
|
||||||
|
l := b.LineBytes(i)
|
||||||
|
|
||||||
|
ws := GetLeadingWhitespace(l)
|
||||||
|
if len(ws) != 0 {
|
||||||
|
if toSpaces {
|
||||||
|
ws = bytes.Replace(ws, []byte{'\t'}, bytes.Repeat([]byte{' '}, tabsize), -1)
|
||||||
|
} else {
|
||||||
|
ws = bytes.Replace(ws, bytes.Repeat([]byte{' '}, tabsize), []byte{'\t'}, -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
l = bytes.TrimLeft(l, " \t")
|
||||||
|
b.lines[i].data = append(ws, l...)
|
||||||
|
dirty = true
|
||||||
|
}
|
||||||
|
|
||||||
|
b.isModified = dirty
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user