diff options
Diffstat (limited to 'mark.go')
| -rw-r--r-- | mark.go | 21 |
1 files changed, 16 insertions, 5 deletions
@@ -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) } } |
