diff --git a/file/file.go b/file/file.go index 50e7478..1826b23 100644 --- a/file/file.go +++ b/file/file.go @@ -8,6 +8,8 @@ type File struct { path string file *os.File reader *bufio.Reader + realLine int + realColumn int currentLine int currentColumn int lines []string @@ -42,6 +44,9 @@ func (file *File) Read (bytes []byte) (amountRead int, err error) { // store the character in the file for _, char := range bytes { + file.realLine = file.currentLine + file.realColumn = file.currentColumn + if char == '\n' { file.lines = append(file.lines, "") file.currentLine ++ @@ -61,6 +66,9 @@ func (file *File) Read (bytes []byte) (amountRead int, err error) { func (file *File) ReadRune () (char rune, size int, err error) { char, size, err = file.reader.ReadRune() + file.realLine = file.currentLine + file.realColumn = file.currentColumn + if char == '\n' { file.lines = append(file.lines, "") file.currentLine ++ @@ -106,8 +114,8 @@ func (file *File) Close () { func (file *File) Location (width int) (location Location) { return Location { file: file, - row: file.currentLine, - column: file.currentColumn, + row: file.realLine, + column: file.realColumn, width: width, } }