(linePtr *LinePtr)
| 105 | } |
| 106 | |
| 107 | func (lv *LogView) PrevLinePtr(linePtr *LinePtr) (*LinePtr, error) { |
| 108 | if linePtr == nil { |
| 109 | return nil, fmt.Errorf("linePtr is nil") |
| 110 | } |
| 111 | numLines := int64(0) |
| 112 | offset := linePtr.Offset |
| 113 | for { |
| 114 | var err error |
| 115 | prevOffset, err := lv.MultiBuf.PrevLine(offset) |
| 116 | if err == ErrBOF { |
| 117 | return nil, nil |
| 118 | } |
| 119 | if err != nil { |
| 120 | return nil, err |
| 121 | } |
| 122 | numLines++ |
| 123 | if lv.isLineMatch(prevOffset) { |
| 124 | return &LinePtr{Offset: prevOffset, RealLineNum: linePtr.RealLineNum - numLines, LineNum: linePtr.LineNum - 1}, nil |
| 125 | } |
| 126 | offset = prevOffset |
| 127 | } |
| 128 | } |
| 129 | |
| 130 | func (lv *LogView) Move(linePtr *LinePtr, offset int) (int, *LinePtr, error) { |
| 131 | var n int |
no test coverage detected