From fcde25c28aca847154533d889f60edf7c6ec4ab2 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Tue, 28 Apr 2026 19:28:32 +0300 Subject: [PATCH] Fix missing final newline from end of file on load --- src/buffer.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/buffer.go b/src/buffer.go index d420202..2956dd8 100644 --- a/src/buffer.go +++ b/src/buffer.go @@ -1,7 +1,6 @@ package main import ( - "bytes" "fmt" "os" "path/filepath" @@ -118,12 +117,24 @@ func (buffer *Buffer) Load() error { buffer.filename = filepath.Join(homedir, buffer.filename[2:]) } - content, err := os.ReadFile(buffer.filename) + contentBytes, err := os.ReadFile(buffer.filename) if err != nil { return err } + content := runestring.RuneString(string(contentBytes)) + + if len(content) != 0 { + buffer.Contents = runestring.Split(content, '\n') + + // Add empty line at end of buffer for last newline + if content[len(content)-1] == '\n' { + buffer.Contents = append(buffer.Contents, make(runestring.RuneString, 0)) + } + + buffer.CursorPos.Y = len(buffer.Contents) - 1 + buffer.CursorPos.X = len(buffer.Contents[buffer.CursorPos.Y]) + } - buffer.Contents = runestring.Split(bytes.Runes(content), '\n') return nil }