summaryrefslogtreecommitdiff
path: root/mark.go
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-05 12:18:36 -0700
committertjp <tjp@ctrl-c.club>2024-01-05 12:18:36 -0700
commit78e9e89b45e8f940f87ccaf7678cacab3d47fdcc (patch)
treee639b6f1e2913347df218df7109f6c7ac8a382df /mark.go
parenta8bfa115fb7186643258d1d654b770c9773bff4a (diff)
m[ark] d[elete]
Diffstat (limited to 'mark.go')
-rw-r--r--mark.go21
1 files changed, 16 insertions, 5 deletions
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)
}
}