hints kitten: Allow clicking on matched text to select it in addition to typing the hint

This commit is contained in:
Kovid Goyal
2024-05-14 15:20:18 +05:30
parent 38fed8b391
commit 8c1e365eb5
8 changed files with 69 additions and 9 deletions

View File

@@ -3,6 +3,7 @@
package hints
import (
"encoding/json"
"fmt"
"io"
"os"
@@ -183,7 +184,8 @@ func main(_ *cli.Command, o *Options, args []string) (rc int, err error) {
} else {
mark_text = mark_text[len(hint):]
}
return hint_style(hint) + text_style(mark_text)
ans := hint_style(hint) + text_style(mark_text)
return fmt.Sprintf("\x1b]8;;mark:%d\a%s\x1b]8;;\a", m.Index, ans)
}
render := func() string {
@@ -230,6 +232,30 @@ func main(_ *cli.Command, o *Options, args []string) (rc int, err error) {
draw_screen()
return nil
}
lp.OnRCResponse = func(data []byte) error {
var r struct {
Type string
Mark int
}
if err := json.Unmarshal(data, &r); err != nil {
return err
}
if r.Type == "mark_activated" {
if m, ok := index_map[r.Mark]; ok {
chosen = append(chosen, m)
if o.Multiple {
ignore_mark_indices.Add(m.Index)
reset()
} else {
lp.Quit(0)
return nil
}
}
}
return nil
}
lp.OnText = func(text string, _, _ bool) error {
changed := false
for _, ch := range text {