feat: gap buffer is implemented, tested
All checks were successful
Run Test Suite / test (push) Successful in 56s
All checks were successful
Run Test Suite / test (push) Successful in 56s
Not sure if this is perfect, but it seems to be working
This commit is contained in:
parent
1a98d3a4de
commit
e362c9f118
@ -16,7 +16,7 @@ func (a ChangeToEndOfLine) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
pos := win.Cursor.Col
|
pos := win.Cursor.Col
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
|
|
||||||
// Save deleted text to register
|
// Save deleted text to register
|
||||||
if pos < len(line) {
|
if pos < len(line) {
|
||||||
@ -51,7 +51,7 @@ func (a SubstituteChar) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
pos := win.Cursor.Col
|
pos := win.Cursor.Col
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
|
|
||||||
// Calculate how many chars to delete (limited by line length)
|
// Calculate how many chars to delete (limited by line length)
|
||||||
count := min(a.Count, len(line)-pos)
|
count := min(a.Count, len(line)-pos)
|
||||||
@ -97,7 +97,7 @@ func (a SubstituteLine) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
// Collect and delete lines
|
// Collect and delete lines
|
||||||
for range count {
|
for range count {
|
||||||
lines = append(lines, buf.Lines[y])
|
lines = append(lines, buf.Line(y))
|
||||||
buf.DeleteLine(y)
|
buf.DeleteLine(y)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ func (a DeleteChar) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
pos := win.Cursor.Col
|
pos := win.Cursor.Col
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
for i := 0; i < a.Count && pos < len(line); i++ {
|
for i := 0; i < a.Count && pos < len(line); i++ {
|
||||||
line = line[:pos] + line[pos+1:]
|
line = line[:pos] + line[pos+1:]
|
||||||
buf.SetLine(win.Cursor.Line, line)
|
buf.SetLine(win.Cursor.Line, line)
|
||||||
@ -38,7 +38,7 @@ func (a DeletePrevChar) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
pos := win.Cursor.Col
|
pos := win.Cursor.Col
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
for i := 0; i < a.Count && pos <= len(line); i++ {
|
for i := 0; i < a.Count && pos <= len(line); i++ {
|
||||||
if pos > 0 {
|
if pos > 0 {
|
||||||
line = line[:pos-1] + line[pos:]
|
line = line[:pos-1] + line[pos:]
|
||||||
@ -69,7 +69,7 @@ func (a DeleteToEndOfLine) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
// Delete to end of line
|
// Delete to end of line
|
||||||
pos := win.Cursor.Col
|
pos := win.Cursor.Col
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
|
|
||||||
buf.SetLine(win.Cursor.Line, line[:pos])
|
buf.SetLine(win.Cursor.Line, line[:pos])
|
||||||
win.SetCursorCol(pos - 1)
|
win.SetCursorCol(pos - 1)
|
||||||
|
|||||||
@ -76,7 +76,7 @@ type EnterInsertLineEnd struct {
|
|||||||
func (a EnterInsertLineEnd) Execute(m Model) tea.Cmd {
|
func (a EnterInsertLineEnd) Execute(m Model) tea.Cmd {
|
||||||
win := m.ActiveWindow()
|
win := m.ActiveWindow()
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
win.SetCursorCol(len(buf.Lines[win.Cursor.Line]))
|
win.SetCursorCol(buf.Lines[win.Cursor.Line].Len())
|
||||||
|
|
||||||
// Start recording
|
// Start recording
|
||||||
m.SetInsertRecording(a.Count, a)
|
m.SetInsertRecording(a.Count, a)
|
||||||
@ -158,7 +158,7 @@ func (a InsertChar) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
l := buf.Lines[y]
|
l := buf.Line(y)
|
||||||
if x < len(l) {
|
if x < len(l) {
|
||||||
buf.SetLine(y, l[:x]+a.Char+l[x:])
|
buf.SetLine(y, l[:x]+a.Char+l[x:])
|
||||||
} else {
|
} else {
|
||||||
@ -177,7 +177,7 @@ func (a InsertNewline) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
l := buf.Lines[y]
|
l := buf.Line(y)
|
||||||
if x == len(l) {
|
if x == len(l) {
|
||||||
buf.InsertLine(y+1, "")
|
buf.InsertLine(y+1, "")
|
||||||
} else {
|
} else {
|
||||||
@ -197,12 +197,12 @@ func (a InsertBackspace) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
l := buf.Lines[y]
|
l := buf.Line(y)
|
||||||
if x > 0 {
|
if x > 0 {
|
||||||
buf.SetLine(y, l[:x-1]+l[x:])
|
buf.SetLine(y, l[:x-1]+l[x:])
|
||||||
win.SetCursorCol(x - 1)
|
win.SetCursorCol(x - 1)
|
||||||
} else if y > 0 {
|
} else if y > 0 {
|
||||||
prevLine := buf.Lines[y-1]
|
prevLine := buf.Line(y - 1)
|
||||||
newX := len(prevLine)
|
newX := len(prevLine)
|
||||||
buf.SetLine(y-1, prevLine+l)
|
buf.SetLine(y-1, prevLine+l)
|
||||||
buf.DeleteLine(y)
|
buf.DeleteLine(y)
|
||||||
@ -220,9 +220,9 @@ func (a InsertDelete) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
l := buf.Lines[y]
|
l := buf.Line(y)
|
||||||
if x == len(l) && y < buf.LineCount()-1 {
|
if x == len(l) && y < buf.LineCount()-1 {
|
||||||
nextLine := buf.Lines[y+1]
|
nextLine := buf.Line(y + 1)
|
||||||
buf.SetLine(y, l+nextLine)
|
buf.SetLine(y, l+nextLine)
|
||||||
buf.DeleteLine(y + 1)
|
buf.DeleteLine(y + 1)
|
||||||
} else if x < len(l) {
|
} else if x < len(l) {
|
||||||
@ -240,7 +240,7 @@ func (a InsertTab) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
l := buf.Lines[y]
|
l := buf.Line(y)
|
||||||
tabs := strings.Repeat(" ", m.Settings().TabStop)
|
tabs := strings.Repeat(" ", m.Settings().TabStop)
|
||||||
if x < len(l) {
|
if x < len(l) {
|
||||||
buf.SetLine(y, l[:x]+tabs+l[x:])
|
buf.SetLine(y, l[:x]+tabs+l[x:])
|
||||||
@ -275,12 +275,12 @@ func (a InsertDeletePreviousWord) Execute(m Model) tea.Cmd {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
x, y := win.Cursor.Col, win.Cursor.Line
|
x, y := win.Cursor.Col, win.Cursor.Line
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// At start of line: merge with previous line (same as backspace)
|
// At start of line: merge with previous line (same as backspace)
|
||||||
if x == 0 {
|
if x == 0 {
|
||||||
if y > 0 {
|
if y > 0 {
|
||||||
prevLine := buf.Lines[y-1]
|
prevLine := buf.Line(y - 1)
|
||||||
newX := len(prevLine)
|
newX := len(prevLine)
|
||||||
buf.SetLine(y-1, prevLine+line)
|
buf.SetLine(y-1, prevLine+line)
|
||||||
buf.DeleteLine(y)
|
buf.DeleteLine(y)
|
||||||
|
|||||||
@ -63,7 +63,7 @@ func (a Paste) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
x := win.Cursor.Col
|
x := win.Cursor.Col
|
||||||
y := win.Cursor.Line
|
y := win.Cursor.Line
|
||||||
curLine := buf.Lines[y]
|
curLine := buf.Line(y)
|
||||||
insertAt := min(x+1, len(curLine))
|
insertAt := min(x+1, len(curLine))
|
||||||
|
|
||||||
if len(lines) == 1 {
|
if len(lines) == 1 {
|
||||||
@ -101,11 +101,11 @@ func (a Paste) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
// Last line: append the suffix
|
// Last line: append the suffix
|
||||||
lastLineIdx := y + len(pastedLines) - 1
|
lastLineIdx := y + len(pastedLines) - 1
|
||||||
buf.SetLine(lastLineIdx, buf.Lines[lastLineIdx]+suffix)
|
buf.SetLine(lastLineIdx, buf.Line(lastLineIdx)+suffix)
|
||||||
|
|
||||||
// Set cursor to end of last pasted content (before suffix)
|
// Set cursor to end of last pasted content (before suffix)
|
||||||
win.SetCursorLine(lastLineIdx)
|
win.SetCursorLine(lastLineIdx)
|
||||||
win.SetCursorCol(len(buf.Lines[lastLineIdx]) - len(suffix) - 1)
|
win.SetCursorCol(len(buf.Line(lastLineIdx)) - len(suffix) - 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -175,7 +175,7 @@ func (a PasteBefore) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
x := win.Cursor.Col
|
x := win.Cursor.Col
|
||||||
y := win.Cursor.Line
|
y := win.Cursor.Line
|
||||||
curLine := buf.Lines[y]
|
curLine := buf.Line(y)
|
||||||
insertAt := min(x, len(curLine))
|
insertAt := min(x, len(curLine))
|
||||||
|
|
||||||
if len(lines) == 1 {
|
if len(lines) == 1 {
|
||||||
@ -213,11 +213,11 @@ func (a PasteBefore) Execute(m Model) tea.Cmd {
|
|||||||
|
|
||||||
// Last line: append the suffix
|
// Last line: append the suffix
|
||||||
lastLineIdx := y + len(pastedLines) - 1
|
lastLineIdx := y + len(pastedLines) - 1
|
||||||
buf.SetLine(lastLineIdx, buf.Lines[lastLineIdx]+suffix)
|
buf.SetLine(lastLineIdx, buf.Line(lastLineIdx)+suffix)
|
||||||
|
|
||||||
// Set cursor to end of last pasted content (before suffix)
|
// Set cursor to end of last pasted content (before suffix)
|
||||||
win.SetCursorLine(lastLineIdx)
|
win.SetCursorLine(lastLineIdx)
|
||||||
win.SetCursorCol(len(buf.Lines[lastLineIdx]) - len(suffix) - 1)
|
win.SetCursorCol(len(buf.Line(lastLineIdx)) - len(suffix) - 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -313,7 +313,7 @@ func visualCharPaste(m Model, reg core.Register, start, end core.Position, repla
|
|||||||
} else if reg.Type == core.CharwiseRegister {
|
} else if reg.Type == core.CharwiseRegister {
|
||||||
// Charwise paste: insert text at cursor position
|
// Charwise paste: insert text at cursor position
|
||||||
if len(reg.Content) == 1 {
|
if len(reg.Content) == 1 {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
insertAt := min(start.Col, len(line))
|
insertAt := min(start.Col, len(line))
|
||||||
newLine := line[:insertAt] + reg.Content[0] + line[insertAt:]
|
newLine := line[:insertAt] + reg.Content[0] + line[insertAt:]
|
||||||
buf.SetLine(start.Line, newLine)
|
buf.SetLine(start.Line, newLine)
|
||||||
@ -328,7 +328,7 @@ func visualCharPaste(m Model, reg core.Register, start, end core.Position, repla
|
|||||||
for i, content := range reg.Content {
|
for i, content := range reg.Content {
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
// First line: insert at start position
|
// First line: insert at start position
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
insertAt := min(start.Col, len(line))
|
insertAt := min(start.Col, len(line))
|
||||||
newLine := line[:insertAt] + content
|
newLine := line[:insertAt] + content
|
||||||
if len(reg.Content) == 1 {
|
if len(reg.Content) == 1 {
|
||||||
@ -362,7 +362,7 @@ func visualBlockPaste(m Model, reg core.Register, start, end core.Position, repl
|
|||||||
// Extract deleted text (for register)
|
// Extract deleted text (for register)
|
||||||
var deletedLines []string
|
var deletedLines []string
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
if startCol < len(line) {
|
if startCol < len(line) {
|
||||||
ec := min(endCol+1, len(line))
|
ec := min(endCol+1, len(line))
|
||||||
deletedLines = append(deletedLines, line[startCol:ec])
|
deletedLines = append(deletedLines, line[startCol:ec])
|
||||||
@ -373,7 +373,7 @@ func visualBlockPaste(m Model, reg core.Register, start, end core.Position, repl
|
|||||||
|
|
||||||
// Delete the block selection
|
// Delete the block selection
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
if startCol >= len(line) {
|
if startCol >= len(line) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -389,7 +389,7 @@ func visualBlockPaste(m Model, reg core.Register, start, end core.Position, repl
|
|||||||
}
|
}
|
||||||
|
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
insertAt := min(startCol, len(line))
|
insertAt := min(startCol, len(line))
|
||||||
// Pad with spaces if needed
|
// Pad with spaces if needed
|
||||||
for len(line) < insertAt {
|
for len(line) < insertAt {
|
||||||
@ -417,7 +417,7 @@ func visualLinePaste(m Model, reg core.Register, start, end core.Position, repla
|
|||||||
// Extract deleted lines (for register)
|
// Extract deleted lines (for register)
|
||||||
var deletedLines []string
|
var deletedLines []string
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
deletedLines = append(deletedLines, buf.Lines[y])
|
deletedLines = append(deletedLines, buf.Line(y))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete the selected lines (from end to start to preserve indices)
|
// Delete the selected lines (from end to start to preserve indices)
|
||||||
@ -467,7 +467,7 @@ func extractCharSelection(m Model, start, end core.Position) string {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
if start.Line == end.Line {
|
if start.Line == end.Line {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
endCol := min(end.Col+1, len(line))
|
endCol := min(end.Col+1, len(line))
|
||||||
startCol := min(start.Col, len(line))
|
startCol := min(start.Col, len(line))
|
||||||
if startCol >= endCol {
|
if startCol >= endCol {
|
||||||
@ -480,7 +480,7 @@ func extractCharSelection(m Model, start, end core.Position) string {
|
|||||||
var result strings.Builder
|
var result strings.Builder
|
||||||
|
|
||||||
// First line: from start.Col to end
|
// First line: from start.Col to end
|
||||||
firstLine := buf.Lines[start.Line]
|
firstLine := buf.Line(start.Line)
|
||||||
if start.Col < len(firstLine) {
|
if start.Col < len(firstLine) {
|
||||||
result.WriteString(firstLine[start.Col:])
|
result.WriteString(firstLine[start.Col:])
|
||||||
}
|
}
|
||||||
@ -488,12 +488,12 @@ func extractCharSelection(m Model, start, end core.Position) string {
|
|||||||
|
|
||||||
// Middle lines: entire lines
|
// Middle lines: entire lines
|
||||||
for y := start.Line + 1; y < end.Line; y++ {
|
for y := start.Line + 1; y < end.Line; y++ {
|
||||||
result.WriteString(buf.Lines[y])
|
result.WriteString(buf.Line(y))
|
||||||
result.WriteString("\n")
|
result.WriteString("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last line: from beginning to end.Col
|
// Last line: from beginning to end.Col
|
||||||
lastLine := buf.Lines[end.Line]
|
lastLine := buf.Line(end.Line)
|
||||||
endCol := min(end.Col+1, len(lastLine))
|
endCol := min(end.Col+1, len(lastLine))
|
||||||
result.WriteString(lastLine[:endCol])
|
result.WriteString(lastLine[:endCol])
|
||||||
|
|
||||||
@ -506,12 +506,12 @@ func deleteCharSelectionForPaste(m Model, start, end core.Position) {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
if start.Line == end.Line {
|
if start.Line == end.Line {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
endCol := min(end.Col+1, len(line))
|
endCol := min(end.Col+1, len(line))
|
||||||
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
||||||
} else {
|
} else {
|
||||||
startLine := buf.Lines[start.Line]
|
startLine := buf.Line(start.Line)
|
||||||
endLine := buf.Lines[end.Line]
|
endLine := buf.Line(end.Line)
|
||||||
|
|
||||||
prefix := ""
|
prefix := ""
|
||||||
if start.Col < len(startLine) {
|
if start.Col < len(startLine) {
|
||||||
|
|||||||
@ -63,7 +63,7 @@ func writeBuffer(m action.Model, buf *core.Buffer, args []string, force bool) (t
|
|||||||
// Using a bufio.Writer because its more efficient
|
// Using a bufio.Writer because its more efficient
|
||||||
writer := bufio.NewWriter(file)
|
writer := bufio.NewWriter(file)
|
||||||
for _, line := range buf.Lines {
|
for _, line := range buf.Lines {
|
||||||
n, err := writer.WriteString(line + "\n")
|
n, err := writer.WriteString(line.String() + "\n")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -20,7 +20,7 @@ type Buffer struct {
|
|||||||
// File data
|
// File data
|
||||||
Filename string
|
Filename string
|
||||||
Filetype string
|
Filetype string
|
||||||
Lines []string
|
Lines []*GapBuffer // Changed from []string to []*GapBuffer
|
||||||
|
|
||||||
// Flags (not used yet)
|
// Flags (not used yet)
|
||||||
Modified bool
|
Modified bool
|
||||||
@ -42,7 +42,7 @@ func (b *Buffer) Line(idx int) string {
|
|||||||
if idx < 0 || idx >= len(b.Lines) {
|
if idx < 0 || idx >= len(b.Lines) {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
return b.Lines[idx]
|
return b.Lines[idx].String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buffer.SetLine: Set the content of the line at an index. Does nothing if the
|
// Buffer.SetLine: Set the content of the line at an index. Does nothing if the
|
||||||
@ -51,9 +51,9 @@ func (b *Buffer) SetLine(idx int, content string) {
|
|||||||
if idx >= 0 && idx < len(b.Lines) {
|
if idx >= 0 && idx < len(b.Lines) {
|
||||||
// Record set line in undo stack
|
// Record set line in undo stack
|
||||||
if b.UndoStack != nil {
|
if b.UndoStack != nil {
|
||||||
b.UndoStack.RecordSetLine(idx, b.Lines[idx], content)
|
b.UndoStack.RecordSetLine(idx, b.Lines[idx].String(), content)
|
||||||
}
|
}
|
||||||
b.Lines[idx] = content
|
b.Lines[idx].Set(content)
|
||||||
}
|
}
|
||||||
b.Modified = true
|
b.Modified = true
|
||||||
}
|
}
|
||||||
@ -74,7 +74,8 @@ func (b *Buffer) InsertLine(idx int, content string) {
|
|||||||
b.UndoStack.RecordInsertLine(idx, content)
|
b.UndoStack.RecordInsertLine(idx, content)
|
||||||
}
|
}
|
||||||
|
|
||||||
b.Lines = append(b.Lines[:idx], append([]string{content}, b.Lines[idx:]...)...)
|
newLine := NewGapBuffer(content)
|
||||||
|
b.Lines = append(b.Lines[:idx], append([]*GapBuffer{newLine}, b.Lines[idx:]...)...)
|
||||||
b.Modified = true
|
b.Modified = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,7 +85,7 @@ func (b *Buffer) DeleteLine(idx int) {
|
|||||||
if idx >= 0 && idx < len(b.Lines) {
|
if idx >= 0 && idx < len(b.Lines) {
|
||||||
// Record delete line in undo stack
|
// Record delete line in undo stack
|
||||||
if b.UndoStack != nil {
|
if b.UndoStack != nil {
|
||||||
b.UndoStack.RecordDeleteLine(idx, b.Lines[idx])
|
b.UndoStack.RecordDeleteLine(idx, b.Lines[idx].String())
|
||||||
}
|
}
|
||||||
b.Lines = append(b.Lines[:idx], b.Lines[idx+1:]...)
|
b.Lines = append(b.Lines[:idx], b.Lines[idx+1:]...)
|
||||||
}
|
}
|
||||||
@ -121,7 +122,7 @@ func (b *Buffer) Undo(w *Window) bool {
|
|||||||
case SetLineChange:
|
case SetLineChange:
|
||||||
// Restore old data
|
// Restore old data
|
||||||
if change.Line >= 0 && change.Line < len(b.Lines) {
|
if change.Line >= 0 && change.Line < len(b.Lines) {
|
||||||
b.Lines[change.Line] = change.OldData
|
b.Lines[change.Line].Set(change.OldData)
|
||||||
}
|
}
|
||||||
case InsertLineChange:
|
case InsertLineChange:
|
||||||
// Remove the inserted line
|
// Remove the inserted line
|
||||||
@ -131,7 +132,8 @@ func (b *Buffer) Undo(w *Window) bool {
|
|||||||
case DeleteLineChange:
|
case DeleteLineChange:
|
||||||
// Re-insert the deleted line
|
// Re-insert the deleted line
|
||||||
if change.Line <= len(b.Lines) {
|
if change.Line <= len(b.Lines) {
|
||||||
b.Lines = append(b.Lines[:change.Line], append([]string{change.OldData}, b.Lines[change.Line:]...)...)
|
newLine := NewGapBuffer(change.OldData)
|
||||||
|
b.Lines = append(b.Lines[:change.Line], append([]*GapBuffer{newLine}, b.Lines[change.Line:]...)...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,12 +167,13 @@ func (b *Buffer) Redo(w *Window) bool {
|
|||||||
case SetLineChange:
|
case SetLineChange:
|
||||||
// Apply new data
|
// Apply new data
|
||||||
if change.Line >= 0 && change.Line < len(b.Lines) {
|
if change.Line >= 0 && change.Line < len(b.Lines) {
|
||||||
b.Lines[change.Line] = change.NewData
|
b.Lines[change.Line].Set(change.NewData)
|
||||||
}
|
}
|
||||||
case InsertLineChange:
|
case InsertLineChange:
|
||||||
// Re-insert the line
|
// Re-insert the line
|
||||||
if change.Line <= len(b.Lines) {
|
if change.Line <= len(b.Lines) {
|
||||||
b.Lines = append(b.Lines[:change.Line], append([]string{change.NewData}, b.Lines[change.Line:]...)...)
|
newLine := NewGapBuffer(change.NewData)
|
||||||
|
b.Lines = append(b.Lines[:change.Line], append([]*GapBuffer{newLine}, b.Lines[change.Line:]...)...)
|
||||||
}
|
}
|
||||||
case DeleteLineChange:
|
case DeleteLineChange:
|
||||||
// Re-delete the line
|
// Re-delete the line
|
||||||
@ -208,7 +211,10 @@ func (b *Buffer) SetFiletype(filetype string) {
|
|||||||
// Buffer.SetLines: Replace all lines in the buffer with the provided lines.
|
// Buffer.SetLines: Replace all lines in the buffer with the provided lines.
|
||||||
// This is useful when loading a file or resetting buffer content.
|
// This is useful when loading a file or resetting buffer content.
|
||||||
func (b *Buffer) SetLines(lines []string) {
|
func (b *Buffer) SetLines(lines []string) {
|
||||||
b.Lines = lines
|
b.Lines = make([]*GapBuffer, len(lines))
|
||||||
|
for i, line := range lines {
|
||||||
|
b.Lines[i] = NewGapBuffer(line)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Buffer.SetModified: Set the modified flag for this buffer. A modified buffer
|
// Buffer.SetModified: Set the modified flag for this buffer. A modified buffer
|
||||||
|
|||||||
@ -16,7 +16,7 @@ func NewBufferBuilder() *BufferBuilder {
|
|||||||
Type: ScatchBuffer, // Default buffer type
|
Type: ScatchBuffer, // Default buffer type
|
||||||
Filename: "",
|
Filename: "",
|
||||||
Filetype: "",
|
Filetype: "",
|
||||||
Lines: []string{""},
|
Lines: []*GapBuffer{NewEmptyGapBuffer()},
|
||||||
Modified: false,
|
Modified: false,
|
||||||
Loaded: false,
|
Loaded: false,
|
||||||
Listed: false,
|
Listed: false,
|
||||||
@ -40,7 +40,10 @@ func (b *BufferBuilder) WithFiletype(filetype string) *BufferBuilder {
|
|||||||
|
|
||||||
// BufferBuilder.WithLines: Attaches a lines to the buffer that is being built.
|
// BufferBuilder.WithLines: Attaches a lines to the buffer that is being built.
|
||||||
func (b *BufferBuilder) WithLines(lines []string) *BufferBuilder {
|
func (b *BufferBuilder) WithLines(lines []string) *BufferBuilder {
|
||||||
b.buffer.Lines = lines
|
b.buffer.Lines = make([]*GapBuffer, len(lines))
|
||||||
|
for i, line := range lines {
|
||||||
|
b.buffer.Lines[i] = NewGapBuffer(line)
|
||||||
|
}
|
||||||
return b
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
180
internal/core/gap_buffer.go
Normal file
180
internal/core/gap_buffer.go
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
// GapBuffer represents a single line of text using the gap buffer data structure.
|
||||||
|
// It maintains a gap (empty space) in the buffer where the cursor is positioned,
|
||||||
|
// making insertions and deletions at the cursor position very efficient (O(1)).
|
||||||
|
type GapBuffer struct {
|
||||||
|
buffer []rune // The underlying buffer containing text and gap
|
||||||
|
gapStart int // Index where the gap starts
|
||||||
|
gapEnd int // Index where the gap ends (exclusive)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewGapBuffer: creates a new gap buffer with the given initial content.
|
||||||
|
// The gap is positioned at the end of the content.
|
||||||
|
func NewGapBuffer(content string) *GapBuffer {
|
||||||
|
runes := []rune(content)
|
||||||
|
initialCapacity := len(runes) + 16 // Extra space for the gap
|
||||||
|
buffer := make([]rune, initialCapacity)
|
||||||
|
copy(buffer, runes)
|
||||||
|
|
||||||
|
return &GapBuffer{
|
||||||
|
buffer: buffer,
|
||||||
|
gapStart: len(runes),
|
||||||
|
gapEnd: initialCapacity,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewEmptyGapBuffer: Creates a new empty gap buffer with default capacity.
|
||||||
|
func NewEmptyGapBuffer() *GapBuffer {
|
||||||
|
initialCapacity := 16
|
||||||
|
return &GapBuffer{
|
||||||
|
buffer: make([]rune, initialCapacity),
|
||||||
|
gapStart: 0,
|
||||||
|
gapEnd: initialCapacity,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.String: Converts the gap buffer to a string, excluding the gap.
|
||||||
|
func (gb *GapBuffer) String() string {
|
||||||
|
result := make([]rune, 0, gb.Len())
|
||||||
|
result = append(result, gb.buffer[:gb.gapStart]...)
|
||||||
|
result = append(result, gb.buffer[gb.gapEnd:]...)
|
||||||
|
return string(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Len: Returns the length of the text (excluding the gap).
|
||||||
|
func (gb *GapBuffer) Len() int {
|
||||||
|
return len(gb.buffer) - (gb.gapEnd - gb.gapStart)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.GapSize: Returns the current size of the gap.
|
||||||
|
func (gb *GapBuffer) GapSize() int {
|
||||||
|
return gb.gapEnd - gb.gapStart
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Insert: Inserts a string at the specified position.
|
||||||
|
// This moves the gap to the position first, then inserts the text.
|
||||||
|
func (gb *GapBuffer) Insert(pos int, text string) {
|
||||||
|
if pos < 0 || pos > gb.Len() {
|
||||||
|
return // Invalid position
|
||||||
|
}
|
||||||
|
|
||||||
|
runes := []rune(text)
|
||||||
|
if len(runes) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move gap to insertion position
|
||||||
|
gb.moveGap(pos)
|
||||||
|
|
||||||
|
// Ensure gap is large enough
|
||||||
|
if gb.GapSize() < len(runes) {
|
||||||
|
gb.grow(len(runes))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert runes at gap start
|
||||||
|
copy(gb.buffer[gb.gapStart:], runes)
|
||||||
|
gb.gapStart += len(runes)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Delete: Deletes count runes starting at position pos.
|
||||||
|
func (gb *GapBuffer) Delete(pos, count int) {
|
||||||
|
if pos < 0 || pos >= gb.Len() || count <= 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clamp count to not exceed buffer length
|
||||||
|
if pos+count > gb.Len() {
|
||||||
|
count = gb.Len() - pos
|
||||||
|
}
|
||||||
|
|
||||||
|
// Move gap to deletion position
|
||||||
|
gb.moveGap(pos)
|
||||||
|
|
||||||
|
// Expand gap to absorb deleted characters
|
||||||
|
gb.gapEnd += count
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.RuneAt: Returns the rune at the specified position.
|
||||||
|
func (gb *GapBuffer) RuneAt(pos int) rune {
|
||||||
|
if pos < 0 || pos >= gb.Len() {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
if pos < gb.gapStart {
|
||||||
|
return gb.buffer[pos]
|
||||||
|
}
|
||||||
|
return gb.buffer[pos+gb.GapSize()]
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Substring: Returns a substring from start to end (exclusive).
|
||||||
|
func (gb *GapBuffer) Substring(start, end int) string {
|
||||||
|
if start < 0 {
|
||||||
|
start = 0
|
||||||
|
}
|
||||||
|
if end > gb.Len() {
|
||||||
|
end = gb.Len()
|
||||||
|
}
|
||||||
|
if start >= end {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
result := make([]rune, 0, end-start)
|
||||||
|
for i := start; i < end; i++ {
|
||||||
|
result = append(result, gb.RuneAt(i))
|
||||||
|
}
|
||||||
|
return string(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.moveGap: Moves the gap to the specified position.
|
||||||
|
func (gb *GapBuffer) moveGap(pos int) {
|
||||||
|
if pos < gb.gapStart {
|
||||||
|
// Move gap left: shift text from [pos, gapStart) to [gapEnd-delta, gapEnd)
|
||||||
|
delta := gb.gapStart - pos
|
||||||
|
copy(gb.buffer[gb.gapEnd-delta:gb.gapEnd], gb.buffer[pos:gb.gapStart])
|
||||||
|
gb.gapStart = pos
|
||||||
|
gb.gapEnd -= delta
|
||||||
|
} else if pos > gb.gapStart {
|
||||||
|
// Move gap right: shift text from [gapEnd, gapEnd+delta) to [gapStart, gapStart+delta)
|
||||||
|
delta := pos - gb.gapStart
|
||||||
|
copy(gb.buffer[gb.gapStart:gb.gapStart+delta], gb.buffer[gb.gapEnd:gb.gapEnd+delta])
|
||||||
|
gb.gapStart += delta
|
||||||
|
gb.gapEnd += delta
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.grow: Expands the buffer to accommodate at least minGapSize additional characters.
|
||||||
|
func (gb *GapBuffer) grow(minGapSize int) {
|
||||||
|
oldLen := len(gb.buffer)
|
||||||
|
newGapSize := minGapSize * 2 // Double the required size for future insertions
|
||||||
|
newLen := oldLen + newGapSize - gb.GapSize()
|
||||||
|
|
||||||
|
newBuffer := make([]rune, newLen)
|
||||||
|
|
||||||
|
// Copy text before gap
|
||||||
|
copy(newBuffer, gb.buffer[:gb.gapStart])
|
||||||
|
|
||||||
|
// Copy text after gap to new position
|
||||||
|
newGapEnd := newLen - (oldLen - gb.gapEnd)
|
||||||
|
copy(newBuffer[newGapEnd:], gb.buffer[gb.gapEnd:])
|
||||||
|
|
||||||
|
gb.buffer = newBuffer
|
||||||
|
gb.gapEnd = newGapEnd
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Set: Replaces the entire content of the gap buffer.
|
||||||
|
func (gb *GapBuffer) Set(content string) {
|
||||||
|
runes := []rune(content)
|
||||||
|
capacity := len(runes) + 16
|
||||||
|
|
||||||
|
gb.buffer = make([]rune, capacity)
|
||||||
|
copy(gb.buffer, runes)
|
||||||
|
gb.gapStart = len(runes)
|
||||||
|
gb.gapEnd = capacity
|
||||||
|
}
|
||||||
|
|
||||||
|
// GapBuffer.Clear: Removes all content from the gap buffer.
|
||||||
|
func (gb *GapBuffer) Clear() {
|
||||||
|
gb.gapStart = 0
|
||||||
|
gb.gapEnd = len(gb.buffer)
|
||||||
|
}
|
||||||
455
internal/core/gap_buffer_test.go
Normal file
455
internal/core/gap_buffer_test.go
Normal file
@ -0,0 +1,455 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestGapBufferString(t *testing.T) {
|
||||||
|
t.Run("gapBuffer.String() on empty buffer returns \"\"", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
str := buf.String()
|
||||||
|
if str != "" {
|
||||||
|
t.Fatalf("buf.String() expected '', got '%s'", str)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gapBuffer.String() on string returns the string", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
str := buf.String()
|
||||||
|
if str != "Hello world" {
|
||||||
|
t.Fatalf("buf.String() expected 'Hello world', got '%s'", str)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gapBuffer.String() after moving gap returns the string", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.moveGap(6)
|
||||||
|
str := buf.String()
|
||||||
|
if str != "Hello world" {
|
||||||
|
t.Fatalf("buf.String() expected 'Hello world', got '%s'", str)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gapBuffer.String() after growing gap returns the string", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.grow(16)
|
||||||
|
str := buf.String()
|
||||||
|
if str != "Hello world" {
|
||||||
|
t.Fatalf("buf.String() expected 'Hello world', got '%s'", str)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gapBuffer.String() handles unicode characters", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello 世界 🌍")
|
||||||
|
str := buf.String()
|
||||||
|
if str != "Hello 世界 🌍" {
|
||||||
|
t.Fatalf("buf.String() expected 'Hello 世界 🌍', got '%s'", str)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferLen(t *testing.T) {
|
||||||
|
t.Run("empty buffer has length 0", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
if buf.Len() != 0 {
|
||||||
|
t.Fatalf("expected length 0, got %d", buf.Len())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("buffer with content returns correct length", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.Len() != 5 {
|
||||||
|
t.Fatalf("expected length 5, got %d", buf.Len())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("length with unicode characters", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hi 🌍")
|
||||||
|
if buf.Len() != 4 {
|
||||||
|
t.Fatalf("expected length 4, got %d", buf.Len())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferInsert(t *testing.T) {
|
||||||
|
t.Run("insert at beginning", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("world")
|
||||||
|
buf.Insert(0, "Hello ")
|
||||||
|
if buf.String() != "Hello world" {
|
||||||
|
t.Fatalf("expected 'Hello world', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert at end", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Insert(5, " world")
|
||||||
|
if buf.String() != "Hello world" {
|
||||||
|
t.Fatalf("expected 'Hello world', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert in middle", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Helloworld")
|
||||||
|
buf.Insert(5, " ")
|
||||||
|
if buf.String() != "Hello world" {
|
||||||
|
t.Fatalf("expected 'Hello world', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert into empty buffer", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
buf.Insert(0, "Hello")
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert empty string does nothing", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Insert(2, "")
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert at invalid position does nothing", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Insert(-1, "X")
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
buf.Insert(100, "X")
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert unicode characters", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Insert(5, " 世界")
|
||||||
|
if buf.String() != "Hello 世界" {
|
||||||
|
t.Fatalf("expected 'Hello 世界', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("multiple consecutive insertions", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
buf.Insert(0, "a")
|
||||||
|
buf.Insert(1, "b")
|
||||||
|
buf.Insert(2, "c")
|
||||||
|
if buf.String() != "abc" {
|
||||||
|
t.Fatalf("expected 'abc', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert large text triggers grow", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
longText := "Lorem ipsum dolor sit amet, consectetur adipiscing elit"
|
||||||
|
buf.Insert(5, longText)
|
||||||
|
expected := "Hello" + longText
|
||||||
|
if buf.String() != expected {
|
||||||
|
t.Fatalf("expected '%s', got '%s'", expected, buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferDelete(t *testing.T) {
|
||||||
|
t.Run("delete from beginning", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.Delete(0, 6)
|
||||||
|
if buf.String() != "world" {
|
||||||
|
t.Fatalf("expected 'world', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete from end", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.Delete(5, 6)
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete from middle", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.Delete(5, 1)
|
||||||
|
if buf.String() != "Helloworld" {
|
||||||
|
t.Fatalf("expected 'Helloworld', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete single character", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Delete(1, 1)
|
||||||
|
if buf.String() != "Hllo" {
|
||||||
|
t.Fatalf("expected 'Hllo', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete all content", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Delete(0, 5)
|
||||||
|
if buf.String() != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete with count exceeding length", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Delete(2, 100)
|
||||||
|
if buf.String() != "He" {
|
||||||
|
t.Fatalf("expected 'He', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete at invalid position does nothing", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Delete(-1, 2)
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
buf.Delete(100, 2)
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete with zero count does nothing", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Delete(2, 0)
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("delete unicode characters", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello 世界")
|
||||||
|
buf.Delete(6, 2)
|
||||||
|
if buf.String() != "Hello " {
|
||||||
|
t.Fatalf("expected 'Hello ', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferRuneAt(t *testing.T) {
|
||||||
|
t.Run("get rune at valid position", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.RuneAt(0) != 'H' {
|
||||||
|
t.Fatalf("expected 'H', got '%c'", buf.RuneAt(0))
|
||||||
|
}
|
||||||
|
if buf.RuneAt(4) != 'o' {
|
||||||
|
t.Fatalf("expected 'o', got '%c'", buf.RuneAt(4))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("get rune before gap", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.moveGap(6)
|
||||||
|
if buf.RuneAt(5) != ' ' {
|
||||||
|
t.Fatalf("expected ' ', got '%c'", buf.RuneAt(5))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("get rune after gap", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.moveGap(6)
|
||||||
|
if buf.RuneAt(6) != 'w' {
|
||||||
|
t.Fatalf("expected 'w', got '%c'", buf.RuneAt(6))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("get rune at invalid position returns 0", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.RuneAt(-1) != 0 {
|
||||||
|
t.Fatalf("expected 0, got '%c'", buf.RuneAt(-1))
|
||||||
|
}
|
||||||
|
if buf.RuneAt(100) != 0 {
|
||||||
|
t.Fatalf("expected 0, got '%c'", buf.RuneAt(100))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("get unicode rune", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("🌍世界")
|
||||||
|
if buf.RuneAt(0) != '🌍' {
|
||||||
|
t.Fatalf("expected '🌍', got '%c'", buf.RuneAt(0))
|
||||||
|
}
|
||||||
|
if buf.RuneAt(1) != '世' {
|
||||||
|
t.Fatalf("expected '世', got '%c'", buf.RuneAt(1))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferSubstring(t *testing.T) {
|
||||||
|
t.Run("substring from middle", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
if buf.Substring(0, 5) != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.Substring(0, 5))
|
||||||
|
}
|
||||||
|
if buf.Substring(6, 11) != "world" {
|
||||||
|
t.Fatalf("expected 'world', got '%s'", buf.Substring(6, 11))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("substring entire content", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.Substring(0, 5) != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.Substring(0, 5))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("substring with start >= end returns empty", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.Substring(3, 3) != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.Substring(3, 3))
|
||||||
|
}
|
||||||
|
if buf.Substring(3, 2) != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.Substring(3, 2))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("substring clamps to buffer bounds", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.Substring(-5, 3) != "Hel" {
|
||||||
|
t.Fatalf("expected 'Hel', got '%s'", buf.Substring(-5, 3))
|
||||||
|
}
|
||||||
|
if buf.Substring(2, 100) != "llo" {
|
||||||
|
t.Fatalf("expected 'llo', got '%s'", buf.Substring(2, 100))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("substring with gap in middle", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.moveGap(6)
|
||||||
|
if buf.Substring(0, 11) != "Hello world" {
|
||||||
|
t.Fatalf("expected 'Hello world', got '%s'", buf.Substring(0, 11))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("substring with unicode", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hi 世界")
|
||||||
|
if buf.Substring(3, 5) != "世界" {
|
||||||
|
t.Fatalf("expected '世界', got '%s'", buf.Substring(3, 5))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferSet(t *testing.T) {
|
||||||
|
t.Run("set replaces content", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Set("Goodbye")
|
||||||
|
if buf.String() != "Goodbye" {
|
||||||
|
t.Fatalf("expected 'Goodbye', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("set to empty string", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Set("")
|
||||||
|
if buf.String() != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("set on empty buffer", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
buf.Set("Hello")
|
||||||
|
if buf.String() != "Hello" {
|
||||||
|
t.Fatalf("expected 'Hello', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("set resets gap position", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.moveGap(2)
|
||||||
|
buf.Set("World")
|
||||||
|
if buf.String() != "World" {
|
||||||
|
t.Fatalf("expected 'World', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
if buf.gapStart != 5 {
|
||||||
|
t.Fatalf("expected gap start at 5, got %d", buf.gapStart)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferClear(t *testing.T) {
|
||||||
|
t.Run("clear removes all content", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.Clear()
|
||||||
|
if buf.String() != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("clear on empty buffer", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
buf.Clear()
|
||||||
|
if buf.String() != "" {
|
||||||
|
t.Fatalf("expected '', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("clear resets gap to start", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
buf.Clear()
|
||||||
|
if buf.gapStart != 0 {
|
||||||
|
t.Fatalf("expected gap start at 0, got %d", buf.gapStart)
|
||||||
|
}
|
||||||
|
if buf.gapEnd != len(buf.buffer) {
|
||||||
|
t.Fatalf("expected gap end at %d, got %d", len(buf.buffer), buf.gapEnd)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferGapSize(t *testing.T) {
|
||||||
|
t.Run("gap size on new buffer", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
if buf.GapSize() != 16 {
|
||||||
|
t.Fatalf("expected gap size 16, got %d", buf.GapSize())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gap size on empty buffer", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
if buf.GapSize() != 16 {
|
||||||
|
t.Fatalf("expected gap size 16, got %d", buf.GapSize())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("gap size decreases after insert", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello")
|
||||||
|
initialGapSize := buf.GapSize()
|
||||||
|
buf.Insert(5, "XX")
|
||||||
|
if buf.GapSize() != initialGapSize-2 {
|
||||||
|
t.Fatalf("expected gap size %d, got %d", initialGapSize-2, buf.GapSize())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestGapBufferComplex(t *testing.T) {
|
||||||
|
t.Run("sequence of operations", func(t *testing.T) {
|
||||||
|
buf := NewEmptyGapBuffer()
|
||||||
|
buf.Insert(0, "Hello")
|
||||||
|
buf.Insert(5, " world")
|
||||||
|
buf.Delete(5, 1)
|
||||||
|
buf.Insert(5, ", ")
|
||||||
|
if buf.String() != "Hello, world" {
|
||||||
|
t.Fatalf("expected 'Hello, world', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("insert and delete at different positions", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("abcdefgh")
|
||||||
|
buf.Delete(2, 4)
|
||||||
|
buf.Insert(2, "XX")
|
||||||
|
if buf.String() != "abXXgh" {
|
||||||
|
t.Fatalf("expected 'abXXgh', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("editing with gap movement", func(t *testing.T) {
|
||||||
|
buf := NewGapBuffer("Hello world")
|
||||||
|
buf.Insert(0, ">> ")
|
||||||
|
buf.Insert(buf.Len(), " <<")
|
||||||
|
if buf.String() != ">> Hello world <<" {
|
||||||
|
t.Fatalf("expected '>> Hello world <<', got '%s'", buf.String())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -60,7 +60,7 @@ func (w *Window) ClampCursor() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Clamp column to valid range [0, lineLen]
|
// Clamp column to valid range [0, lineLen]
|
||||||
lineLen := len(w.Buffer.Lines[w.Cursor.Line])
|
lineLen := w.Buffer.Lines[w.Cursor.Line].Len()
|
||||||
if w.Cursor.Col < 0 {
|
if w.Cursor.Col < 0 {
|
||||||
w.Cursor.Col = 0
|
w.Cursor.Col = 0
|
||||||
} else if lineLen == 0 {
|
} else if lineLen == 0 {
|
||||||
|
|||||||
@ -13,8 +13,8 @@ func TestDeleteChar(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -24,8 +24,8 @@ func TestDeleteChar(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -35,8 +35,8 @@ func TestDeleteChar(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("lines[0] = %q, want 'hell'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hell'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -46,8 +46,8 @@ func TestDeleteChar(t *testing.T) {
|
|||||||
sendKeys(tm, "x", "x")
|
sendKeys(tm, "x", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -59,8 +59,8 @@ func TestDeleteCharWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "3", "x")
|
sendKeys(tm, "3", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo" {
|
if m.ActiveBuffer().Lines[0].String() != "lo" {
|
||||||
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -70,8 +70,8 @@ func TestDeleteCharWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "1", "0", "x")
|
sendKeys(tm, "1", "0", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -81,8 +81,8 @@ func TestDeleteCharWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "x")
|
sendKeys(tm, "2", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hlo" {
|
if m.ActiveBuffer().Lines[0].String() != "hlo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hlo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hlo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -94,8 +94,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -108,8 +108,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -119,8 +119,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a" {
|
if m.ActiveBuffer().Lines[0].String() != "a" {
|
||||||
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -130,8 +130,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ab c" {
|
if m.ActiveBuffer().Lines[0].String() != "ab c" {
|
||||||
t.Errorf("Line(0) = %q, want 'ab c'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ab c'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -144,8 +144,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -155,8 +155,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x", "x", "x")
|
sendKeys(tm, "x", "x", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo" {
|
if m.ActiveBuffer().Lines[0].String() != "lo" {
|
||||||
t.Errorf("Line(0) = %q, want 'lo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'lo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -166,8 +166,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ab" {
|
if m.ActiveBuffer().Lines[0].String() != "ab" {
|
||||||
t.Errorf("Line(0) = %q, want 'ab'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ab'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -177,8 +177,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "5", "x")
|
sendKeys(tm, "5", "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -188,8 +188,8 @@ func TestDeleteCharEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "x")
|
sendKeys(tm, "x")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "abde" {
|
if m.ActiveBuffer().Lines[0].String() != "abde" {
|
||||||
t.Errorf("Line(0) = %q, want 'abde'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'abde'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -201,8 +201,8 @@ func TestDeleteCharBackward(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -212,8 +212,8 @@ func TestDeleteCharBackward(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -223,8 +223,8 @@ func TestDeleteCharBackward(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -234,8 +234,8 @@ func TestDeleteCharBackward(t *testing.T) {
|
|||||||
sendKeys(tm, "X", "X")
|
sendKeys(tm, "X", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -247,8 +247,8 @@ func TestDeleteCharBackwardWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "3", "X")
|
sendKeys(tm, "3", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo" {
|
if m.ActiveBuffer().Lines[0].String() != "lo" {
|
||||||
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -258,8 +258,8 @@ func TestDeleteCharBackwardWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "1", "0", "X")
|
sendKeys(tm, "1", "0", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "o" {
|
if m.ActiveBuffer().Lines[0].String() != "o" {
|
||||||
t.Errorf("lines[0] = %q, want 'o'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'o'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -269,8 +269,8 @@ func TestDeleteCharBackwardWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "X")
|
sendKeys(tm, "2", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hlo" {
|
if m.ActiveBuffer().Lines[0].String() != "hlo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hlo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hlo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -282,8 +282,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -296,8 +296,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -310,8 +310,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a" {
|
if m.ActiveBuffer().Lines[0].String() != "a" {
|
||||||
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -321,8 +321,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "b" {
|
if m.ActiveBuffer().Lines[0].String() != "b" {
|
||||||
t.Errorf("Line(0) = %q, want 'b'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'b'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -332,8 +332,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ab c" {
|
if m.ActiveBuffer().Lines[0].String() != "ab c" {
|
||||||
t.Errorf("Line(0) = %q, want 'ab c'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ab c'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -346,8 +346,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -357,8 +357,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X", "X", "X")
|
sendKeys(tm, "X", "X", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo" {
|
if m.ActiveBuffer().Lines[0].String() != "lo" {
|
||||||
t.Errorf("Line(0) = %q, want 'lo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'lo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -368,8 +368,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ab" {
|
if m.ActiveBuffer().Lines[0].String() != "ab" {
|
||||||
t.Errorf("Line(0) = %q, want 'ab'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ab'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -379,8 +379,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "5", "X")
|
sendKeys(tm, "5", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "c" {
|
if m.ActiveBuffer().Lines[0].String() != "c" {
|
||||||
t.Errorf("Line(0) = %q, want 'c'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'c'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -390,8 +390,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "abde" {
|
if m.ActiveBuffer().Lines[0].String() != "abde" {
|
||||||
t.Errorf("Line(0) = %q, want 'abde'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'abde'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -413,8 +413,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "3", "X")
|
sendKeys(tm, "3", "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ho" {
|
if m.ActiveBuffer().Lines[0].String() != "ho" {
|
||||||
t.Errorf("Line(0) = %q, want 'ho'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ho'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
// Cursor should be at position 1 after deleting 3 chars backward from position 4
|
// Cursor should be at position 1 after deleting 3 chars backward from position 4
|
||||||
if m.ActiveWindow().Cursor.Col != 1 {
|
if m.ActiveWindow().Cursor.Col != 1 {
|
||||||
@ -428,11 +428,11 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -442,8 +442,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " " {
|
if m.ActiveBuffer().Lines[0].String() != " " {
|
||||||
t.Errorf("Line(0) = %q, want ' '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -453,8 +453,8 @@ func TestDeleteCharBackwardEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "X")
|
sendKeys(tm, "X")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("Line(0) = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 3 {
|
if m.ActiveWindow().Cursor.Col != 3 {
|
||||||
t.Errorf("CursorX() = %d, want 3", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 3", m.ActiveWindow().Cursor.Col)
|
||||||
@ -469,8 +469,8 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -480,8 +480,8 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -491,8 +491,8 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -514,8 +514,8 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -528,11 +528,11 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %q, want '3'", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %q, want '3'", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "he" {
|
if m.ActiveBuffer().Lines[0].String() != "he" {
|
||||||
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "hi" {
|
if m.ActiveBuffer().Lines[1].String() != "hi" {
|
||||||
t.Errorf("Line(1) = %q, want 'hi'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'hi'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -545,8 +545,8 @@ func TestDeleteToEndOfLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %q, want '1'", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %q, want '1'", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "he" {
|
if m.ActiveBuffer().Lines[0].String() != "he" {
|
||||||
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -558,8 +558,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -572,8 +572,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -583,11 +583,11 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 3" {
|
if m.ActiveBuffer().Lines[2].String() != "line 3" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -597,8 +597,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "he" {
|
if m.ActiveBuffer().Lines[0].String() != "he" {
|
||||||
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'he'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
// Cursor should clamp to last char
|
// Cursor should clamp to last char
|
||||||
if m.ActiveWindow().Cursor.Col != 1 {
|
if m.ActiveWindow().Cursor.Col != 1 {
|
||||||
@ -612,8 +612,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -623,8 +623,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " " {
|
if m.ActiveBuffer().Lines[0].String() != " " {
|
||||||
t.Errorf("Line(0) = %q, want ' '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -634,8 +634,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -645,8 +645,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a" {
|
if m.ActiveBuffer().Lines[0].String() != "a" {
|
||||||
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -656,8 +656,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -667,8 +667,8 @@ func TestDeleteToEndOfLineEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "D")
|
sendKeys(tm, "D")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "first" {
|
if m.ActiveBuffer().Lines[0].String() != "first" {
|
||||||
t.Errorf("Line(0) = %q, want 'first'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'first'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
|
|||||||
@ -25,8 +25,8 @@ func TestEnterInsert(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "X", "esc")
|
sendKeys(tm, "i", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xhello" {
|
if m.ActiveBuffer().Lines[0].String() != "Xhello" {
|
||||||
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -36,8 +36,8 @@ func TestEnterInsert(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "X", "esc")
|
sendKeys(tm, "i", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -70,8 +70,8 @@ func TestEnterInsertAfter(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "X", "esc")
|
sendKeys(tm, "a", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hXello" {
|
if m.ActiveBuffer().Lines[0].String() != "hXello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hXello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hXello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -81,8 +81,8 @@ func TestEnterInsertAfter(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "X", "esc")
|
sendKeys(tm, "a", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helXlo" {
|
if m.ActiveBuffer().Lines[0].String() != "helXlo" {
|
||||||
t.Errorf("lines[0] = %q, want 'helXlo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helXlo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -94,8 +94,8 @@ func TestEnterInsertLineStart(t *testing.T) {
|
|||||||
sendKeys(tm, "I", "X", "esc")
|
sendKeys(tm, "I", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xhello" {
|
if m.ActiveBuffer().Lines[0].String() != "Xhello" {
|
||||||
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -105,8 +105,8 @@ func TestEnterInsertLineStart(t *testing.T) {
|
|||||||
sendKeys(tm, "I", "X", "esc")
|
sendKeys(tm, "I", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xhello" {
|
if m.ActiveBuffer().Lines[0].String() != "Xhello" {
|
||||||
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -118,8 +118,8 @@ func TestEnterInsertLineEnd(t *testing.T) {
|
|||||||
sendKeys(tm, "A", "X", "esc")
|
sendKeys(tm, "A", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helloX" {
|
if m.ActiveBuffer().Lines[0].String() != "helloX" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -129,8 +129,8 @@ func TestEnterInsertLineEnd(t *testing.T) {
|
|||||||
sendKeys(tm, "A", "X", "esc")
|
sendKeys(tm, "A", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helloX" {
|
if m.ActiveBuffer().Lines[0].String() != "helloX" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -147,8 +147,8 @@ func TestOpenLineBelow(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "new" {
|
if m.ActiveBuffer().Lines[1].String() != "new" {
|
||||||
t.Errorf("lines[1] = %q, want 'new'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'new'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -161,8 +161,8 @@ func TestOpenLineBelow(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "new" {
|
if m.ActiveBuffer().Lines[2].String() != "new" {
|
||||||
t.Errorf("lines[2] = %q, want 'new'", m.ActiveBuffer().Lines[2])
|
t.Errorf("lines[2] = %q, want 'new'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -175,8 +175,8 @@ func TestOpenLineBelow(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "new" {
|
if m.ActiveBuffer().Lines[2].String() != "new" {
|
||||||
t.Errorf("lines[2] = %q, want 'new'", m.ActiveBuffer().Lines[2])
|
t.Errorf("lines[2] = %q, want 'new'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -206,8 +206,8 @@ func TestOpenLineBelowWithCount(t *testing.T) {
|
|||||||
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
for i := 1; i <= 3; i++ {
|
for i := 1; i <= 3; i++ {
|
||||||
if m.ActiveBuffer().Lines[i] != "x" {
|
if m.ActiveBuffer().Lines[i].String() != "x" {
|
||||||
t.Errorf("lines[%d] = %q, want 'x'", i, m.ActiveBuffer().Lines[i])
|
t.Errorf("lines[%d] = %q, want 'x'", i, m.ActiveBuffer().Lines[i].String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -221,11 +221,11 @@ func TestOpenLineBelowWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "ab" {
|
if m.ActiveBuffer().Lines[1].String() != "ab" {
|
||||||
t.Errorf("lines[1] = %q, want 'ab'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'ab'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "ab" {
|
if m.ActiveBuffer().Lines[2].String() != "ab" {
|
||||||
t.Errorf("lines[2] = %q, want 'ab'", m.ActiveBuffer().Lines[2])
|
t.Errorf("lines[2] = %q, want 'ab'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -240,8 +240,8 @@ func TestOpenLineAbove(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "new" {
|
if m.ActiveBuffer().Lines[1].String() != "new" {
|
||||||
t.Errorf("lines[1] = %q, want 'new'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'new'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -254,8 +254,8 @@ func TestOpenLineAbove(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "new" {
|
if m.ActiveBuffer().Lines[0].String() != "new" {
|
||||||
t.Errorf("lines[0] = %q, want 'new'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'new'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -282,8 +282,8 @@ func TestOpenLineAboveWithCount(t *testing.T) {
|
|||||||
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
if m.ActiveBuffer().Lines[i] != "x" {
|
if m.ActiveBuffer().Lines[i].String() != "x" {
|
||||||
t.Errorf("lines[%d] = %q, want 'x'", i, m.ActiveBuffer().Lines[i])
|
t.Errorf("lines[%d] = %q, want 'x'", i, m.ActiveBuffer().Lines[i].String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -301,11 +301,11 @@ func TestInsertModeEnter(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != " world" {
|
if m.ActiveBuffer().Lines[1].String() != " world" {
|
||||||
t.Errorf("lines[1] = %q, want ' world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want ' world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -318,11 +318,11 @@ func TestInsertModeEnter(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("lines[1] = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -335,11 +335,11 @@ func TestInsertModeEnter(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "hello" {
|
if m.ActiveBuffer().Lines[1].String() != "hello" {
|
||||||
t.Errorf("lines[1] = %q, want 'hello'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'hello'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -351,8 +351,8 @@ func TestInsertModeBackspace(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "backspace", "esc")
|
sendKeys(tm, "i", "backspace", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -365,8 +365,8 @@ func TestInsertModeBackspace(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "helloworld" {
|
if m.ActiveBuffer().Lines[0].String() != "helloworld" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -376,8 +376,8 @@ func TestInsertModeBackspace(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "backspace", "esc")
|
sendKeys(tm, "i", "backspace", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -387,8 +387,8 @@ func TestInsertModeBackspace(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "backspace", "backspace", "backspace", "esc")
|
sendKeys(tm, "i", "backspace", "backspace", "backspace", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "he" {
|
if m.ActiveBuffer().Lines[0].String() != "he" {
|
||||||
t.Errorf("lines[0] = %q, want 'he'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'he'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -400,8 +400,8 @@ func TestInsertModeDelete(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "delete", "esc")
|
sendKeys(tm, "i", "delete", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "word" {
|
if m.ActiveBuffer().Lines[0].String() != "word" {
|
||||||
t.Errorf("lines[0] = %q, want 'word'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'word'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -414,8 +414,8 @@ func TestInsertModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "helloworld" {
|
if m.ActiveBuffer().Lines[0].String() != "helloworld" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -428,8 +428,8 @@ func TestInsertModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("len(lines) = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("lines[0] = %q, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -439,8 +439,8 @@ func TestInsertModeDelete(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "delete", "esc")
|
sendKeys(tm, "i", "delete", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -450,8 +450,8 @@ func TestInsertModeDelete(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "delete", "delete", "delete", "esc")
|
sendKeys(tm, "i", "delete", "delete", "delete", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ho" {
|
if m.ActiveBuffer().Lines[0].String() != "ho" {
|
||||||
t.Errorf("lines[0] = %q, want 'he'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'he'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -464,8 +464,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "left", "X", "esc")
|
sendKeys(tm, "i", "left", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -475,8 +475,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "right", "X", "esc")
|
sendKeys(tm, "i", "right", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -486,11 +486,11 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "up", "X", "esc")
|
sendKeys(tm, "i", "up", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("lines[1] = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -500,11 +500,11 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "down", "X", "esc")
|
sendKeys(tm, "i", "down", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "woXrld" {
|
if m.ActiveBuffer().Lines[1].String() != "woXrld" {
|
||||||
t.Errorf("lines[1] = %q, want 'woXrld'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'woXrld'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -514,8 +514,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "left", "X", "esc")
|
sendKeys(tm, "i", "left", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xhello" {
|
if m.ActiveBuffer().Lines[0].String() != "Xhello" {
|
||||||
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'Xhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -525,8 +525,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "right", "X", "esc")
|
sendKeys(tm, "a", "right", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "helloX" {
|
if m.ActiveBuffer().Lines[0].String() != "helloX" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -536,8 +536,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "up", "X", "esc")
|
sendKeys(tm, "i", "up", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -547,8 +547,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "down", "X", "esc")
|
sendKeys(tm, "i", "down", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXllo" {
|
||||||
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'heXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -558,8 +558,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "up", "X", "esc")
|
sendKeys(tm, "i", "up", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hiX" {
|
if m.ActiveBuffer().Lines[0].String() != "hiX" {
|
||||||
t.Errorf("lines[0] = %q, want 'hiX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hiX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -569,8 +569,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "down", "X", "esc")
|
sendKeys(tm, "i", "down", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[1] != "hiX" {
|
if m.ActiveBuffer().Lines[1].String() != "hiX" {
|
||||||
t.Errorf("lines[1] = %q, want 'hiX'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'hiX'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -580,8 +580,8 @@ func TestInsertModeArrowKeys(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "right", "right", "down", "X", "esc")
|
sendKeys(tm, "i", "right", "right", "down", "X", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[1] != "woXrld" {
|
if m.ActiveBuffer().Lines[1].String() != "woXrld" {
|
||||||
t.Errorf("lines[1] = %q, want 'woXrld'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'woXrld'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -593,8 +593,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("lines[0] = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 5 {
|
if m.ActiveWindow().Cursor.Col != 5 {
|
||||||
t.Errorf("CursorX() = %d, want '5'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '5'", m.ActiveWindow().Cursor.Col)
|
||||||
@ -607,8 +607,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
||||||
@ -621,8 +621,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello wo" {
|
if m.ActiveBuffer().Lines[0].String() != "hello wo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello wo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello wo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 7 {
|
if m.ActiveWindow().Cursor.Col != 7 {
|
||||||
t.Errorf("CursorX() = %d, want '7'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '7'", m.ActiveWindow().Cursor.Col)
|
||||||
@ -655,8 +655,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want '1'", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want '1'", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
||||||
@ -672,8 +672,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "ctrl+w", "esc")
|
sendKeys(tm, "i", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -686,8 +686,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "i", "ctrl+w", "esc")
|
sendKeys(tm, "i", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo" {
|
if m.ActiveBuffer().Lines[0].String() != "lo" {
|
||||||
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'lo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -700,8 +700,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "..." {
|
if m.ActiveBuffer().Lines[0].String() != "..." {
|
||||||
t.Errorf("lines[0] = %q, want '...'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '...'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 2 {
|
if m.ActiveWindow().Cursor.Col != 2 {
|
||||||
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
||||||
@ -714,8 +714,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello\t" {
|
if m.ActiveBuffer().Lines[0].String() != "hello\t" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello\\t'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello\\t'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 5 {
|
if m.ActiveWindow().Cursor.Col != 5 {
|
||||||
t.Errorf("CursorX() = %d, want 5", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 5", m.ActiveWindow().Cursor.Col)
|
||||||
@ -731,8 +731,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "helloworld" {
|
if m.ActiveBuffer().Lines[0].String() != "helloworld" {
|
||||||
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'helloworld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 4 {
|
if m.ActiveWindow().Cursor.Col != 4 {
|
||||||
t.Errorf("CursorX() = %d, want 4", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 4", m.ActiveWindow().Cursor.Col)
|
||||||
@ -748,8 +748,8 @@ func TestInsertModeDeletePreviousWord(t *testing.T) {
|
|||||||
sendKeys(tm, "a", "ctrl+w", "esc")
|
sendKeys(tm, "a", "ctrl+w", "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
|
|||||||
@ -633,8 +633,8 @@ func TestMoveToColumnWithOperator(t *testing.T) {
|
|||||||
// Deletes from column 1 to current position (exclusive), so "hello" deleted
|
// Deletes from column 1 to current position (exclusive), so "hello" deleted
|
||||||
// Result depends on inclusive/exclusive behavior
|
// Result depends on inclusive/exclusive behavior
|
||||||
// In Vim: d| from col 5 deletes chars 0-4, leaving " world"
|
// In Vim: d| from col 5 deletes chars 0-4, leaving " world"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -646,8 +646,8 @@ func TestMoveToColumnWithOperator(t *testing.T) {
|
|||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes from cursor (0) to column 5 (index 4), so "hell" deleted
|
// Deletes from cursor (0) to column 5 (index 4), so "hell" deleted
|
||||||
// Result: "o world"
|
// Result: "o world"
|
||||||
if m.ActiveBuffer().Lines[0] != "o world" {
|
if m.ActiveBuffer().Lines[0].String() != "o world" {
|
||||||
t.Errorf("Line(0) = %q, want 'o world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'o world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -720,8 +720,8 @@ func TestMoveToColumnInVisualMode(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Visual selection from 0 to 4 inclusive, delete "hello"
|
// Visual selection from 0 to 4 inclusive, delete "hello"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -928,8 +928,8 @@ func TestMoveForwardWORDWithOperator(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should delete "hello.world " (including trailing space)
|
// Should delete "hello.world " (including trailing space)
|
||||||
if m.ActiveBuffer().Lines[0] != "next" {
|
if m.ActiveBuffer().Lines[0].String() != "next" {
|
||||||
t.Errorf("Line(0) = %q, want 'next'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'next'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -946,11 +946,11 @@ func TestMoveForwardWORDWithOperator(t *testing.T) {
|
|||||||
sendKeys(tm2, "d", "w")
|
sendKeys(tm2, "d", "w")
|
||||||
m2 := getFinalModel(t, tm2)
|
m2 := getFinalModel(t, tm2)
|
||||||
|
|
||||||
if m1.ActiveBuffer().Lines[0] != "next" {
|
if m1.ActiveBuffer().Lines[0].String() != "next" {
|
||||||
t.Errorf("dW: Line(0) = %q, want 'next'", m1.ActiveBuffer().Lines[0])
|
t.Errorf("dW: Line(0) = %q, want 'next'", m1.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m2.ActiveBuffer().Lines[0] != ".world next" {
|
if m2.ActiveBuffer().Lines[0].String() != ".world next" {
|
||||||
t.Errorf("dw: Line(0) = %q, want '.world next'", m2.ActiveBuffer().Lines[0])
|
t.Errorf("dw: Line(0) = %q, want '.world next'", m2.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -960,8 +960,8 @@ func TestMoveForwardWORDWithOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "2", "W")
|
sendKeys(tm, "d", "2", "W")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "three four" {
|
if m.ActiveBuffer().Lines[0].String() != "three four" {
|
||||||
t.Errorf("Line(0) = %q, want 'three four'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'three four'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1028,8 +1028,8 @@ func TestMoveForwardWORDInVisualMode(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Visual selection from 0 to 12, delete "hello.world "
|
// Visual selection from 0 to 12, delete "hello.world "
|
||||||
if m.ActiveBuffer().Lines[0] != "ext" {
|
if m.ActiveBuffer().Lines[0].String() != "ext" {
|
||||||
t.Errorf("Line(0) = %q, want 'ext'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ext'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1557,8 +1557,8 @@ func TestMoveForwardWORDEndWithOperator(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should delete "hello.world" leaving " next"
|
// Should delete "hello.world" leaving " next"
|
||||||
if m.ActiveBuffer().Lines[0] != " next" {
|
if m.ActiveBuffer().Lines[0].String() != " next" {
|
||||||
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1570,8 +1570,8 @@ func TestMoveForwardWORDEndWithOperator(t *testing.T) {
|
|||||||
m1 := getFinalModel(t, tm1)
|
m1 := getFinalModel(t, tm1)
|
||||||
|
|
||||||
// 'de' should delete "hello" leaving ".world next"
|
// 'de' should delete "hello" leaving ".world next"
|
||||||
if m1.ActiveBuffer().Lines[0] != ".world next" {
|
if m1.ActiveBuffer().Lines[0].String() != ".world next" {
|
||||||
t.Errorf("'de': Line(0) = %q, want '.world next'", m1.ActiveBuffer().Lines[0])
|
t.Errorf("'de': Line(0) = %q, want '.world next'", m1.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now test 'dE'
|
// Now test 'dE'
|
||||||
@ -1580,8 +1580,8 @@ func TestMoveForwardWORDEndWithOperator(t *testing.T) {
|
|||||||
m2 := getFinalModel(t, tm2)
|
m2 := getFinalModel(t, tm2)
|
||||||
|
|
||||||
// 'dE' should delete "hello.world" leaving " next"
|
// 'dE' should delete "hello.world" leaving " next"
|
||||||
if m2.ActiveBuffer().Lines[0] != " next" {
|
if m2.ActiveBuffer().Lines[0].String() != " next" {
|
||||||
t.Errorf("'dE': Line(0) = %q, want ' next'", m2.ActiveBuffer().Lines[0])
|
t.Errorf("'dE': Line(0) = %q, want ' next'", m2.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1592,8 +1592,8 @@ func TestMoveForwardWORDEndWithOperator(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should delete "one.a two.b" leaving " three"
|
// Should delete "one.a two.b" leaving " three"
|
||||||
if m.ActiveBuffer().Lines[0] != " three" {
|
if m.ActiveBuffer().Lines[0].String() != " three" {
|
||||||
t.Errorf("Line(0) = %q, want ' three'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' three'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1653,8 +1653,8 @@ func TestMoveForwardWORDEndInVisualMode(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should delete "hello.world" leaving " next"
|
// Should delete "hello.world" leaving " next"
|
||||||
if m.ActiveBuffer().Lines[0] != " next" {
|
if m.ActiveBuffer().Lines[0].String() != " next" {
|
||||||
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -26,11 +26,11 @@ func TestChangeLine(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
// First line should be empty (ready for insert)
|
// First line should be empty (ready for insert)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -45,14 +45,14 @@ func TestChangeLine(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line three" {
|
if m.ActiveBuffer().Lines[2].String() != "line three" {
|
||||||
t.Errorf("Line(2) = %q, want 'line three'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line three'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -67,11 +67,11 @@ func TestChangeLine(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -109,8 +109,8 @@ func TestChangeLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -148,11 +148,11 @@ func TestChangeLineWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line three" {
|
if m.ActiveBuffer().Lines[1].String() != "line three" {
|
||||||
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -171,14 +171,14 @@ func TestChangeLineWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "one" {
|
if m.ActiveBuffer().Lines[0].String() != "one" {
|
||||||
t.Errorf("Line(0) = %q, want 'one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "five" {
|
if m.ActiveBuffer().Lines[2].String() != "five" {
|
||||||
t.Errorf("Line(2) = %q, want 'five'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'five'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -196,8 +196,8 @@ func TestChangeLineWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -235,8 +235,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "ello world" {
|
if m.ActiveBuffer().Lines[0].String() != "ello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'ello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -251,8 +251,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "llo world" {
|
if m.ActiveBuffer().Lines[0].String() != "llo world" {
|
||||||
t.Errorf("Line(0) = %q, want 'llo world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'llo world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -267,8 +267,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hell world" {
|
if m.ActiveBuffer().Lines[0].String() != "hell world" {
|
||||||
t.Errorf("Line(0) = %q, want 'hell world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hell world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -283,8 +283,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -299,8 +299,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -317,8 +317,8 @@ func TestChangeWithHorizontalMotion(t *testing.T) {
|
|||||||
}
|
}
|
||||||
// ^ is exclusive motion, so position 8 (space) is not included
|
// ^ is exclusive motion, so position 8 (space) is not included
|
||||||
// Delete positions 3-7 ("hello"), leaving " " + " world" = " world"
|
// Delete positions 3-7 ("hello"), leaving " " + " world" = " world"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -339,8 +339,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -355,8 +355,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "heworld" {
|
if m.ActiveBuffer().Lines[0].String() != "heworld" {
|
||||||
t.Errorf("Line(0) = %q, want 'heworld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'heworld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -371,8 +371,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -387,8 +387,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -403,8 +403,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "three four" {
|
if m.ActiveBuffer().Lines[0].String() != "three four" {
|
||||||
t.Errorf("Line(0) = %q, want 'three four'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'three four'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -419,8 +419,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "next" {
|
if m.ActiveBuffer().Lines[0].String() != "next" {
|
||||||
t.Errorf("Line(0) = %q, want 'next'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'next'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -435,8 +435,8 @@ func TestChangeWithWordMotion(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != " next" {
|
if m.ActiveBuffer().Lines[0].String() != " next" {
|
||||||
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' next'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -461,11 +461,11 @@ func TestChangeWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line three" {
|
if m.ActiveBuffer().Lines[1].String() != "line three" {
|
||||||
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -484,11 +484,11 @@ func TestChangeWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line three" {
|
if m.ActiveBuffer().Lines[1].String() != "line three" {
|
||||||
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line three'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -507,11 +507,11 @@ func TestChangeWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "four" {
|
if m.ActiveBuffer().Lines[1].String() != "four" {
|
||||||
t.Errorf("Line(1) = %q, want 'four'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'four'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -536,8 +536,8 @@ func TestChangeWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -556,8 +556,8 @@ func TestChangeWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -576,11 +576,11 @@ func TestChangeWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -601,8 +601,8 @@ func TestChangeToEndOfLine(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -617,8 +617,8 @@ func TestChangeToEndOfLine(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -634,8 +634,8 @@ func TestChangeToEndOfLine(t *testing.T) {
|
|||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
// Should delete last char
|
// Should delete last char
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -673,8 +673,8 @@ func TestSubstituteCharacter(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("Line(0) = %q, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -689,8 +689,8 @@ func TestSubstituteCharacter(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -705,8 +705,8 @@ func TestSubstituteCharacter(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hell'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -727,8 +727,8 @@ func TestSubstituteLine(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -740,14 +740,14 @@ func TestSubstituteLine(t *testing.T) {
|
|||||||
sendKeys(tm, "S")
|
sendKeys(tm, "S")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line three" {
|
if m.ActiveBuffer().Lines[2].String() != "line three" {
|
||||||
t.Errorf("Line(2) = %q, want 'line three'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line three'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -766,11 +766,11 @@ func TestSubstituteLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "three" {
|
if m.ActiveBuffer().Lines[1].String() != "three" {
|
||||||
t.Errorf("Line(1) = %q, want 'three'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'three'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -791,8 +791,8 @@ func TestVisualModeChange(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "ello world" {
|
if m.ActiveBuffer().Lines[0].String() != "ello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'ello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'ello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -807,8 +807,8 @@ func TestVisualModeChange(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -823,8 +823,8 @@ func TestVisualModeChange(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -878,8 +878,8 @@ func TestVisualLineModeChange(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -898,14 +898,14 @@ func TestVisualLineModeChange(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "" {
|
if m.ActiveBuffer().Lines[1].String() != "" {
|
||||||
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ''", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line four" {
|
if m.ActiveBuffer().Lines[2].String() != "line four" {
|
||||||
t.Errorf("Line(2) = %q, want 'line four'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line four'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -946,8 +946,8 @@ func TestChangeEdgeCases(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -963,8 +963,8 @@ func TestChangeEdgeCases(t *testing.T) {
|
|||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
// cw on last word should change to end of line
|
// cw on last word should change to end of line
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -979,8 +979,8 @@ func TestChangeEdgeCases(t *testing.T) {
|
|||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
t.Errorf("Mode() = %v, want InsertMode", m.Mode())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -24,8 +24,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %s, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -44,11 +44,11 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 1 {
|
if m.ActiveWindow().Cursor.Line != 1 {
|
||||||
t.Errorf("CursorY() = %d, want '1'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '1'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "testing" {
|
if m.ActiveBuffer().Lines[1].String() != "testing" {
|
||||||
t.Errorf("Line(1) = %s, want 'testing'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %s, want 'testing'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -67,8 +67,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -87,8 +87,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %s, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -107,12 +107,12 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 1 {
|
if m.ActiveWindow().Cursor.Line != 1 {
|
||||||
t.Errorf("CursorY() = %d, want '1'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '1'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.ActiveBuffer().Lines[1] != "another line" {
|
if m.ActiveBuffer().Lines[1].String() != "another line" {
|
||||||
t.Errorf("Line(1) = %s, want 'another line'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %s, want 'another line'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -131,8 +131,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -151,8 +151,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want '0'", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -176,8 +176,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -190,8 +190,8 @@ func TestDeleteLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -210,8 +210,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("Line(0) = %s, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -224,8 +224,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 2 {
|
if m.ActiveWindow().Cursor.Col != 2 {
|
||||||
t.Errorf("CursorX() = %d, want '2'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '2'", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("Line(0) = %s, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -238,8 +238,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 4 {
|
if m.ActiveWindow().Cursor.Col != 4 {
|
||||||
t.Errorf("CursorX() = %d, want '4'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '4'", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("Line(0) = %s, want 'hell'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'hell'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -252,8 +252,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want '0'", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %s, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -267,8 +267,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 1 {
|
if m.ActiveWindow().Cursor.Col != 1 {
|
||||||
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hllo" {
|
if m.ActiveBuffer().Lines[0].String() != "hllo" {
|
||||||
t.Errorf("Line(0) = %q, want 'hllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -282,8 +282,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 3 {
|
if m.ActiveWindow().Cursor.Col != 3 {
|
||||||
t.Errorf("CursorX() = %d, want 3", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 3", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "helo" {
|
if m.ActiveBuffer().Lines[0].String() != "helo" {
|
||||||
t.Errorf("Line(0) = %q, want 'helo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'helo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -293,8 +293,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "d", "l")
|
sendKeys(tm, "2", "d", "l")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -304,8 +304,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "2", "l")
|
sendKeys(tm, "d", "2", "l")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -315,8 +315,8 @@ func TestDeleteOperatorWithHorozontalMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "d", "h")
|
sendKeys(tm, "2", "d", "h")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heo" {
|
if m.ActiveBuffer().Lines[0].String() != "heo" {
|
||||||
t.Errorf("Line(0) = %q, want 'heo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'heo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -331,11 +331,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 4" {
|
if m.ActiveBuffer().Lines[1].String() != "line 4" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 4'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 4'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 1 {
|
if m.ActiveWindow().Cursor.Line != 1 {
|
||||||
t.Errorf("CursorY() = %d, want 1", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 1", m.ActiveWindow().Cursor.Line)
|
||||||
@ -351,8 +351,8 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 3" {
|
if m.ActiveBuffer().Lines[0].String() != "line 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -370,11 +370,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 2" {
|
if m.ActiveBuffer().Lines[1].String() != "line 2" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -387,11 +387,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 5" {
|
if m.ActiveBuffer().Lines[1].String() != "line 5" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -404,11 +404,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 5" {
|
if m.ActiveBuffer().Lines[1].String() != "line 5" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -421,11 +421,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 4" {
|
if m.ActiveBuffer().Lines[1].String() != "line 4" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 4'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 4'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 1 {
|
if m.ActiveWindow().Cursor.Line != 1 {
|
||||||
t.Errorf("CursorY() = %d, want 1", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 1", m.ActiveWindow().Cursor.Line)
|
||||||
@ -443,11 +443,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 2" {
|
if m.ActiveBuffer().Lines[0].String() != "line 2" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 3" {
|
if m.ActiveBuffer().Lines[1].String() != "line 3" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 3'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 3'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -460,8 +460,8 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 3" {
|
if m.ActiveBuffer().Lines[0].String() != "line 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -477,11 +477,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 5" {
|
if m.ActiveBuffer().Lines[1].String() != "line 5" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -494,11 +494,11 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 5" {
|
if m.ActiveBuffer().Lines[1].String() != "line 5" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -512,8 +512,8 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -527,8 +527,8 @@ func TestDeleteOperatorWithVerticalMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 3" {
|
if m.ActiveBuffer().Lines[0].String() != "line 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -541,8 +541,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "w")
|
sendKeys(tm, "d", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -555,8 +555,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "w")
|
sendKeys(tm, "d", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heworld" {
|
if m.ActiveBuffer().Lines[0].String() != "heworld" {
|
||||||
t.Errorf("Line(0) = %q, want \"heworld\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"heworld\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 2 {
|
if m.ActiveWindow().Cursor.Col != 2 {
|
||||||
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
||||||
@ -569,8 +569,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "w")
|
sendKeys(tm, "d", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -580,8 +580,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "d", "w")
|
sendKeys(tm, "2", "d", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "three four" {
|
if m.ActiveBuffer().Lines[0].String() != "three four" {
|
||||||
t.Errorf("Line(0) = %q, want \"three four\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"three four\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -591,8 +591,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "2", "w")
|
sendKeys(tm, "d", "2", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "three four" {
|
if m.ActiveBuffer().Lines[0].String() != "three four" {
|
||||||
t.Errorf("Line(0) = %q, want \"three four\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"three four\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -603,8 +603,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// 'w' motion stops at punctuation, so it should delete "hello"
|
// 'w' motion stops at punctuation, so it should delete "hello"
|
||||||
if m.ActiveBuffer().Lines[0] != ", world" {
|
if m.ActiveBuffer().Lines[0].String() != ", world" {
|
||||||
t.Errorf("Line(0) = %q, want \", world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \", world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -616,8 +616,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// 'e' is inclusive - deletes "hello" (cols 0-4 inclusive), leaves " world"
|
// 'e' is inclusive - deletes "hello" (cols 0-4 inclusive), leaves " world"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want \" world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \" world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -631,8 +631,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From 'l' (col 2) to 'o' (col 4) inclusive → deletes "llo"
|
// From 'l' (col 2) to 'o' (col 4) inclusive → deletes "llo"
|
||||||
if m.ActiveBuffer().Lines[0] != "he world" {
|
if m.ActiveBuffer().Lines[0].String() != "he world" {
|
||||||
t.Errorf("Line(0) = %q, want \"he world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"he world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -643,8 +643,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From 'o' of "hello" (col 4) to 'd' of "world" (col 10) inclusive
|
// From 'o' of "hello" (col 4) to 'd' of "world" (col 10) inclusive
|
||||||
if m.ActiveBuffer().Lines[0] != "hell" {
|
if m.ActiveBuffer().Lines[0].String() != "hell" {
|
||||||
t.Errorf("Line(0) = %q, want \"hell\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hell\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -655,8 +655,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes "one" and " two" (to end of second word inclusive)
|
// Deletes "one" and " two" (to end of second word inclusive)
|
||||||
if m.ActiveBuffer().Lines[0] != " three four" {
|
if m.ActiveBuffer().Lines[0].String() != " three four" {
|
||||||
t.Errorf("Line(0) = %q, want \" three four\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \" three four\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -667,8 +667,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "b")
|
sendKeys(tm, "d", "b")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -679,8 +679,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// cursor at 'r' of "world", db should delete back to start of "world"
|
// cursor at 'r' of "world", db should delete back to start of "world"
|
||||||
if m.ActiveBuffer().Lines[0] != "hello rld" {
|
if m.ActiveBuffer().Lines[0].String() != "hello rld" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello rld\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello rld\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -691,8 +691,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// cursor at 'w', db should delete "hello " back
|
// cursor at 'w', db should delete "hello " back
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -703,8 +703,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// cursor at 'f' of "four", 2db should delete "two three "
|
// cursor at 'f' of "four", 2db should delete "two three "
|
||||||
if m.ActiveBuffer().Lines[0] != "one four" {
|
if m.ActiveBuffer().Lines[0].String() != "one four" {
|
||||||
t.Errorf("Line(0) = %q, want \"one four\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"one four\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -715,8 +715,8 @@ func TestDeleteOperatorWithWordMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// cursor at 'd' (last char), db should delete back to start of "world"
|
// cursor at 'd' (last char), db should delete back to start of "world"
|
||||||
if m.ActiveBuffer().Lines[0] != "hello d" {
|
if m.ActiveBuffer().Lines[0].String() != "hello d" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello d\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello d\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -729,8 +729,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "0")
|
sendKeys(tm, "d", "0")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -740,8 +740,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "0")
|
sendKeys(tm, "d", "0")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -754,8 +754,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "0")
|
sendKeys(tm, "d", "0")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "d" {
|
if m.ActiveBuffer().Lines[0].String() != "d" {
|
||||||
t.Errorf("Line(0) = %q, want \"d\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"d\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -765,8 +765,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "0")
|
sendKeys(tm, "d", "0")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "lo world" {
|
if m.ActiveBuffer().Lines[0].String() != "lo world" {
|
||||||
t.Errorf("Line(0) = %q, want \"lo world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"lo world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -777,8 +777,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "$")
|
sendKeys(tm, "d", "$")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -788,8 +788,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "$")
|
sendKeys(tm, "d", "$")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -799,8 +799,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "$")
|
sendKeys(tm, "d", "$")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worl" {
|
if m.ActiveBuffer().Lines[0].String() != "hello worl" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello worl\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello worl\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -810,11 +810,11 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "$")
|
sendKeys(tm, "d", "$")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello \"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "second line" {
|
if m.ActiveBuffer().Lines[1].String() != "second line" {
|
||||||
t.Errorf("Line(1) = %q, want \"second line\"", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want \"second line\"", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
@ -827,8 +827,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "$")
|
sendKeys(tm, "d", "$")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
@ -843,8 +843,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From col 0 to first non-whitespace (col 3, 'h') - deletes leading spaces
|
// From col 0 to first non-whitespace (col 3, 'h') - deletes leading spaces
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -858,8 +858,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From col 1 to first non-whitespace (col 3, 'h') - deletes cols 1-2
|
// From col 1 to first non-whitespace (col 3, 'h') - deletes cols 1-2
|
||||||
if m.ActiveBuffer().Lines[0] != " hello world" {
|
if m.ActiveBuffer().Lines[0].String() != " hello world" {
|
||||||
t.Errorf("Line(0) = %q, want \" hello world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \" hello world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 1 {
|
if m.ActiveWindow().Cursor.Col != 1 {
|
||||||
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
||||||
@ -874,8 +874,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From col 6 ('l') back to col 3 ('h')
|
// From col 6 ('l') back to col 3 ('h')
|
||||||
// Should delete "hel" leaving " lo world"
|
// Should delete "hel" leaving " lo world"
|
||||||
if m.ActiveBuffer().Lines[0] != " lo world" {
|
if m.ActiveBuffer().Lines[0].String() != " lo world" {
|
||||||
t.Errorf("Line(0) = %q, want \" lo world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \" lo world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -887,8 +887,8 @@ func TestDeleteOperatorWithLinePositionMotion(t *testing.T) {
|
|||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// From col 5 (' ') back to col 0 ('h')
|
// From col 5 (' ') back to col 0 ('h')
|
||||||
// Should delete "hello" leaving " world"
|
// Should delete "hello" leaving " world"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want \" world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \" world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -903,11 +903,11 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 2" {
|
if m.ActiveBuffer().Lines[1].String() != "line 2" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -920,8 +920,8 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -934,11 +934,11 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 2" {
|
if m.ActiveBuffer().Lines[1].String() != "line 2" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -962,11 +962,11 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 4" {
|
if m.ActiveBuffer().Lines[0].String() != "line 4" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 4'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 4'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 5" {
|
if m.ActiveBuffer().Lines[1].String() != "line 5" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 5'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -979,8 +979,8 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -993,11 +993,11 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 2" {
|
if m.ActiveBuffer().Lines[0].String() != "line 2" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 3" {
|
if m.ActiveBuffer().Lines[1].String() != "line 3" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 3'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 3'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1021,8 +1021,8 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1035,8 +1035,8 @@ func TestDeleteOperatorWithJumpMotion(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -19,14 +19,14 @@ func TestPasteLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 2" {
|
if m.ActiveBuffer().Lines[2].String() != "line 2" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -56,8 +56,8 @@ func TestPasteLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "inserted" {
|
if m.ActiveBuffer().Lines[2].String() != "inserted" {
|
||||||
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 2 {
|
if m.ActiveWindow().Cursor.Line != 2 {
|
||||||
t.Errorf("CursorY() = %d, want 2", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 2", m.ActiveWindow().Cursor.Line)
|
||||||
@ -76,8 +76,8 @@ func TestPasteLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "inserted" {
|
if m.ActiveBuffer().Lines[2].String() != "inserted" {
|
||||||
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -95,20 +95,20 @@ func TestPasteLinewiseMultipleLines(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 5 {
|
if m.ActiveBuffer().LineCount() != 5 {
|
||||||
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "first" {
|
if m.ActiveBuffer().Lines[1].String() != "first" {
|
||||||
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "second" {
|
if m.ActiveBuffer().Lines[2].String() != "second" {
|
||||||
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "third" {
|
if m.ActiveBuffer().Lines[3].String() != "third" {
|
||||||
t.Errorf("Line(3) = %q, want 'third'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'third'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "line 2" {
|
if m.ActiveBuffer().Lines[4].String() != "line 2" {
|
||||||
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -141,14 +141,14 @@ func TestPasteLinewiseWithCount(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
// Both "inserted" lines should appear after line 1
|
// Both "inserted" lines should appear after line 1
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "inserted" {
|
if m.ActiveBuffer().Lines[2].String() != "inserted" {
|
||||||
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "line 2" {
|
if m.ActiveBuffer().Lines[3].String() != "line 2" {
|
||||||
t.Errorf("Line(3) = %q, want 'line 2'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'line 2'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -165,8 +165,8 @@ func TestPasteLinewiseWithCount(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
for i := 1; i <= 3; i++ {
|
for i := 1; i <= 3; i++ {
|
||||||
if m.ActiveBuffer().Lines[i] != "pasted" {
|
if m.ActiveBuffer().Lines[i].String() != "pasted" {
|
||||||
t.Errorf("Line(%d) = %q, want 'pasted'", i, m.ActiveBuffer().Lines[i])
|
t.Errorf("Line(%d) = %q, want 'pasted'", i, m.ActiveBuffer().Lines[i].String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -184,20 +184,20 @@ func TestPasteLinewiseWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 5 {
|
if m.ActiveBuffer().LineCount() != 5 {
|
||||||
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "original" {
|
if m.ActiveBuffer().Lines[0].String() != "original" {
|
||||||
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "first" {
|
if m.ActiveBuffer().Lines[1].String() != "first" {
|
||||||
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "second" {
|
if m.ActiveBuffer().Lines[2].String() != "second" {
|
||||||
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "first" {
|
if m.ActiveBuffer().Lines[3].String() != "first" {
|
||||||
t.Errorf("Line(3) = %q, want 'first'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'first'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "second" {
|
if m.ActiveBuffer().Lines[4].String() != "second" {
|
||||||
t.Errorf("Line(4) = %q, want 'second'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'second'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -231,14 +231,14 @@ func TestPasteBeforeLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 2" {
|
if m.ActiveBuffer().Lines[2].String() != "line 2" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -268,11 +268,11 @@ func TestPasteBeforeLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "inserted" {
|
if m.ActiveBuffer().Lines[0].String() != "inserted" {
|
||||||
t.Errorf("Line(0) = %q, want 'inserted'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'inserted'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 1" {
|
if m.ActiveBuffer().Lines[1].String() != "line 1" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -291,11 +291,11 @@ func TestPasteBeforeLinewiseBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 2" {
|
if m.ActiveBuffer().Lines[2].String() != "line 2" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -313,20 +313,20 @@ func TestPasteBeforeLinewiseMultipleLines(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 5 {
|
if m.ActiveBuffer().LineCount() != 5 {
|
||||||
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "first" {
|
if m.ActiveBuffer().Lines[1].String() != "first" {
|
||||||
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'first'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "second" {
|
if m.ActiveBuffer().Lines[2].String() != "second" {
|
||||||
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'second'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "third" {
|
if m.ActiveBuffer().Lines[3].String() != "third" {
|
||||||
t.Errorf("Line(3) = %q, want 'third'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'third'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "line 2" {
|
if m.ActiveBuffer().Lines[4].String() != "line 2" {
|
||||||
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -359,14 +359,14 @@ func TestPasteBeforeLinewiseWithCount(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
// Both "inserted" lines should appear before line 2
|
// Both "inserted" lines should appear before line 2
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "inserted" {
|
if m.ActiveBuffer().Lines[2].String() != "inserted" {
|
||||||
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'inserted'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "line 2" {
|
if m.ActiveBuffer().Lines[3].String() != "line 2" {
|
||||||
t.Errorf("Line(3) = %q, want 'line 2'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'line 2'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -383,12 +383,12 @@ func TestPasteBeforeLinewiseWithCount(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
if m.ActiveBuffer().Lines[i] != "pasted" {
|
if m.ActiveBuffer().Lines[i].String() != "pasted" {
|
||||||
t.Errorf("Line(%d) = %q, want 'pasted'", i, m.ActiveBuffer().Lines[i])
|
t.Errorf("Line(%d) = %q, want 'pasted'", i, m.ActiveBuffer().Lines[i].String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "original" {
|
if m.ActiveBuffer().Lines[3].String() != "original" {
|
||||||
t.Errorf("Line(3) = %q, want 'original'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'original'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -405,20 +405,20 @@ func TestPasteBeforeLinewiseWithCount(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 5 {
|
if m.ActiveBuffer().LineCount() != 5 {
|
||||||
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 5", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "first" {
|
if m.ActiveBuffer().Lines[0].String() != "first" {
|
||||||
t.Errorf("Line(0) = %q, want 'first'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'first'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "second" {
|
if m.ActiveBuffer().Lines[1].String() != "second" {
|
||||||
t.Errorf("Line(1) = %q, want 'second'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'second'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "first" {
|
if m.ActiveBuffer().Lines[2].String() != "first" {
|
||||||
t.Errorf("Line(2) = %q, want 'first'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'first'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "second" {
|
if m.ActiveBuffer().Lines[3].String() != "second" {
|
||||||
t.Errorf("Line(3) = %q, want 'second'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'second'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "original" {
|
if m.ActiveBuffer().Lines[4].String() != "original" {
|
||||||
t.Errorf("Line(4) = %q, want 'original'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'original'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -450,11 +450,11 @@ func TestPasteBeforeLinewiseEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "inserted" {
|
if m.ActiveBuffer().Lines[0].String() != "inserted" {
|
||||||
t.Errorf("Line(0) = %q, want 'inserted'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'inserted'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "only line" {
|
if m.ActiveBuffer().Lines[1].String() != "only line" {
|
||||||
t.Errorf("Line(1) = %q, want 'only line'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'only line'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -481,11 +481,11 @@ func TestPasteBeforeLinewiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "P")
|
sendKeys(tm, "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " indented" {
|
if m.ActiveBuffer().Lines[0].String() != " indented" {
|
||||||
t.Errorf("Line(0) = %q, want ' indented'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' indented'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "\ttabbed" {
|
if m.ActiveBuffer().Lines[1].String() != "\ttabbed" {
|
||||||
t.Errorf("Line(1) = %q, want '\\ttabbed'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want '\\ttabbed'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -502,8 +502,8 @@ func TestPasteBeforeLinewiseEdgeCases(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 11", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 11", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
// Original should be at the end
|
// Original should be at the end
|
||||||
if m.ActiveBuffer().Lines[10] != "original" {
|
if m.ActiveBuffer().Lines[10].String() != "original" {
|
||||||
t.Errorf("Line(10) = %q, want 'original'", m.ActiveBuffer().Lines[10])
|
t.Errorf("Line(10) = %q, want 'original'", m.ActiveBuffer().Lines[10].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -521,11 +521,11 @@ func TestPasteLinewiseEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "only line" {
|
if m.ActiveBuffer().Lines[0].String() != "only line" {
|
||||||
t.Errorf("Line(0) = %q, want 'only line'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'only line'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "inserted" {
|
if m.ActiveBuffer().Lines[1].String() != "inserted" {
|
||||||
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'inserted'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -552,11 +552,11 @@ func TestPasteLinewiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[1] != " indented" {
|
if m.ActiveBuffer().Lines[1].String() != " indented" {
|
||||||
t.Errorf("Line(1) = %q, want ' indented'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want ' indented'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "\ttabbed" {
|
if m.ActiveBuffer().Lines[2].String() != "\ttabbed" {
|
||||||
t.Errorf("Line(2) = %q, want '\\ttabbed'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want '\\ttabbed'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -590,8 +590,8 @@ func TestPasteCharwiseBasic(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should insert after 'o': "helloXYZ world"
|
// Should insert after 'o': "helloXYZ world"
|
||||||
if m.ActiveBuffer().Lines[0] != "helloXYZ world" {
|
if m.ActiveBuffer().Lines[0].String() != "helloXYZ world" {
|
||||||
t.Errorf("Line(0) = %q, want 'helloXYZ world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'helloXYZ world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -604,8 +604,8 @@ func TestPasteCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hXello" {
|
if m.ActiveBuffer().Lines[0].String() != "hXello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hXello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hXello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -618,8 +618,8 @@ func TestPasteCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello!" {
|
if m.ActiveBuffer().Lines[0].String() != "hello!" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello!'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello!'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -632,8 +632,8 @@ func TestPasteCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "text" {
|
if m.ActiveBuffer().Lines[0].String() != "text" {
|
||||||
t.Errorf("Line(0) = %q, want 'text'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'text'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -662,8 +662,8 @@ func TestPasteCharwiseWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "p")
|
sendKeys(tm, "2", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hXXello" {
|
if m.ActiveBuffer().Lines[0].String() != "hXXello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hXXello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hXXello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -676,8 +676,8 @@ func TestPasteCharwiseWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "3", "p")
|
sendKeys(tm, "3", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "start--- end" {
|
if m.ActiveBuffer().Lines[0].String() != "start--- end" {
|
||||||
t.Errorf("Line(0) = %q, want 'start--- end'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'start--- end'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -690,8 +690,8 @@ func TestPasteCharwiseWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "p")
|
sendKeys(tm, "2", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "aXYXYb" {
|
if m.ActiveBuffer().Lines[0].String() != "aXYXYb" {
|
||||||
t.Errorf("Line(0) = %q, want 'aXYXYb'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'aXYXYb'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -742,8 +742,8 @@ func TestPasteBeforeCharwiseBasic(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should insert before space: "helloXYZ world"
|
// Should insert before space: "helloXYZ world"
|
||||||
if m.ActiveBuffer().Lines[0] != "helloXYZ world" {
|
if m.ActiveBuffer().Lines[0].String() != "helloXYZ world" {
|
||||||
t.Errorf("Line(0) = %q, want 'helloXYZ world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'helloXYZ world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -756,8 +756,8 @@ func TestPasteBeforeCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "P")
|
sendKeys(tm, "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xhello" {
|
if m.ActiveBuffer().Lines[0].String() != "Xhello" {
|
||||||
t.Errorf("Line(0) = %q, want 'Xhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'Xhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -770,8 +770,8 @@ func TestPasteBeforeCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "P")
|
sendKeys(tm, "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hellXo" {
|
if m.ActiveBuffer().Lines[0].String() != "hellXo" {
|
||||||
t.Errorf("Line(0) = %q, want 'hellXo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hellXo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -784,8 +784,8 @@ func TestPasteBeforeCharwiseBasic(t *testing.T) {
|
|||||||
sendKeys(tm, "P")
|
sendKeys(tm, "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "text" {
|
if m.ActiveBuffer().Lines[0].String() != "text" {
|
||||||
t.Errorf("Line(0) = %q, want 'text'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'text'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -800,8 +800,8 @@ func TestPasteBeforeCharwiseWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "2", "P")
|
sendKeys(tm, "2", "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "heXXllo" {
|
if m.ActiveBuffer().Lines[0].String() != "heXXllo" {
|
||||||
t.Errorf("Line(0) = %q, want 'heXXllo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'heXXllo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -814,8 +814,8 @@ func TestPasteBeforeCharwiseWithCount(t *testing.T) {
|
|||||||
sendKeys(tm, "3", "P")
|
sendKeys(tm, "3", "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a---b" {
|
if m.ActiveBuffer().Lines[0].String() != "a---b" {
|
||||||
t.Errorf("Line(0) = %q, want 'a---b'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a---b'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -838,11 +838,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "heAAA" {
|
if m.ActiveBuffer().Lines[0].String() != "heAAA" {
|
||||||
t.Errorf("Line(0) = %q, want 'heAAA'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'heAAA'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "BBBllo" {
|
if m.ActiveBuffer().Lines[1].String() != "BBBllo" {
|
||||||
t.Errorf("Line(1) = %q, want 'BBBllo'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'BBBllo'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -859,14 +859,14 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "teAAA" {
|
if m.ActiveBuffer().Lines[0].String() != "teAAA" {
|
||||||
t.Errorf("Line(0) = %q, want 'teAAA'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'teAAA'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "BBB" {
|
if m.ActiveBuffer().Lines[1].String() != "BBB" {
|
||||||
t.Errorf("Line(1) = %q, want 'BBB'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'BBB'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "CCCst" {
|
if m.ActiveBuffer().Lines[2].String() != "CCCst" {
|
||||||
t.Errorf("Line(2) = %q, want 'CCCst'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'CCCst'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -880,11 +880,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// After 'h': "hX\nYello"
|
// After 'h': "hX\nYello"
|
||||||
if m.ActiveBuffer().Lines[0] != "hX" {
|
if m.ActiveBuffer().Lines[0].String() != "hX" {
|
||||||
t.Errorf("Line(0) = %q, want 'hX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "Yello" {
|
if m.ActiveBuffer().Lines[1].String() != "Yello" {
|
||||||
t.Errorf("Line(1) = %q, want 'Yello'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'Yello'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -898,11 +898,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// After 'o': "helloX\nY"
|
// After 'o': "helloX\nY"
|
||||||
if m.ActiveBuffer().Lines[0] != "helloX" {
|
if m.ActiveBuffer().Lines[0].String() != "helloX" {
|
||||||
t.Errorf("Line(0) = %q, want 'helloX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'helloX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "Y" {
|
if m.ActiveBuffer().Lines[1].String() != "Y" {
|
||||||
t.Errorf("Line(1) = %q, want 'Y'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'Y'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -915,11 +915,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "AAA" {
|
if m.ActiveBuffer().Lines[0].String() != "AAA" {
|
||||||
t.Errorf("Line(0) = %q, want 'AAA'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'AAA'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "BBB" {
|
if m.ActiveBuffer().Lines[1].String() != "BBB" {
|
||||||
t.Errorf("Line(1) = %q, want 'BBB'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'BBB'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -933,11 +933,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Before 'l': "heX\nYllo"
|
// Before 'l': "heX\nYllo"
|
||||||
if m.ActiveBuffer().Lines[0] != "heX" {
|
if m.ActiveBuffer().Lines[0].String() != "heX" {
|
||||||
t.Errorf("Line(0) = %q, want 'heX'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'heX'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "Yllo" {
|
if m.ActiveBuffer().Lines[1].String() != "Yllo" {
|
||||||
t.Errorf("Line(1) = %q, want 'Yllo'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'Yllo'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -951,11 +951,11 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Before 'h': "X\nYhello"
|
// Before 'h': "X\nYhello"
|
||||||
if m.ActiveBuffer().Lines[0] != "X" {
|
if m.ActiveBuffer().Lines[0].String() != "X" {
|
||||||
t.Errorf("Line(0) = %q, want 'X'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'X'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "Yhello" {
|
if m.ActiveBuffer().Lines[1].String() != "Yhello" {
|
||||||
t.Errorf("Line(1) = %q, want 'Yhello'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'Yhello'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -972,14 +972,14 @@ func TestPasteCharwiseMultiLine(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "teA" {
|
if m.ActiveBuffer().Lines[0].String() != "teA" {
|
||||||
t.Errorf("Line(0) = %q, want 'teA'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'teA'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "BA" {
|
if m.ActiveBuffer().Lines[1].String() != "BA" {
|
||||||
t.Errorf("Line(1) = %q, want 'BA'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'BA'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "Bst" {
|
if m.ActiveBuffer().Lines[2].String() != "Bst" {
|
||||||
t.Errorf("Line(2) = %q, want 'Bst'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'Bst'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1030,8 +1030,8 @@ func TestPasteBlockwiseBasic(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Current implementation errors - lines should be unchanged
|
// Current implementation errors - lines should be unchanged
|
||||||
if m.ActiveBuffer().Lines[0] != "aaaa" {
|
if m.ActiveBuffer().Lines[0].String() != "aaaa" {
|
||||||
t.Errorf("Line(0) = %q, want 'aaaa' (unchanged due to error)", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'aaaa' (unchanged due to error)", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1045,8 +1045,8 @@ func TestPasteBlockwiseBasic(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Current implementation errors - lines should be unchanged
|
// Current implementation errors - lines should be unchanged
|
||||||
if m.ActiveBuffer().Lines[0] != "aaaa" {
|
if m.ActiveBuffer().Lines[0].String() != "aaaa" {
|
||||||
t.Errorf("Line(0) = %q, want 'aaaa' (unchanged due to error)", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'aaaa' (unchanged due to error)", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1065,8 +1065,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1079,8 +1079,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1093,8 +1093,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a\tb" {
|
if m.ActiveBuffer().Lines[0].String() != "a\tb" {
|
||||||
t.Errorf("Line(0) = %q, want 'a\\tb'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a\\tb'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1107,8 +1107,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "a b" {
|
if m.ActiveBuffer().Lines[0].String() != "a b" {
|
||||||
t.Errorf("Line(0) = %q, want 'a b'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'a b'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1121,8 +1121,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "p")
|
sendKeys(tm, "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " X " {
|
if m.ActiveBuffer().Lines[0].String() != " X " {
|
||||||
t.Errorf("Line(0) = %q, want ' X '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' X '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1135,8 +1135,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "P")
|
sendKeys(tm, "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1149,8 +1149,8 @@ func TestPasteCharwiseEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "1", "0", "p") // 10p
|
sendKeys(tm, "1", "0", "p") // 10p
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "aXXXXXXXXXXb" {
|
if m.ActiveBuffer().Lines[0].String() != "aXXXXXXXXXXb" {
|
||||||
t.Errorf("Line(0) = %q, want 'aXXXXXXXXXXb'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'aXXXXXXXXXXb'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1170,8 +1170,8 @@ func TestYankThenPasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "p") // paste
|
sendKeys(tm, "p") // paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1185,8 +1185,8 @@ func TestYankThenPasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "p") // paste
|
sendKeys(tm, "p") // paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1200,8 +1200,8 @@ func TestYankThenPasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "p") // paste
|
sendKeys(tm, "p") // paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhel" {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhel" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhel'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhel'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1226,8 +1226,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "l", "l", "p") // select "hello", paste
|
sendKeys(tm, "v", "l", "l", "l", "l", "p") // select "hello", paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "REPLACED world" {
|
if m.ActiveBuffer().Lines[0].String() != "REPLACED world" {
|
||||||
t.Errorf("Line(0) = %q, want 'REPLACED world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'REPLACED world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1240,8 +1240,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "p") // select "h", paste
|
sendKeys(tm, "v", "p") // select "h", paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xello world" {
|
if m.ActiveBuffer().Lines[0].String() != "Xello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'Xello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'Xello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1254,8 +1254,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "e", "p") // select "world", paste
|
sendKeys(tm, "v", "e", "p") // select "world", paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello EARTH goodbye" {
|
if m.ActiveBuffer().Lines[0].String() != "hello EARTH goodbye" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello EARTH goodbye'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello EARTH goodbye'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1268,8 +1268,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "$", "p") // select "world", paste
|
sendKeys(tm, "v", "$", "p") // select "world", paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello universe" {
|
if m.ActiveBuffer().Lines[0].String() != "hello universe" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello universe'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello universe'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1282,8 +1282,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "l", "l", "p") // select "hello", paste empty
|
sendKeys(tm, "v", "l", "l", "l", "l", "p") // select "hello", paste empty
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1303,8 +1303,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should join: "line " + "REPLACED" + "two"
|
// Should join: "line " + "REPLACED" + "two"
|
||||||
if m.ActiveBuffer().Lines[0] != "line REPLACEDtwo" {
|
if m.ActiveBuffer().Lines[0].String() != "line REPLACEDtwo" {
|
||||||
t.Errorf("Line(0) = %q, want 'line REPLACEDtwo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line REPLACEDtwo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
@ -1359,8 +1359,8 @@ func TestVisualModePasteCharwise(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Linewise register content is pasted inline replacing the selection
|
// Linewise register content is pasted inline replacing the selection
|
||||||
if m.ActiveBuffer().Lines[0] != "NEW LINE world" {
|
if m.ActiveBuffer().Lines[0].String() != "NEW LINE world" {
|
||||||
t.Errorf("Line(0) = %q, want 'NEW LINE world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'NEW LINE world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1382,8 +1382,8 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "REPLACED" {
|
if m.ActiveBuffer().Lines[1].String() != "REPLACED" {
|
||||||
t.Errorf("Line(1) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1399,8 +1399,8 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "NEW LINE" {
|
if m.ActiveBuffer().Lines[1].String() != "NEW LINE" {
|
||||||
t.Errorf("Line(1) = %q, want 'NEW LINE'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'NEW LINE'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1416,14 +1416,14 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "REPLACED" {
|
if m.ActiveBuffer().Lines[1].String() != "REPLACED" {
|
||||||
t.Errorf("Line(1) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line four" {
|
if m.ActiveBuffer().Lines[2].String() != "line four" {
|
||||||
t.Errorf("Line(2) = %q, want 'line four'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line four'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1439,17 +1439,17 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "NEW A" {
|
if m.ActiveBuffer().Lines[1].String() != "NEW A" {
|
||||||
t.Errorf("Line(1) = %q, want 'NEW A'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'NEW A'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "NEW B" {
|
if m.ActiveBuffer().Lines[2].String() != "NEW B" {
|
||||||
t.Errorf("Line(2) = %q, want 'NEW B'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'NEW B'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "line four" {
|
if m.ActiveBuffer().Lines[3].String() != "line four" {
|
||||||
t.Errorf("Line(3) = %q, want 'line four'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'line four'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1465,11 +1465,11 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "FIRST" {
|
if m.ActiveBuffer().Lines[0].String() != "FIRST" {
|
||||||
t.Errorf("Line(0) = %q, want 'FIRST'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'FIRST'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line two" {
|
if m.ActiveBuffer().Lines[1].String() != "line two" {
|
||||||
t.Errorf("Line(1) = %q, want 'line two'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line two'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1485,11 +1485,11 @@ func TestVisualLinePaste(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 2 {
|
if m.ActiveBuffer().LineCount() != 2 {
|
||||||
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 2", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line one" {
|
if m.ActiveBuffer().Lines[0].String() != "line one" {
|
||||||
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line one'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "LAST" {
|
if m.ActiveBuffer().Lines[1].String() != "LAST" {
|
||||||
t.Errorf("Line(1) = %q, want 'LAST'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'LAST'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1608,8 +1608,8 @@ func TestVisualPasteEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "p")
|
sendKeys(tm, "v", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "NEW" {
|
if m.ActiveBuffer().Lines[0].String() != "NEW" {
|
||||||
t.Errorf("Line(0) = %q, want 'NEW'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'NEW'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1622,8 +1622,8 @@ func TestVisualPasteEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "$", "p") // select entire "hello"
|
sendKeys(tm, "v", "$", "p") // select entire "hello"
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "REPLACED" {
|
if m.ActiveBuffer().Lines[0].String() != "REPLACED" {
|
||||||
t.Errorf("Line(0) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1636,8 +1636,8 @@ func TestVisualPasteEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "h", "h", "h", "h", "h", "p") // select backwards "hello ", paste
|
sendKeys(tm, "v", "h", "h", "h", "h", "h", "p") // select backwards "hello ", paste
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "Xworld" {
|
if m.ActiveBuffer().Lines[0].String() != "Xworld" {
|
||||||
t.Errorf("Line(0) = %q, want 'Xworld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'Xworld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1650,8 +1650,8 @@ func TestVisualPasteEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "p")
|
sendKeys(tm, "v", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "XYZ" {
|
if m.ActiveBuffer().Lines[0].String() != "XYZ" {
|
||||||
t.Errorf("Line(0) = %q, want 'XYZ'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'XYZ'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1667,8 +1667,8 @@ func TestVisualPasteEdgeCases(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "REPLACED" {
|
if m.ActiveBuffer().Lines[0].String() != "REPLACED" {
|
||||||
t.Errorf("Line(0) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'REPLACED'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -256,8 +256,8 @@ func TestHalfPageScrollDown(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Line != 22 {
|
if m.ActiveWindow().Cursor.Line != 22 {
|
||||||
t.Errorf("CursorY() = %d, want 22", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 22", m.ActiveWindow().Cursor.Line)
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col > len(m.ActiveBuffer().Lines[m.ActiveWindow().Cursor.Line]) {
|
if m.ActiveWindow().Cursor.Col > m.ActiveBuffer().Lines[m.ActiveWindow().Cursor.Line].Len() {
|
||||||
t.Errorf("CursorX() = %d exceeds line length %d", m.ActiveWindow().Cursor.Col, len(m.ActiveBuffer().Lines[m.ActiveWindow().Cursor.Line]))
|
t.Errorf("CursorX() = %d exceeds line length %d", m.ActiveWindow().Cursor.Col, m.ActiveBuffer().Lines[m.ActiveWindow().Cursor.Line].Len())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -33,8 +33,8 @@ func TestTextObjectInnerWord(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "w")
|
sendKeys(tm, "d", "i", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("lines[0] = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -44,8 +44,8 @@ func TestTextObjectInnerWord(t *testing.T) {
|
|||||||
sendKeys(tm, "c", "i", "w")
|
sendKeys(tm, "c", "i", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("lines[0] = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.Mode() != core.InsertMode {
|
if m.Mode() != core.InsertMode {
|
||||||
t.Errorf("Expected insert mode after ciw")
|
t.Errorf("Expected insert mode after ciw")
|
||||||
@ -138,8 +138,8 @@ func TestTextObjectAroundWord(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "w")
|
sendKeys(tm, "d", "a", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("lines[0] = %q, want 'world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -149,8 +149,8 @@ func TestTextObjectAroundWord(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "w")
|
sendKeys(tm, "d", "a", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("lines[0] = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -179,8 +179,8 @@ func TestTextObjectInnerWORD(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "W")
|
sendKeys(tm, "d", "i", "W")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " test" {
|
if m.ActiveBuffer().Lines[0].String() != " test" {
|
||||||
t.Errorf("lines[0] = %q, want ' test'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ' test'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -205,8 +205,8 @@ func TestTextObjectAroundWORD(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "W")
|
sendKeys(tm, "d", "a", "W")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "baz" {
|
if m.ActiveBuffer().Lines[0].String() != "baz" {
|
||||||
t.Errorf("lines[0] = %q, want 'baz'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'baz'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -248,8 +248,8 @@ func TestTextObjectAngleBrackets(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "<")
|
sendKeys(tm, "d", "i", "<")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "<>" {
|
if m.ActiveBuffer().Lines[0].String() != "<>" {
|
||||||
t.Errorf("lines[0] = %q, want '<>'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '<>'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -259,8 +259,8 @@ func TestTextObjectAngleBrackets(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "<")
|
sendKeys(tm, "d", "a", "<")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -271,8 +271,8 @@ func TestTextObjectAngleBrackets(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should remain unchanged
|
// Should remain unchanged
|
||||||
if m.ActiveBuffer().Lines[0] != "<>" {
|
if m.ActiveBuffer().Lines[0].String() != "<>" {
|
||||||
t.Errorf("lines[0] = %q, want '<>'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '<>'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -321,8 +321,8 @@ func TestTextObjectParentheses(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "(")
|
sendKeys(tm, "d", "i", "(")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "func()" {
|
if m.ActiveBuffer().Lines[0].String() != "func()" {
|
||||||
t.Errorf("lines[0] = %q, want 'func()'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'func()'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -332,8 +332,8 @@ func TestTextObjectParentheses(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "(")
|
sendKeys(tm, "d", "a", "(")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "func" {
|
if m.ActiveBuffer().Lines[0].String() != "func" {
|
||||||
t.Errorf("lines[0] = %q, want 'func'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'func'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -343,8 +343,8 @@ func TestTextObjectParentheses(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "(")
|
sendKeys(tm, "d", "i", "(")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "()" {
|
if m.ActiveBuffer().Lines[0].String() != "()" {
|
||||||
t.Errorf("lines[0] = %q, want '()'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '()'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -368,8 +368,8 @@ func TestTextObjectBraces(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "{")
|
sendKeys(tm, "d", "i", "{")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "{}" {
|
if m.ActiveBuffer().Lines[0].String() != "{}" {
|
||||||
t.Errorf("lines[0] = %q, want '{}'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '{}'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -379,8 +379,8 @@ func TestTextObjectBraces(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "{")
|
sendKeys(tm, "d", "a", "{")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -404,8 +404,8 @@ func TestTextObjectBrackets(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "[")
|
sendKeys(tm, "d", "i", "[")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "[]" {
|
if m.ActiveBuffer().Lines[0].String() != "[]" {
|
||||||
t.Errorf("lines[0] = %q, want '[]'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '[]'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -415,8 +415,8 @@ func TestTextObjectBrackets(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "[")
|
sendKeys(tm, "d", "a", "[")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -440,8 +440,8 @@ func TestTextObjectDoubleQuotes(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", `"`)
|
sendKeys(tm, "d", "i", `"`)
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != `""` {
|
if m.ActiveBuffer().Lines[0].String() != `""` {
|
||||||
t.Errorf("lines[0] = %q, want '\"\"'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '\"\"'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -451,8 +451,8 @@ func TestTextObjectDoubleQuotes(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", `"`)
|
sendKeys(tm, "d", "a", `"`)
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -462,8 +462,8 @@ func TestTextObjectDoubleQuotes(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", `"`)
|
sendKeys(tm, "d", "i", `"`)
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != `""` {
|
if m.ActiveBuffer().Lines[0].String() != `""` {
|
||||||
t.Errorf("lines[0] = %q, want '\"\"'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '\"\"'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -487,8 +487,8 @@ func TestTextObjectSingleQuotes(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "'")
|
sendKeys(tm, "d", "i", "'")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "''" {
|
if m.ActiveBuffer().Lines[0].String() != "''" {
|
||||||
t.Errorf("lines[0] = %q, want \"''\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want \"''\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -498,8 +498,8 @@ func TestTextObjectSingleQuotes(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "'")
|
sendKeys(tm, "d", "a", "'")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -523,8 +523,8 @@ func TestTextObjectBackticks(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "`")
|
sendKeys(tm, "d", "i", "`")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "``" {
|
if m.ActiveBuffer().Lines[0].String() != "``" {
|
||||||
t.Errorf("lines[0] = %q, want '``'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '``'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -534,8 +534,8 @@ func TestTextObjectBackticks(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "a", "`")
|
sendKeys(tm, "d", "a", "`")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -551,8 +551,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "w")
|
sendKeys(tm, "d", "i", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != " b c" {
|
if m.ActiveBuffer().Lines[0].String() != " b c" {
|
||||||
t.Errorf("lines[0] = %q, want ' b c'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ' b c'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -564,8 +564,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "esc")
|
sendKeys(tm, "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "<world>" {
|
if m.ActiveBuffer().Lines[0].String() != "<world>" {
|
||||||
t.Errorf("lines[0] = %q, want '<world>'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '<world>'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -577,8 +577,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// 'p' pastes after cursor, so "arg" is pasted after 't' -> "testarg"
|
// 'p' pastes after cursor, so "arg" is pasted after 't' -> "testarg"
|
||||||
if m.ActiveBuffer().Lines[1] != "testarg" {
|
if m.ActiveBuffer().Lines[1].String() != "testarg" {
|
||||||
t.Errorf("lines[1] = %q, want 'testarg'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'testarg'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -589,8 +589,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should remain unchanged since cursor is not inside parens
|
// Should remain unchanged since cursor is not inside parens
|
||||||
if m.ActiveBuffer().Lines[0] != "before (hello) after" {
|
if m.ActiveBuffer().Lines[0].String() != "before (hello) after" {
|
||||||
t.Errorf("lines[0] = %q, want 'before (hello) after'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'before (hello) after'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -600,8 +600,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "d", "i", "(")
|
sendKeys(tm, "d", "i", "(")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "before () after" {
|
if m.ActiveBuffer().Lines[0].String() != "before () after" {
|
||||||
t.Errorf("lines[0] = %q, want 'before () after'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'before () after'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -612,8 +612,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// 'a' should delete including the delimiters
|
// 'a' should delete including the delimiters
|
||||||
if m.ActiveBuffer().Lines[0] != "before after" {
|
if m.ActiveBuffer().Lines[0].String() != "before after" {
|
||||||
t.Errorf("lines[0] = %q, want 'before after'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'before after'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -624,8 +624,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Cursor on '(' at position 5, should still select inside
|
// Cursor on '(' at position 5, should still select inside
|
||||||
if m.ActiveBuffer().Lines[0] != "text () more" {
|
if m.ActiveBuffer().Lines[0].String() != "text () more" {
|
||||||
t.Errorf("lines[0] = %q, want 'text () more'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'text () more'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -638,8 +638,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Cursor on ')', should still select inside
|
// Cursor on ')', should still select inside
|
||||||
if m.ActiveBuffer().Lines[0] != "text () more" {
|
if m.ActiveBuffer().Lines[0].String() != "text () more" {
|
||||||
t.Errorf("lines[0] = %q, want 'text () more'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'text () more'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -650,8 +650,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should select the first pair it finds
|
// Should select the first pair it finds
|
||||||
if m.ActiveBuffer().Lines[0] != "() bar (baz)" {
|
if m.ActiveBuffer().Lines[0].String() != "() bar (baz)" {
|
||||||
t.Errorf("lines[0] = %q, want '() bar (baz)'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '() bar (baz)'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -663,8 +663,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should search forward and find the second pair
|
// Should search forward and find the second pair
|
||||||
if m.ActiveBuffer().Lines[0] != "(foo) bar ()" {
|
if m.ActiveBuffer().Lines[0].String() != "(foo) bar ()" {
|
||||||
t.Errorf("lines[0] = %q, want '(foo) bar ()'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '(foo) bar ()'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -676,8 +676,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should select the first pair since cursor is inside it
|
// Should select the first pair since cursor is inside it
|
||||||
if m.ActiveBuffer().Lines[0] != "() bar (baz)" {
|
if m.ActiveBuffer().Lines[0].String() != "() bar (baz)" {
|
||||||
t.Errorf("lines[0] = %q, want '() bar (baz)'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '() bar (baz)'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -688,8 +688,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should find and select first quoted string
|
// Should find and select first quoted string
|
||||||
if m.ActiveBuffer().Lines[0] != `foo "" baz "qux"` {
|
if m.ActiveBuffer().Lines[0].String() != `foo "" baz "qux"` {
|
||||||
t.Errorf("lines[0] = %q, want 'foo \"\" baz \"qux\"'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'foo \"\" baz \"qux\"'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -701,8 +701,8 @@ func TestTextObjectEdgeCases(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Should search forward and find second string
|
// Should search forward and find second string
|
||||||
if m.ActiveBuffer().Lines[0] != `"foo" bar ""` {
|
if m.ActiveBuffer().Lines[0].String() != `"foo" bar ""` {
|
||||||
t.Errorf("lines[0] = %q, want '\"foo\" bar \"\"'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want '\"foo\" bar \"\"'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -727,8 +727,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"func test() {",
|
"func test() {",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -746,8 +746,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
expected := []string{
|
expected := []string{
|
||||||
"func test() ",
|
"func test() ",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -792,8 +792,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"function(",
|
"function(",
|
||||||
")",
|
")",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -815,8 +815,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"outer {",
|
"outer {",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -841,8 +841,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
" more",
|
" more",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -869,8 +869,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
" }",
|
" }",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -889,8 +889,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"function(arg) {",
|
"function(arg) {",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -909,8 +909,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"function(arg) {",
|
"function(arg) {",
|
||||||
"}",
|
"}",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -933,8 +933,8 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
"}",
|
"}",
|
||||||
"after",
|
"after",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -959,12 +959,21 @@ func TestTextObjectMultiLineDelimiters(t *testing.T) {
|
|||||||
" more",
|
" more",
|
||||||
")",
|
")",
|
||||||
}
|
}
|
||||||
if !slicesEqual(m.ActiveBuffer().Lines, expected) {
|
if !slicesEqual(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("lines = %v, want %v", bufferLinesToStrings(m.ActiveBuffer()), expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Helper function to get buffer lines as strings
|
||||||
|
func bufferLinesToStrings(buf *core.Buffer) []string {
|
||||||
|
result := make([]string, buf.LineCount())
|
||||||
|
for i := 0; i < buf.LineCount(); i++ {
|
||||||
|
result[i] = buf.Line(i)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
// Helper function to compare slices
|
// Helper function to compare slices
|
||||||
func slicesEqual(a, b []string) bool {
|
func slicesEqual(a, b []string) bool {
|
||||||
if len(a) != len(b) {
|
if len(a) != len(b) {
|
||||||
|
|||||||
@ -31,8 +31,8 @@ func TestUndoBasicOperations(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify undo stack is empty
|
// Verify undo stack is empty
|
||||||
@ -49,8 +49,8 @@ func TestUndoBasicOperations(t *testing.T) {
|
|||||||
sendKeys(tm, "ctrl+r") // Redo
|
sendKeys(tm, "ctrl+r") // Redo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify redo stack is empty
|
// Verify redo stack is empty
|
||||||
@ -70,8 +70,8 @@ func TestUndoBasicOperations(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo first x -> "hello"
|
sendKeys(tm, "u") // Undo first x -> "hello"
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("After 3 undos: lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("After 3 undos: lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify undo stack is empty
|
// Verify undo stack is empty
|
||||||
@ -87,8 +87,8 @@ func TestUndoBasicOperations(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -104,8 +104,8 @@ func TestUndoCursorRestoration(t *testing.T) {
|
|||||||
if m.ActiveWindow().Cursor.Col != 6 {
|
if m.ActiveWindow().Cursor.Col != 6 {
|
||||||
t.Errorf("cursor col = %d, want 6", m.ActiveWindow().Cursor.Col)
|
t.Errorf("cursor col = %d, want 6", m.ActiveWindow().Cursor.Col)
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -137,8 +137,8 @@ func TestUndoInsertMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo once
|
sendKeys(tm, "u") // Undo once
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify only one undo was needed
|
// Verify only one undo was needed
|
||||||
@ -167,8 +167,8 @@ func TestUndoInsertMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("After 2 undos: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("After 2 undos: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify undo stack is empty
|
// Verify undo stack is empty
|
||||||
@ -191,7 +191,7 @@ func TestUndoInsertMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if len(m.ActiveBuffer().Lines) != 1 || m.ActiveBuffer().Lines[0] != "" {
|
if len(m.ActiveBuffer().Lines) != 1 || m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("After undo: got %d lines with content %q, want 1 empty line",
|
t.Errorf("After undo: got %d lines with content %q, want 1 empty line",
|
||||||
len(m.ActiveBuffer().Lines), m.ActiveBuffer().Lines)
|
len(m.ActiveBuffer().Lines), m.ActiveBuffer().Lines)
|
||||||
}
|
}
|
||||||
@ -209,8 +209,8 @@ func TestUndoInsertMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("After undo: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("After undo: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -230,8 +230,8 @@ func TestUndoDeleteOperator(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 3 {
|
if len(m.ActiveBuffer().Lines) != 3 {
|
||||||
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line1" {
|
if m.ActiveBuffer().Lines[0].String() != "line1" {
|
||||||
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -245,11 +245,11 @@ func TestUndoDeleteOperator(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 4 {
|
if len(m.ActiveBuffer().Lines) != 4 {
|
||||||
t.Errorf("line count = %d, want 4", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 4", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line1" {
|
if m.ActiveBuffer().Lines[0].String() != "line1" {
|
||||||
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line3" {
|
if m.ActiveBuffer().Lines[2].String() != "line3" {
|
||||||
t.Errorf("lines[2] = %q, want 'line3'", m.ActiveBuffer().Lines[2])
|
t.Errorf("lines[2] = %q, want 'line3'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -260,8 +260,8 @@ func TestUndoDeleteOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world foo" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world foo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -272,8 +272,8 @@ func TestUndoDeleteOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 6 {
|
if m.ActiveWindow().Cursor.Col != 6 {
|
||||||
t.Errorf("cursor col = %d, want 6", m.ActiveWindow().Cursor.Col)
|
t.Errorf("cursor col = %d, want 6", m.ActiveWindow().Cursor.Col)
|
||||||
@ -291,8 +291,8 @@ func TestUndoChangeOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "original line" {
|
if m.ActiveBuffer().Lines[0].String() != "original line" {
|
||||||
t.Errorf("lines[0] = %q, want 'original line'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'original line'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -305,8 +305,8 @@ func TestUndoChangeOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -319,8 +319,8 @@ func TestUndoChangeOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -333,8 +333,8 @@ func TestUndoChangeOperator(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "original" {
|
if m.ActiveBuffer().Lines[0].String() != "original" {
|
||||||
t.Errorf("lines[0] = %q, want 'original'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'original'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -353,8 +353,8 @@ func TestUndoVisualMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -370,8 +370,8 @@ func TestUndoVisualMode(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 3 {
|
if len(m.ActiveBuffer().Lines) != 3 {
|
||||||
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line1" {
|
if m.ActiveBuffer().Lines[0].String() != "line1" {
|
||||||
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -385,11 +385,11 @@ func TestUndoVisualMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "world" {
|
if m.ActiveBuffer().Lines[1].String() != "world" {
|
||||||
t.Errorf("lines[1] = %q, want 'world'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'world'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -404,8 +404,8 @@ func TestUndoVisualMode(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -422,8 +422,8 @@ func TestUndoTextObjects(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world foo" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world foo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -434,8 +434,8 @@ func TestUndoTextObjects(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world foo" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world foo" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello world foo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -448,8 +448,8 @@ func TestUndoTextObjects(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo
|
sendKeys(tm, "u") // Undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "before (hello) after" {
|
if m.ActiveBuffer().Lines[0].String() != "before (hello) after" {
|
||||||
t.Errorf("lines[0] = %q, want 'before (hello) after'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'before (hello) after'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -470,8 +470,8 @@ func TestUndoRedoSequences(t *testing.T) {
|
|||||||
sendKeys(tm, "ctrl+r", "ctrl+r")
|
sendKeys(tm, "ctrl+r", "ctrl+r")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("After 2 redos: lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("After 2 redos: lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -490,8 +490,8 @@ func TestUndoRedoSequences(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify content
|
// Verify content
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'llo'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -512,8 +512,8 @@ func TestUndoRedoSequences(t *testing.T) {
|
|||||||
sendKeys(tm, "esc")
|
sendKeys(tm, "esc")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "newline3" {
|
if m.ActiveBuffer().Lines[0].String() != "newline3" {
|
||||||
t.Errorf("After insert: lines[0] = %q, want 'newline3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("After insert: lines[0] = %q, want 'newline3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -529,8 +529,8 @@ func TestUndoEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "u") // Undo when nothing to undo
|
sendKeys(tm, "u") // Undo when nothing to undo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -540,8 +540,8 @@ func TestUndoEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "ctrl+r") // Redo when nothing to redo
|
sendKeys(tm, "ctrl+r") // Redo when nothing to redo
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'hello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -554,8 +554,8 @@ func TestUndoEdgeCases(t *testing.T) {
|
|||||||
sendKeys(tm, "ctrl+r") // Try redo again (should do nothing)
|
sendKeys(tm, "ctrl+r") // Try redo again (should do nothing)
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'ello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -569,8 +569,8 @@ func TestUndoEdgeCases(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 1 {
|
if len(m.ActiveBuffer().Lines) != 1 {
|
||||||
t.Errorf("line count = %d, want 1", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 1", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "only line" {
|
if m.ActiveBuffer().Lines[0].String() != "only line" {
|
||||||
t.Errorf("lines[0] = %q, want 'only line'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'only line'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -594,8 +594,8 @@ func TestUndoMultiLineOperations(t *testing.T) {
|
|||||||
}
|
}
|
||||||
for i := 0; i < 5; i++ {
|
for i := 0; i < 5; i++ {
|
||||||
expected := "line" + string(rune('1'+i))
|
expected := "line" + string(rune('1'+i))
|
||||||
if m.ActiveBuffer().Lines[i] != expected {
|
if m.ActiveBuffer().Lines[i].String() != expected {
|
||||||
t.Errorf("lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i], expected)
|
t.Errorf("lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i].String(), expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -610,8 +610,8 @@ func TestUndoMultiLineOperations(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 3 {
|
if len(m.ActiveBuffer().Lines) != 3 {
|
||||||
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 3", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line1" {
|
if m.ActiveBuffer().Lines[0].String() != "line1" {
|
||||||
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -627,8 +627,8 @@ func TestUndoMultiLineOperations(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 2 {
|
if len(m.ActiveBuffer().Lines) != 2 {
|
||||||
t.Errorf("line count = %d, want 2", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 2", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line1" {
|
if m.ActiveBuffer().Lines[0].String() != "line1" {
|
||||||
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'line1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -644,8 +644,8 @@ func TestUndoMultiLineOperations(t *testing.T) {
|
|||||||
if len(m.ActiveBuffer().Lines) != 2 {
|
if len(m.ActiveBuffer().Lines) != 2 {
|
||||||
t.Errorf("line count = %d, want 2", len(m.ActiveBuffer().Lines))
|
t.Errorf("line count = %d, want 2", len(m.ActiveBuffer().Lines))
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line2" {
|
if m.ActiveBuffer().Lines[1].String() != "line2" {
|
||||||
t.Errorf("lines[1] = %q, want 'line2'", m.ActiveBuffer().Lines[1])
|
t.Errorf("lines[1] = %q, want 'line2'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -688,8 +688,8 @@ func TestUndoStackStructure(t *testing.T) {
|
|||||||
sendKeys(tm, "u")
|
sendKeys(tm, "u")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("After undo: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("After undo: lines[0] = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().UndoStack.CanUndo() {
|
if m.ActiveBuffer().UndoStack.CanUndo() {
|
||||||
t.Error("Expected empty undo stack after single undo")
|
t.Error("Expected empty undo stack after single undo")
|
||||||
@ -755,8 +755,8 @@ func TestUndoComplexScenarios(t *testing.T) {
|
|||||||
sendKeys(tm, "x") // Delete 'a' -> "bc"
|
sendKeys(tm, "x") // Delete 'a' -> "bc"
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "bc" {
|
if m.ActiveBuffer().Lines[0].String() != "bc" {
|
||||||
t.Errorf("lines[0] = %q, want 'bc'", m.ActiveBuffer().Lines[0])
|
t.Errorf("lines[0] = %q, want 'bc'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -781,8 +781,8 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
||||||
}
|
}
|
||||||
for i, exp := range expected {
|
for i, exp := range expected {
|
||||||
if m.ActiveBuffer().Lines[i] != exp {
|
if m.ActiveBuffer().Lines[i].String() != exp {
|
||||||
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i], exp)
|
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i].String(), exp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Cursor should be back at line2
|
// Cursor should be back at line2
|
||||||
@ -806,8 +806,8 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
||||||
}
|
}
|
||||||
for i, exp := range expected {
|
for i, exp := range expected {
|
||||||
if m.ActiveBuffer().Lines[i] != exp {
|
if m.ActiveBuffer().Lines[i].String() != exp {
|
||||||
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i], exp)
|
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i].String(), exp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Cursor should be back at line2
|
// Cursor should be back at line2
|
||||||
@ -827,7 +827,7 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"hello world"}
|
expected := []string{"hello world"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -848,8 +848,8 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
t.Errorf("len(Lines) = %d, want %d", len(m.ActiveBuffer().Lines), len(expected))
|
||||||
}
|
}
|
||||||
for i, exp := range expected {
|
for i, exp := range expected {
|
||||||
if m.ActiveBuffer().Lines[i] != exp {
|
if m.ActiveBuffer().Lines[i].String() != exp {
|
||||||
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i], exp)
|
t.Errorf("Lines[%d] = %q, want %q", i, m.ActiveBuffer().Lines[i].String(), exp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -865,7 +865,7 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"base"}
|
expected := []string{"base"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -879,7 +879,7 @@ func TestUndoPasteOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"test"}
|
expected := []string{"test"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -899,7 +899,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"1", "2", "3", "4", "5", "6", "7"}
|
expected := []string{"1", "2", "3", "4", "5", "6", "7"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
// Cursor should be back at line 3 (index 2)
|
// Cursor should be back at line 3 (index 2)
|
||||||
@ -918,7 +918,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"one two three four five"}
|
expected := []string{"one two three four five"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -932,7 +932,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"abcdefghijklmnopqrstuvwxyz"}
|
expected := []string{"abcdefghijklmnopqrstuvwxyz"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
// Cursor should be back at column 4 (index of 'e', 0-based)
|
// Cursor should be back at column 4 (index of 'e', 0-based)
|
||||||
@ -952,7 +952,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"line1", "line2", "line3", "line4"}
|
expected := []string{"line1", "line2", "line3", "line4"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -966,7 +966,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"word1 word2 word3 word4 word5"}
|
expected := []string{"word1 word2 word3 word4 word5"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -981,7 +981,7 @@ func TestUndoComplexCountOperations(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
expected := []string{"A", "B", "C", "D"}
|
expected := []string{"A", "B", "C", "D"}
|
||||||
if !equalStringSlices(m.ActiveBuffer().Lines, expected) {
|
if !equalStringSlices(bufferLinesToStrings(m.ActiveBuffer()), expected) {
|
||||||
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
t.Errorf("Lines = %v, want %v", m.ActiveBuffer().Lines, expected)
|
||||||
}
|
}
|
||||||
// Cursor should be back at line C (index 2)
|
// Cursor should be back at line C (index 2)
|
||||||
|
|||||||
@ -125,8 +125,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "d")
|
sendKeys(tm, "v", "d")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ello" {
|
if m.ActiveBuffer().Lines[0].String() != "ello" {
|
||||||
t.Errorf("Line(0) = %q, want \"ello\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"ello\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -139,8 +139,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "l", "d")
|
sendKeys(tm, "v", "l", "l", "l", "d")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "o world" {
|
if m.ActiveBuffer().Lines[0].String() != "o world" {
|
||||||
t.Errorf("Line(0) = %q, want \"o world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"o world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -154,8 +154,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
|
|
||||||
// anchor=3, cursor=1 → normalized start=1, end=3 → delete "ell" → "ho"
|
// anchor=3, cursor=1 → normalized start=1, end=3 → delete "ell" → "ho"
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ho" {
|
if m.ActiveBuffer().Lines[0].String() != "ho" {
|
||||||
t.Errorf("Line(0) = %q, want \"ho\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"ho\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 1 {
|
if m.ActiveWindow().Cursor.Col != 1 {
|
||||||
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 1", m.ActiveWindow().Cursor.Col)
|
||||||
@ -172,8 +172,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "held" {
|
if m.ActiveBuffer().Lines[0].String() != "held" {
|
||||||
t.Errorf("Line(0) = %q, want \"held\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"held\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 2 {
|
if m.ActiveWindow().Cursor.Col != 2 {
|
||||||
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 2", m.ActiveWindow().Cursor.Col)
|
||||||
@ -192,8 +192,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "world" {
|
if m.ActiveBuffer().Lines[0].String() != "world" {
|
||||||
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"world\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -209,8 +209,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "testing" {
|
if m.ActiveBuffer().Lines[0].String() != "testing" {
|
||||||
t.Errorf("Line(0) = %q, want \"testing\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"testing\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Line != 0 {
|
if m.ActiveWindow().Cursor.Line != 0 {
|
||||||
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
t.Errorf("CursorY() = %d, want 0", m.ActiveWindow().Cursor.Line)
|
||||||
@ -227,8 +227,8 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "hello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello" {
|
||||||
t.Errorf("Line(0) = %q, want \"hello\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"hello\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -241,11 +241,11 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
// "hello"[:0]+"hello"[2:] = "llo"
|
// "hello"[:0]+"hello"[2:] = "llo"
|
||||||
// "world"[:0]+"world"[2:] = "rld"
|
// "world"[:0]+"world"[2:] = "rld"
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "llo" {
|
if m.ActiveBuffer().Lines[0].String() != "llo" {
|
||||||
t.Errorf("Line(0) = %q, want \"llo\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"llo\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "rld" {
|
if m.ActiveBuffer().Lines[1].String() != "rld" {
|
||||||
t.Errorf("Line(1) = %q, want \"rld\"", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want \"rld\"", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveWindow().Cursor.Col != 0 {
|
if m.ActiveWindow().Cursor.Col != 0 {
|
||||||
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
t.Errorf("CursorX() = %d, want 0", m.ActiveWindow().Cursor.Col)
|
||||||
@ -264,11 +264,11 @@ func TestVisualModeDelete(t *testing.T) {
|
|||||||
// "hello"[:1]+"hello"[4:] = "h"+"o" = "ho"
|
// "hello"[:1]+"hello"[4:] = "h"+"o" = "ho"
|
||||||
// "world"[:1]+"world"[4:] = "w"+"d" = "wd"
|
// "world"[:1]+"world"[4:] = "w"+"d" = "wd"
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "ho" {
|
if m.ActiveBuffer().Lines[0].String() != "ho" {
|
||||||
t.Errorf("Line(0) = %q, want \"ho\"", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want \"ho\"", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "wd" {
|
if m.ActiveBuffer().Lines[1].String() != "wd" {
|
||||||
t.Errorf("Line(1) = %q, want \"wd\"", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want \"wd\"", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -302,8 +302,8 @@ func TestVisualModeWordMotions(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes from 0 to 6 inclusive = "hello w", leaves "orld"
|
// Deletes from 0 to 6 inclusive = "hello w", leaves "orld"
|
||||||
if m.ActiveBuffer().Lines[0] != "orld" {
|
if m.ActiveBuffer().Lines[0].String() != "orld" {
|
||||||
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -333,8 +333,8 @@ func TestVisualModeWordMotions(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes "hello"
|
// Deletes "hello"
|
||||||
if m.ActiveBuffer().Lines[0] != " world" {
|
if m.ActiveBuffer().Lines[0].String() != " world" {
|
||||||
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ' world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -364,8 +364,8 @@ func TestVisualModeWordMotions(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes from "h" (0) to "w" (6) inclusive
|
// Deletes from "h" (0) to "w" (6) inclusive
|
||||||
if m.ActiveBuffer().Lines[0] != "orld" {
|
if m.ActiveBuffer().Lines[0].String() != "orld" {
|
||||||
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -412,8 +412,8 @@ func TestVisualModeJumpMotions(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "$", "d")
|
sendKeys(tm, "v", "$", "d")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -442,8 +442,8 @@ func TestVisualModeJumpMotions(t *testing.T) {
|
|||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
// Deletes from 'h' (0) to 'w' (6) inclusive
|
// Deletes from 'h' (0) to 'w' (6) inclusive
|
||||||
if m.ActiveBuffer().Lines[0] != "orld" {
|
if m.ActiveBuffer().Lines[0].String() != "orld" {
|
||||||
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'orld'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -493,8 +493,8 @@ func TestVisualModeJumpMotions(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "lin 3" {
|
if m.ActiveBuffer().Lines[0].String() != "lin 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'lin 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'lin 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -527,8 +527,8 @@ func TestVisualModeJumpMotions(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "lin 3" {
|
if m.ActiveBuffer().Lines[0].String() != "lin 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'lin 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'lin 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -564,8 +564,8 @@ func TestVisualLineModeJumpMotions(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 1 {
|
if m.ActiveBuffer().LineCount() != 1 {
|
||||||
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 1", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "" {
|
if m.ActiveBuffer().Lines[0].String() != "" {
|
||||||
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want ''", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@ -46,14 +46,14 @@ func TestYankLineBasic(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 1" {
|
if m.ActiveBuffer().Lines[0].String() != "line 1" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 1'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 2" {
|
if m.ActiveBuffer().Lines[1].String() != "line 2" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 2'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 3" {
|
if m.ActiveBuffer().Lines[2].String() != "line 3" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -583,8 +583,8 @@ func TestYankWithCharwiseMotions(t *testing.T) {
|
|||||||
sendKeys(tm, "y", "w")
|
sendKeys(tm, "y", "w")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -659,8 +659,8 @@ func TestYankVisualCharwise(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "l", "l", "y")
|
sendKeys(tm, "v", "l", "l", "l", "l", "y")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello world" {
|
if m.ActiveBuffer().Lines[0].String() != "hello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -904,8 +904,8 @@ func TestYankRegisterBehavior(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "to copy" {
|
if m.ActiveBuffer().Lines[1].String() != "to copy" {
|
||||||
t.Errorf("Line(1) = %q, want 'to copy'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'to copy'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -1053,8 +1053,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "l", "l", "y", "$", "p")
|
sendKeys(tm, "v", "l", "l", "l", "l", "y", "$", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1067,8 +1067,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "$", "y", "0", "P")
|
sendKeys(tm, "v", "$", "y", "0", "P")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "worldhello world" {
|
if m.ActiveBuffer().Lines[0].String() != "worldhello world" {
|
||||||
t.Errorf("Line(0) = %q, want 'worldhello world'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'worldhello world'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1084,8 +1084,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 1" {
|
if m.ActiveBuffer().Lines[2].String() != "line 1" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 1'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 1'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1101,11 +1101,11 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 6 {
|
if m.ActiveBuffer().LineCount() != 6 {
|
||||||
t.Errorf("LineCount() = %d, want 6", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 6", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "line 1" {
|
if m.ActiveBuffer().Lines[4].String() != "line 1" {
|
||||||
t.Errorf("Line(4) = %q, want 'line 1'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'line 1'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[5] != "line 2" {
|
if m.ActiveBuffer().Lines[5].String() != "line 2" {
|
||||||
t.Errorf("Line(5) = %q, want 'line 2'", m.ActiveBuffer().Lines[5])
|
t.Errorf("Line(5) = %q, want 'line 2'", m.ActiveBuffer().Lines[5].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1121,11 +1121,11 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 4 {
|
if m.ActiveBuffer().LineCount() != 4 {
|
||||||
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 4", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 3" {
|
if m.ActiveBuffer().Lines[0].String() != "line 3" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 3'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 1" {
|
if m.ActiveBuffer().Lines[1].String() != "line 1" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1140,14 +1140,14 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "original" {
|
if m.ActiveBuffer().Lines[0].String() != "original" {
|
||||||
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "original" {
|
if m.ActiveBuffer().Lines[1].String() != "original" {
|
||||||
t.Errorf("Line(1) = %q, want 'original'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'original'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "other" {
|
if m.ActiveBuffer().Lines[2].String() != "other" {
|
||||||
t.Errorf("Line(2) = %q, want 'other'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'other'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1162,14 +1162,14 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "original" {
|
if m.ActiveBuffer().Lines[0].String() != "original" {
|
||||||
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'original'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "other" {
|
if m.ActiveBuffer().Lines[1].String() != "other" {
|
||||||
t.Errorf("Line(1) = %q, want 'other'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'other'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "other" {
|
if m.ActiveBuffer().Lines[2].String() != "other" {
|
||||||
t.Errorf("Line(2) = %q, want 'other'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'other'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1182,8 +1182,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
sendKeys(tm, "y", "w", "$", "p")
|
sendKeys(tm, "y", "w", "$", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhello " {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhello " {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhello '", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhello '", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1196,8 +1196,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
sendKeys(tm, "y", "e", "$", "p")
|
sendKeys(tm, "y", "e", "$", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "hello worldhello" {
|
if m.ActiveBuffer().Lines[0].String() != "hello worldhello" {
|
||||||
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'hello worldhello'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1210,8 +1210,8 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
sendKeys(tm, "v", "l", "l", "y", "$", "p")
|
sendKeys(tm, "v", "l", "l", "y", "$", "p")
|
||||||
|
|
||||||
m := getFinalModel(t, tm)
|
m := getFinalModel(t, tm)
|
||||||
if m.ActiveBuffer().Lines[0] != "abcdefghcde" {
|
if m.ActiveBuffer().Lines[0].String() != "abcdefghcde" {
|
||||||
t.Errorf("Line(0) = %q, want 'abcdefghcde'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'abcdefghcde'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1246,14 +1246,14 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
if m.ActiveBuffer().LineCount() != 3 {
|
if m.ActiveBuffer().LineCount() != 3 {
|
||||||
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 3", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[0] != "line 2" {
|
if m.ActiveBuffer().Lines[0].String() != "line 2" {
|
||||||
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0])
|
t.Errorf("Line(0) = %q, want 'line 2'", m.ActiveBuffer().Lines[0].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[1] != "line 1" {
|
if m.ActiveBuffer().Lines[1].String() != "line 1" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 3" {
|
if m.ActiveBuffer().Lines[2].String() != "line 3" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 3'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1270,17 +1270,17 @@ func TestVisualYankPasteRoundTrip(t *testing.T) {
|
|||||||
t.Errorf("LineCount() = %d, want 7", m.ActiveBuffer().LineCount())
|
t.Errorf("LineCount() = %d, want 7", m.ActiveBuffer().LineCount())
|
||||||
}
|
}
|
||||||
// Original + 2 copies of 2 lines = 3 + 4 = 7
|
// Original + 2 copies of 2 lines = 3 + 4 = 7
|
||||||
if m.ActiveBuffer().Lines[1] != "line 1" {
|
if m.ActiveBuffer().Lines[1].String() != "line 1" {
|
||||||
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1])
|
t.Errorf("Line(1) = %q, want 'line 1'", m.ActiveBuffer().Lines[1].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[2] != "line 2" {
|
if m.ActiveBuffer().Lines[2].String() != "line 2" {
|
||||||
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2])
|
t.Errorf("Line(2) = %q, want 'line 2'", m.ActiveBuffer().Lines[2].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[3] != "line 1" {
|
if m.ActiveBuffer().Lines[3].String() != "line 1" {
|
||||||
t.Errorf("Line(3) = %q, want 'line 1'", m.ActiveBuffer().Lines[3])
|
t.Errorf("Line(3) = %q, want 'line 1'", m.ActiveBuffer().Lines[3].String())
|
||||||
}
|
}
|
||||||
if m.ActiveBuffer().Lines[4] != "line 2" {
|
if m.ActiveBuffer().Lines[4].String() != "line 2" {
|
||||||
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4])
|
t.Errorf("Line(4) = %q, want 'line 2'", m.ActiveBuffer().Lines[4].String())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,7 +80,7 @@ type MoveRight struct {
|
|||||||
func (a MoveRight) Execute(m action.Model) tea.Cmd {
|
func (a MoveRight) Execute(m action.Model) tea.Cmd {
|
||||||
win := m.ActiveWindow()
|
win := m.ActiveWindow()
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
lineLen := len(buf.Lines[win.Cursor.Line])
|
lineLen := buf.Lines[win.Cursor.Line].Len()
|
||||||
for i := 0; i < a.Count && win.Cursor.Col <= lineLen; i++ {
|
for i := 0; i < a.Count && win.Cursor.Col <= lineLen; i++ {
|
||||||
win.SetCursorCol(win.Cursor.Col + 1)
|
win.SetCursorCol(win.Cursor.Col + 1)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -50,7 +50,7 @@ type MoveToLineEnd struct{}
|
|||||||
func (a MoveToLineEnd) Execute(m action.Model) tea.Cmd {
|
func (a MoveToLineEnd) Execute(m action.Model) tea.Cmd {
|
||||||
win := m.ActiveWindow()
|
win := m.ActiveWindow()
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
win.SetCursorCol(len(buf.Lines[win.Cursor.Line]))
|
win.SetCursorCol(buf.Lines[win.Cursor.Line].Len())
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ func (a MoveToLineContentStart) Execute(m action.Model) tea.Cmd {
|
|||||||
win := m.ActiveWindow()
|
win := m.ActiveWindow()
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
x := 0
|
x := 0
|
||||||
for x < len(line) {
|
for x < len(line) {
|
||||||
ch := line[x]
|
ch := line[x]
|
||||||
@ -96,7 +96,7 @@ func (a MoveToColumn) Execute(m action.Model) tea.Cmd {
|
|||||||
win := m.ActiveWindow()
|
win := m.ActiveWindow()
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
line := buf.Lines[win.Cursor.Line]
|
line := buf.Line(win.Cursor.Line)
|
||||||
col := min(a.Count-1, len(line)-1)
|
col := min(a.Count-1, len(line)-1)
|
||||||
|
|
||||||
win.SetCursorCol(col)
|
win.SetCursorCol(col)
|
||||||
|
|||||||
@ -24,7 +24,7 @@ func isWordPunctuation(c byte) bool {
|
|||||||
// nextWordStart: Finds the start of the next word from position (x,y), handling
|
// nextWordStart: Finds the start of the next word from position (x,y), handling
|
||||||
// word boundaries and line crossing.
|
// word boundaries and line crossing.
|
||||||
func nextWordStart(buf *core.Buffer, x, y int) (int, int) {
|
func nextWordStart(buf *core.Buffer, x, y int) (int, int) {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Skip current class
|
// Skip current class
|
||||||
if x < len(line) {
|
if x < len(line) {
|
||||||
@ -59,7 +59,7 @@ func nextWordStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
|
|
||||||
// Move to first char of next line
|
// Move to first char of next line
|
||||||
y++
|
y++
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = 0
|
x = 0
|
||||||
|
|
||||||
// If the first char of the new line is no whitespace, stay here!
|
// If the first char of the new line is no whitespace, stay here!
|
||||||
@ -74,7 +74,7 @@ func nextWordStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// nextWORDStart: Finds the start of the next WORD from position (x,y), treating
|
// nextWORDStart: Finds the start of the next WORD from position (x,y), treating
|
||||||
// all non-whitespace as a single class.
|
// all non-whitespace as a single class.
|
||||||
func nextWORDStart(buf *core.Buffer, x, y int) (int, int) {
|
func nextWORDStart(buf *core.Buffer, x, y int) (int, int) {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Skip current WORD (all non-whitespace is one class for W)
|
// Skip current WORD (all non-whitespace is one class for W)
|
||||||
for x < len(line) && line[x] != ' ' && line[x] != '\t' {
|
for x < len(line) && line[x] != ' ' && line[x] != '\t' {
|
||||||
@ -100,7 +100,7 @@ func nextWORDStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
|
|
||||||
// Move to first char of next line
|
// Move to first char of next line
|
||||||
y++
|
y++
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = 0
|
x = 0
|
||||||
|
|
||||||
// If the first char of the new line is no whitespace, stay here!
|
// If the first char of the new line is no whitespace, stay here!
|
||||||
@ -115,7 +115,7 @@ func nextWORDStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// nextWordEnd: Finds the end of the next word from position (x,y), respecting
|
// nextWordEnd: Finds the end of the next word from position (x,y), respecting
|
||||||
// word character classes.
|
// word character classes.
|
||||||
func nextWordEnd(buf *core.Buffer, x, y int) (int, int) {
|
func nextWordEnd(buf *core.Buffer, x, y int) (int, int) {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Advance once to avoid being stuck on the current end
|
// Advance once to avoid being stuck on the current end
|
||||||
x++
|
x++
|
||||||
@ -128,7 +128,7 @@ func nextWordEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// Otherwise, move to next line
|
// Otherwise, move to next line
|
||||||
y++
|
y++
|
||||||
x = 0
|
x = 0
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip whitespace and cross lines if needed
|
// Skip whitespace and cross lines if needed
|
||||||
@ -150,7 +150,7 @@ func nextWordEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
|
|
||||||
// Move to first char of next line
|
// Move to first char of next line
|
||||||
y++
|
y++
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = 0
|
x = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ func nextWordEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// nextWORDEnd: Finds the end of the next WORD from position (x,y), treating
|
// nextWORDEnd: Finds the end of the next WORD from position (x,y), treating
|
||||||
// all non-whitespace as a single class.
|
// all non-whitespace as a single class.
|
||||||
func nextWORDEnd(buf *core.Buffer, x, y int) (int, int) {
|
func nextWORDEnd(buf *core.Buffer, x, y int) (int, int) {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Advance once to avoid being stuck on the current end
|
// Advance once to avoid being stuck on the current end
|
||||||
x++
|
x++
|
||||||
@ -187,7 +187,7 @@ func nextWORDEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// Otherwise, move to next line
|
// Otherwise, move to next line
|
||||||
y++
|
y++
|
||||||
x = 0
|
x = 0
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Skip whitespace and cross lines if needed
|
// Skip whitespace and cross lines if needed
|
||||||
@ -209,7 +209,7 @@ func nextWORDEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
|
|
||||||
// Move to first char of next line
|
// Move to first char of next line
|
||||||
y++
|
y++
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = 0
|
x = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,7 +224,7 @@ func nextWORDEnd(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
// prevWordStart: Finds the start of the previous word from position (x,y),
|
// prevWordStart: Finds the start of the previous word from position (x,y),
|
||||||
// moving backward through character classes.
|
// moving backward through character classes.
|
||||||
func prevWordStart(buf *core.Buffer, x, y int) (int, int) {
|
func prevWordStart(buf *core.Buffer, x, y int) (int, int) {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Back one to avoid being stuck on the current start
|
// Back one to avoid being stuck on the current start
|
||||||
x--
|
x--
|
||||||
@ -233,7 +233,7 @@ func prevWordStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
return 0, 0 // beginning of file, stay put
|
return 0, 0 // beginning of file, stay put
|
||||||
}
|
}
|
||||||
y--
|
y--
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = len(line) - 1
|
x = len(line) - 1
|
||||||
if x < 0 {
|
if x < 0 {
|
||||||
return 0, y // landed on an empty line
|
return 0, y // landed on an empty line
|
||||||
@ -252,7 +252,7 @@ func prevWordStart(buf *core.Buffer, x, y int) (int, int) {
|
|||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
y--
|
y--
|
||||||
line = buf.Lines[y]
|
line = buf.Line(y)
|
||||||
x = len(line) - 1
|
x = len(line) - 1
|
||||||
if len(line) == 0 {
|
if len(line) == 0 {
|
||||||
return 0, y // empty line acts as a word boundary
|
return 0, y // empty line acts as a word boundary
|
||||||
|
|||||||
@ -68,18 +68,18 @@ func changeCharSelection(m action.Model, start, end core.Position) {
|
|||||||
var deletedText string
|
var deletedText string
|
||||||
|
|
||||||
if start.Line == end.Line {
|
if start.Line == end.Line {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
endCol := min(end.Col+1, len(line))
|
endCol := min(end.Col+1, len(line))
|
||||||
deletedText = line[start.Col:endCol]
|
deletedText = line[start.Col:endCol]
|
||||||
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
||||||
} else {
|
} else {
|
||||||
startLine := buf.Lines[start.Line]
|
startLine := buf.Line(start.Line)
|
||||||
endLine := buf.Lines[end.Line]
|
endLine := buf.Line(end.Line)
|
||||||
|
|
||||||
// Extract deleted text
|
// Extract deleted text
|
||||||
deletedText = startLine[start.Col:] + "\n"
|
deletedText = startLine[start.Col:] + "\n"
|
||||||
for y := start.Line + 1; y < end.Line; y++ {
|
for y := start.Line + 1; y < end.Line; y++ {
|
||||||
deletedText += buf.Lines[y] + "\n"
|
deletedText += buf.Line(y) + "\n"
|
||||||
}
|
}
|
||||||
endCol := min(end.Col+1, len(endLine))
|
endCol := min(end.Col+1, len(endLine))
|
||||||
deletedText += endLine[:endCol]
|
deletedText += endLine[:endCol]
|
||||||
@ -113,7 +113,7 @@ func changeLineSelection(m action.Model, start, end core.Position) {
|
|||||||
var lines []string
|
var lines []string
|
||||||
|
|
||||||
for i := end.Line; i >= start.Line; i-- {
|
for i := end.Line; i >= start.Line; i-- {
|
||||||
lines = append([]string{buf.Lines[i]}, lines...)
|
lines = append([]string{buf.Line(i)}, lines...)
|
||||||
buf.DeleteLine(i)
|
buf.DeleteLine(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ func changeBlockSelection(m action.Model, start, end core.Position) {
|
|||||||
endCol := max(start.Col, end.Col)
|
endCol := max(start.Col, end.Col)
|
||||||
|
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
if startCol >= len(line) {
|
if startCol >= len(line) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -168,7 +168,7 @@ func (o ChangeOperator) DoublePress(m action.Model, count int) tea.Cmd {
|
|||||||
|
|
||||||
// Collect lines to delete (always delete at startY since lines shift up)
|
// Collect lines to delete (always delete at startY since lines shift up)
|
||||||
for range opCount {
|
for range opCount {
|
||||||
lines = append(lines, buf.Lines[startY])
|
lines = append(lines, buf.Line(startY))
|
||||||
buf.DeleteLine(startY)
|
buf.DeleteLine(startY)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -39,7 +39,7 @@ func (o DeleteOperator) DoublePress(m action.Model, count int) tea.Cmd {
|
|||||||
|
|
||||||
for range opCount {
|
for range opCount {
|
||||||
y := win.Cursor.Line
|
y := win.Cursor.Line
|
||||||
lines = append(lines, buf.Lines[y])
|
lines = append(lines, buf.Line(y))
|
||||||
|
|
||||||
buf.DeleteLine(y)
|
buf.DeleteLine(y)
|
||||||
|
|
||||||
@ -99,12 +99,12 @@ func deleteCharSelection(m action.Model, start, end core.Position) {
|
|||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
|
|
||||||
if start.Line == end.Line {
|
if start.Line == end.Line {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
endCol := min(end.Col+1, len(line))
|
endCol := min(end.Col+1, len(line))
|
||||||
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
buf.SetLine(start.Line, line[:start.Col]+line[endCol:])
|
||||||
} else {
|
} else {
|
||||||
startLine := buf.Lines[start.Line]
|
startLine := buf.Line(start.Line)
|
||||||
endLine := buf.Lines[end.Line]
|
endLine := buf.Line(end.Line)
|
||||||
|
|
||||||
prefix := startLine[:start.Col]
|
prefix := startLine[:start.Col]
|
||||||
suffix := ""
|
suffix := ""
|
||||||
@ -131,7 +131,7 @@ func deleteLineSelection(m action.Model, start, end core.Position) {
|
|||||||
var lines []string
|
var lines []string
|
||||||
|
|
||||||
for i := end.Line; i >= start.Line; i-- {
|
for i := end.Line; i >= start.Line; i-- {
|
||||||
lines = append(lines, buf.Lines[i])
|
lines = append(lines, buf.Line(i))
|
||||||
buf.DeleteLine(i)
|
buf.DeleteLine(i)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,7 +159,7 @@ func deleteBlockSelection(m action.Model, start, end core.Position) {
|
|||||||
endCol := max(start.Col, end.Col)
|
endCol := max(start.Col, end.Col)
|
||||||
|
|
||||||
for y := start.Line; y <= end.Line; y++ {
|
for y := start.Line; y <= end.Line; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
if startCol >= len(line) {
|
if startCol >= len(line) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,7 @@ func (o YankOperator) DoublePress(m action.Model, count int) tea.Cmd {
|
|||||||
var lines []string
|
var lines []string
|
||||||
|
|
||||||
for i := range opCount {
|
for i := range opCount {
|
||||||
lines = append(lines, buf.Lines[y+i])
|
lines = append(lines, buf.Line(y+i))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put her in the register!
|
// Put her in the register!
|
||||||
@ -76,7 +76,7 @@ func yankNormalMode(m action.Model, start, end core.Position, mtype core.MotionT
|
|||||||
// return
|
// return
|
||||||
// }
|
// }
|
||||||
|
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
|
|
||||||
startX := min(start.Col, end.Col)
|
startX := min(start.Col, end.Col)
|
||||||
endX := max(start.Col, end.Col)
|
endX := max(start.Col, end.Col)
|
||||||
@ -106,7 +106,10 @@ func yankNormalMode(m action.Model, start, end core.Position, mtype core.MotionT
|
|||||||
startY := min(start.Line, end.Line)
|
startY := min(start.Line, end.Line)
|
||||||
endY := max(start.Line, end.Line)
|
endY := max(start.Line, end.Line)
|
||||||
|
|
||||||
cnt := buf.Lines[startY : endY+1]
|
var cnt []string
|
||||||
|
for i := startY; i <= endY; i++ {
|
||||||
|
cnt = append(cnt, buf.Line(i))
|
||||||
|
}
|
||||||
m.UpdateDefaultRegister(core.LinewiseRegister, cnt)
|
m.UpdateDefaultRegister(core.LinewiseRegister, cnt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,7 +125,7 @@ func yankVisualMode(m action.Model, start, end core.Position) {
|
|||||||
|
|
||||||
// Single line selection
|
// Single line selection
|
||||||
if start.Line == end.Line {
|
if start.Line == end.Line {
|
||||||
line := buf.Lines[start.Line]
|
line := buf.Line(start.Line)
|
||||||
endCol := min(end.Col+1, len(line)) // +1 because visual selection is inclusive
|
endCol := min(end.Col+1, len(line)) // +1 because visual selection is inclusive
|
||||||
startCol := min(start.Col, len(line))
|
startCol := min(start.Col, len(line))
|
||||||
cnt := line[startCol:endCol]
|
cnt := line[startCol:endCol]
|
||||||
@ -134,17 +137,17 @@ func yankVisualMode(m action.Model, start, end core.Position) {
|
|||||||
var content []string
|
var content []string
|
||||||
|
|
||||||
// First line: from start.Col to end of line
|
// First line: from start.Col to end of line
|
||||||
firstLine := buf.Lines[start.Line]
|
firstLine := buf.Line(start.Line)
|
||||||
startCol := min(start.Col, len(firstLine))
|
startCol := min(start.Col, len(firstLine))
|
||||||
content = append(content, firstLine[startCol:])
|
content = append(content, firstLine[startCol:])
|
||||||
|
|
||||||
// Middle lines: entire lines
|
// Middle lines: entire lines
|
||||||
for y := start.Line + 1; y < end.Line; y++ {
|
for y := start.Line + 1; y < end.Line; y++ {
|
||||||
content = append(content, buf.Lines[y])
|
content = append(content, buf.Line(y))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last line: from beginning to end.Col (inclusive)
|
// Last line: from beginning to end.Col (inclusive)
|
||||||
lastLine := buf.Lines[end.Line]
|
lastLine := buf.Line(end.Line)
|
||||||
endCol := min(end.Col+1, len(lastLine))
|
endCol := min(end.Col+1, len(lastLine))
|
||||||
content = append(content, lastLine[:endCol])
|
content = append(content, lastLine[:endCol])
|
||||||
|
|
||||||
@ -169,7 +172,10 @@ func yankVisualLineMode(m action.Model, start, end core.Position) {
|
|||||||
startY := min(start.Line, end.Line)
|
startY := min(start.Line, end.Line)
|
||||||
endY := max(start.Line, end.Line)
|
endY := max(start.Line, end.Line)
|
||||||
|
|
||||||
cnt := buf.Lines[startY : endY+1]
|
var cnt []string
|
||||||
|
for i := startY; i <= endY; i++ {
|
||||||
|
cnt = append(cnt, buf.Line(i))
|
||||||
|
}
|
||||||
m.UpdateDefaultRegister(core.LinewiseRegister, cnt)
|
m.UpdateDefaultRegister(core.LinewiseRegister, cnt)
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -187,7 +193,7 @@ func yankVisualBlockMode(m action.Model, start, end core.Position) {
|
|||||||
var content []string
|
var content []string
|
||||||
|
|
||||||
for y := startY; y <= endY; y++ {
|
for y := startY; y <= endY; y++ {
|
||||||
line := buf.Lines[y]
|
line := buf.Line(y)
|
||||||
|
|
||||||
// Handle lines shorter than the block selection
|
// Handle lines shorter than the block selection
|
||||||
if startX >= len(line) {
|
if startX >= len(line) {
|
||||||
|
|||||||
@ -75,8 +75,14 @@ func (to Delimiter) GetRange(m action.Model, cursor core.Position, modifier stri
|
|||||||
return cursor, cursor, core.CharwiseExclusive
|
return cursor, cursor, core.CharwiseExclusive
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Convert buffer lines to strings for delimiter finding
|
||||||
|
var lines []string
|
||||||
|
for i := 0; i < buf.LineCount(); i++ {
|
||||||
|
lines = append(lines, buf.Line(i))
|
||||||
|
}
|
||||||
|
|
||||||
// Use multi-line delimiter pair finding
|
// Use multi-line delimiter pair finding
|
||||||
start, end, found := findMultiLineDelimiterPair(buf.Lines, startDelim, endDelim, cursor, modifier == "a")
|
start, end, found := findMultiLineDelimiterPair(lines, startDelim, endDelim, cursor, modifier == "a")
|
||||||
|
|
||||||
if !found {
|
if !found {
|
||||||
return cursor, cursor, core.CharwiseExclusive
|
return cursor, cursor, core.CharwiseExclusive
|
||||||
|
|||||||
@ -10,7 +10,7 @@ type Word struct{}
|
|||||||
|
|
||||||
func (to Word) GetRange(m action.Model, cursor core.Position, modifier string) (core.Position, core.Position, core.MotionType) {
|
func (to Word) GetRange(m action.Model, cursor core.Position, modifier string) (core.Position, core.Position, core.MotionType) {
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
line := buf.Lines[cursor.Line]
|
line := buf.Line(cursor.Line)
|
||||||
|
|
||||||
// Find word boundaries
|
// Find word boundaries
|
||||||
start := findWordStart(line, cursor.Col)
|
start := findWordStart(line, cursor.Col)
|
||||||
@ -28,7 +28,7 @@ type WORD struct{}
|
|||||||
|
|
||||||
func (to WORD) GetRange(m action.Model, cursor core.Position, modifier string) (core.Position, core.Position, core.MotionType) {
|
func (to WORD) GetRange(m action.Model, cursor core.Position, modifier string) (core.Position, core.Position, core.MotionType) {
|
||||||
buf := m.ActiveBuffer()
|
buf := m.ActiveBuffer()
|
||||||
line := buf.Lines[cursor.Line]
|
line := buf.Line(cursor.Line)
|
||||||
|
|
||||||
// Find word boundaries
|
// Find word boundaries
|
||||||
start := findWORDStart(line, cursor.Col)
|
start := findWORDStart(line, cursor.Col)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user