a little additional scaffolding for normal mode
This commit is contained in:
@@ -5,6 +5,16 @@ struct
|
||||
open AppType
|
||||
open InputMsg
|
||||
|
||||
(* todo: create draw msg showing search bar *)
|
||||
fun switchToNormalSearchMode (app: app_type) =
|
||||
let
|
||||
val mode =
|
||||
NORMAL_SEARCH_MODE
|
||||
{searchString = "", tempSearchList = Vector.fromList []}
|
||||
in
|
||||
AppWith.mode (app, mode, [])
|
||||
end
|
||||
|
||||
fun getNumLength (pos, str) =
|
||||
if pos = String.size str then
|
||||
pos
|
||||
@@ -82,6 +92,7 @@ struct
|
||||
else NormalMove.moveToLine (app, count - 1)
|
||||
| #"%" => NormalMove.moveToMatchingPair app
|
||||
| #"x" => NormalDelete.removeChr (app, count, time)
|
||||
| #"/" => switchToNormalSearchMode app
|
||||
(* multi-char commands which can be appended *)
|
||||
| #"t" => appendChr (app, chr, str)
|
||||
| #"T" => appendChr (app, chr, str)
|
||||
@@ -258,4 +269,5 @@ struct
|
||||
| KEY_ESC => Finish.clearMode app
|
||||
| RESIZE_EVENT (width, height) => Finish.resizeText (app, width, height)
|
||||
| WITH_SEARCH_LIST searchList => Finish.withSearchList (app, searchList)
|
||||
| KEY_ENTER => app
|
||||
end
|
||||
|
||||
@@ -3,10 +3,33 @@ struct
|
||||
open AppType
|
||||
open InputMsg
|
||||
|
||||
fun update (app, searchString, msg, time) =
|
||||
(* todo: redraw based on results of tempSearchList *)
|
||||
fun parseChr (app: app_type, searchString, chr) =
|
||||
let
|
||||
val c = String.implode [chr]
|
||||
val searchString = searchString ^ c
|
||||
|
||||
val {buffer, cursorIdx, ...} = app
|
||||
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
||||
val tempSearchList =
|
||||
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
|
||||
|
||||
val mode =
|
||||
NORMAL_SEARCH_MODE
|
||||
{searchString = searchString, tempSearchList = tempSearchList}
|
||||
in
|
||||
AppWith.mode (app, mode, [])
|
||||
end
|
||||
|
||||
(* todo: switch to normal mode, save tempSearchList and searchString,
|
||||
* and redraw *)
|
||||
fun finishSearch (app: app_type, searchString, tempSearchList) = app
|
||||
|
||||
fun update (app, {searchString, tempSearchList}, msg, time) =
|
||||
case msg of
|
||||
CHAR_EVENT chrCmd => app
|
||||
CHAR_EVENT chr => parseChr (app, searchString, chr)
|
||||
| KEY_ESC => Finish.clearMode app
|
||||
| KEY_ENTER => finishSearch (app, searchString, tempSearchList)
|
||||
| RESIZE_EVENT (width, height) => app
|
||||
| WITH_SEARCH_LIST searchList => app
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user