From 6305dcbe6f1e76f0aa63dfb6d6a30ea8a1bd6842 Mon Sep 17 00:00:00 2001 From: srpvpn Date: Sun, 28 Dec 2025 21:38:49 +0300 Subject: [PATCH] refactor: simplify internal buffer, error handling, and path logic --- internal/util/util.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/internal/util/util.go b/internal/util/util.go index e0ae62f287..9870f75ebc 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -404,23 +404,26 @@ func ReplaceHome(path string) (string, error) { var userData *user.User var err error + var home string - homeString := strings.Split(path, "/")[0] - if homeString == "~" { + if len(path) == 1 || path[1] == '/' { userData, err = user.Current() if err != nil { - return "", errors.New("Could not find user: " + err.Error()) + return "", fmt.Errorf("Could not find user: %w", err) } + home = userData.HomeDir + path = path[1:] } else { - userData, err = user.Lookup(homeString[1:]) + homeString := strings.SplitN(path[1:], "/", 2)[0] + userData, err = user.Lookup(homeString) if err != nil { - return "", errors.New("Could not find user: " + err.Error()) + return "", fmt.Errorf("Could not find user: %w", err) } + home = userData.HomeDir + path = path[1+len(homeString):] } - home := userData.HomeDir - - return strings.Replace(path, homeString, home, 1), nil + return home + path, nil } // GetPathAndCursorPosition returns a filename without everything following a `:`