m[ark] d[elete]
This commit is contained in:
parent
a8bfa115fb
commit
78e9e89b45
12
actions.go
12
actions.go
|
@ -359,7 +359,7 @@ func parseURL(str string, state *BrowserState, defaultScheme string) (*url.URL,
|
|||
}
|
||||
|
||||
if strings.HasPrefix(str, "m:") {
|
||||
target, err := findMark(state, str[2:])
|
||||
_, target, err := findMark(state, str[2:])
|
||||
if err != nil {
|
||||
return nil, -1, err
|
||||
}
|
||||
|
@ -440,6 +440,11 @@ func print(state *BrowserState) error {
|
|||
out = state.Modal
|
||||
}
|
||||
|
||||
if state.Modal != nil || state.Pager == "never" {
|
||||
_, err := os.Stdout.Write(out)
|
||||
return err
|
||||
}
|
||||
|
||||
lessarg := []string{}
|
||||
switch state.Pager {
|
||||
case "auto":
|
||||
|
@ -455,9 +460,6 @@ func print(state *BrowserState) error {
|
|||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
case "never":
|
||||
_, err := os.Stdout.Write(out)
|
||||
return err
|
||||
}
|
||||
|
||||
return errors.New("invalid 'pager' value in configuration")
|
||||
|
@ -545,6 +547,8 @@ func Mark(state *BrowserState, args []string, conf *Config) error {
|
|||
return MarkGo(state, conf, args[1])
|
||||
case "list":
|
||||
return MarkList(state)
|
||||
case "delete":
|
||||
return MarkDelete(state, args[1])
|
||||
}
|
||||
|
||||
return ErrInvalidMarkArgs
|
||||
|
|
|
@ -187,6 +187,14 @@ func parseMarkArgs(line string) ([]string, error) {
|
|||
}
|
||||
return fields, nil
|
||||
}
|
||||
case 'd':
|
||||
if strings.HasPrefix("delete", fields[0]) {
|
||||
fields[0] = "delete"
|
||||
if len(fields) != 2 {
|
||||
return nil, ErrInvalidArgs
|
||||
}
|
||||
return fields, nil
|
||||
}
|
||||
}
|
||||
|
||||
if len(fields) != 1 {
|
||||
|
|
1
help.go
1
help.go
|
@ -119,6 +119,7 @@ or unique prefix of a name can be used as "mark go".
|
|||
m[ark] a[dd] NAME URL: adds a new name/url pair to your saved marks.
|
||||
m[ark] g[o] NAME: navigates to the named mark's URL.
|
||||
m[ark] l[ist]: shows the list of marks and their URLs.
|
||||
m[ark] d[elete] NAME: removes the named mark.
|
||||
`[1:],
|
||||
|
||||
"tour": `
|
||||
|
|
21
mark.go
21
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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue