main.ml: add command based search

This commit is contained in:
hazen2215 2023-12-17 22:01:30 +09:00
parent 1d67679656
commit 684cdf009b
1 changed files with 15 additions and 1 deletions

16
main.ml
View File

@ -1013,6 +1013,12 @@ let getpassword () =
then (adderrmsg "askpass" "ask password program not set"; E.s)
else getcmdoutput (adderrfmt passcmd "failed to obrain password: %s") passcmd
let getsearchquery () =
let searchcmd = getenvdef "LLPP_SEARCH" "llpp-search" in
if emptystr searchcmd
then (adderrmsg "search" "search program not set"; E.s)
else getcmdoutput (adderrfmt searchcmd "failed to obrain query: %s") searchcmd
let pgoto opaque pageno x y =
let pdimno = getpdimno pageno in
let x, y = Ffi.project opaque pageno pdimno x y in
@ -3239,7 +3245,7 @@ let viewkeyboard key mask =
S.text := E.s;
Hashtbl.iter (fun _ opaque -> Ffi.clearmark opaque) S.pagemap;
Glutils.postRedisplay "dehighlight";
| Ascii (('/' | '?') as c) ->
| Ascii (('?') as c) ->
let ondone isforw s =
cbput !S.hists.pat s;
S.searchpattern := s;
@ -3247,6 +3253,14 @@ let viewkeyboard key mask =
in
enttext (String.make 1 c, E.s, Some (onhist !S.hists.pat),
textentry, ondone (c = '/'), true)
| Ascii '/' ->
let query = getsearchquery() in
if nonemptystr query
then (
cbput !S.hists.pat query;
S.searchpattern := query;
search query true
)
| Ascii '+' | Ascii '=' when ctrl ->
let incr = if conf.zoom +. 0.01 > 0.1 then 0.1 else 0.01 in
pivotzoom (conf.zoom +. incr)