only update search list if timestamp for search message is greater than the buffer's modified time
This commit is contained in:
@@ -49,7 +49,11 @@ struct
|
||||
)
|
||||
end
|
||||
|
||||
fun withSearchList (app: app_type, searchList) =
|
||||
fun withSearchList (app: app_type, searchList, searchTime) =
|
||||
let
|
||||
open Time
|
||||
in
|
||||
if searchTime >= #bufferModifyTime app then
|
||||
let
|
||||
val {buffer, searchString, cursorIdx, bufferModifyTime, ...} = app
|
||||
val app = NormalModeWith.searchList
|
||||
@@ -58,6 +62,9 @@ struct
|
||||
buildTextAndClear
|
||||
(app, buffer, cursorIdx, searchList, [], bufferModifyTime)
|
||||
end
|
||||
else
|
||||
app
|
||||
end
|
||||
|
||||
fun resizeText (app: app_type, newWidth, newHeight) =
|
||||
let
|
||||
|
||||
@@ -522,8 +522,8 @@ struct
|
||||
| KEY_ESC => NormalFinish.clearMode app
|
||||
| RESIZE_EVENT (width, height) =>
|
||||
NormalFinish.resizeText (app, width, height)
|
||||
| WITH_SEARCH_LIST searchList =>
|
||||
NormalFinish.withSearchList (app, searchList)
|
||||
| WITH_SEARCH_LIST (searchList, time) =>
|
||||
NormalFinish.withSearchList (app, searchList, time)
|
||||
|
||||
(* Don't need to handle these keys in normal mode.
|
||||
* Everything that is possible through them in Vi and Vim
|
||||
|
||||
@@ -141,8 +141,8 @@ struct
|
||||
moveLeft (app, searchString, tempSearchList, searchCursorIdx)
|
||||
| ARROW_RIGHT =>
|
||||
moveRight (app, searchString, tempSearchList, searchCursorIdx)
|
||||
| WITH_SEARCH_LIST searchList =>
|
||||
NormalSearchModeWith.searchList (app, searchList)
|
||||
| WITH_SEARCH_LIST (searchList, time) =>
|
||||
NormalFinish.withSearchList (app, searchList, time)
|
||||
| RESIZE_EVENT (width, height) =>
|
||||
NormalSearchFinish.resize
|
||||
(app, width, height, searchCursorIdx, tempSearchList)
|
||||
|
||||
@@ -6,7 +6,7 @@ struct
|
||||
| KEY_ENTER
|
||||
| KEY_BACKSPACE
|
||||
| RESIZE_EVENT of int * int
|
||||
| WITH_SEARCH_LIST of int vector
|
||||
| WITH_SEARCH_LIST of int vector * Time.time
|
||||
| ARROW_LEFT
|
||||
| ARROW_UP
|
||||
| ARROW_RIGHT
|
||||
|
||||
@@ -7,7 +7,8 @@ struct
|
||||
let
|
||||
val (buffer, searchString, time) = Mailbox.recv searchMailbox
|
||||
val searchList = SearchList.build (buffer, searchString)
|
||||
val () = Mailbox.send (inputMailbox, InputMsg.WITH_SEARCH_LIST searchList)
|
||||
val msg = InputMsg.WITH_SEARCH_LIST (searchList, time)
|
||||
val () = Mailbox.send (inputMailbox, msg)
|
||||
in
|
||||
loop (searchMailbox, inputMailbox)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user