From 78e9e89b45e8f940f87ccaf7678cacab3d47fdcc Mon Sep 17 00:00:00 2001 From: tjp Date: Fri, 5 Jan 2024 12:18:36 -0700 Subject: m[ark] d[elete] --- mark.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'mark.go') diff --git a/mark.go b/mark.go index 63284c5..d7286e4 100644 --- a/mark.go +++ b/mark.go @@ -23,7 +23,7 @@ func MarkAdd(state *BrowserState, conf *Config, name, target string) error { } func MarkGo(state *BrowserState, conf *Config, name string) error { - target, err := findMark(state, name) + _, target, err := findMark(state, name) if err != nil { return err } @@ -43,22 +43,33 @@ func MarkList(state *BrowserState) error { return Print(state) } -func findMark(state *BrowserState, prefix string) (string, error) { +func MarkDelete(state *BrowserState, name string) error { + name, _, err := findMark(state, name) + if err != nil { + return err + } + delete(state.Marks, name) + return saveMarks(state.Marks) +} + +func findMark(state *BrowserState, prefix string) (string, string, error) { found := 0 + fullname := "" value := "" for name, target := range state.Marks { if strings.HasPrefix(name, prefix) { found += 1 value = target + fullname = name } } switch found { case 0: - return "", ErrNotAMark + return "", "", ErrNotAMark case 1: - return value, nil + return fullname, value, nil default: - return "", fmt.Errorf("too ambiguous - found %d matching marks", found) + return "", "", fmt.Errorf("too ambiguous - found %d matching marks", found) } } -- cgit v1.2.3