move buffer around when calling 'SearchList.buildRange'
This commit is contained in:
@@ -17,7 +17,8 @@ struct
|
|||||||
val msgs = SEARCH (buffer, searchString, time) :: msgs
|
val msgs = SEARCH (buffer, searchString, time) :: msgs
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList = SearchList.buildRange (buffer, searchString, low + 1111)
|
val (buffer, searchList) =
|
||||||
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low, buffer)
|
val buffer = LineGap.goToIdx (low, buffer)
|
||||||
in
|
in
|
||||||
@@ -239,7 +240,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
|
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
|
||||||
|
|
||||||
(* If we have deleted from the buffer so that cursorIdx
|
(* If we have deleted from the buffer so that cursorIdx
|
||||||
@@ -717,7 +718,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, #searchString app, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, #searchString app, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
|
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
|
||||||
|
|
||||||
val cursorIdx = 0
|
val cursorIdx = 0
|
||||||
@@ -765,7 +766,8 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList = SearchList.buildRange (buffer, searchString, low + 1111)
|
val (buffer, searchList) =
|
||||||
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low, buffer)
|
val buffer = LineGap.goToIdx (low, buffer)
|
||||||
in
|
in
|
||||||
@@ -823,7 +825,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, low + 1111)
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low, buffer)
|
val buffer = LineGap.goToIdx (low, buffer)
|
||||||
@@ -855,7 +857,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, low + 1111)
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low, buffer)
|
val buffer = LineGap.goToIdx (low, buffer)
|
||||||
@@ -884,7 +886,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, low + 1111)
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (origLow, buffer)
|
val buffer = LineGap.goToIdx (origLow, buffer)
|
||||||
@@ -998,7 +1000,7 @@ struct
|
|||||||
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
val buffer = LineGap.goToIdx (low - 1111, buffer)
|
||||||
val searchList =
|
val (buffer, searchList) =
|
||||||
SearchList.buildRange (buffer, searchString, low + 1111)
|
SearchList.buildRange (buffer, searchString, low + 1111)
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (low, buffer)
|
val buffer = LineGap.goToIdx (low, buffer)
|
||||||
|
|||||||
@@ -29,7 +29,8 @@ struct
|
|||||||
val searchCursorIdx = searchCursorIdx + 1
|
val searchCursorIdx = searchCursorIdx + 1
|
||||||
|
|
||||||
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
||||||
val tempSearchList = buildTempSearchList (searchString, buffer, cursorIdx)
|
val (buffer, tempSearchList) =
|
||||||
|
buildTempSearchList (searchString, buffer, cursorIdx)
|
||||||
in
|
in
|
||||||
NormalSearchFinish.onSearchChanged
|
NormalSearchFinish.onSearchChanged
|
||||||
( app
|
( app
|
||||||
@@ -120,7 +121,7 @@ struct
|
|||||||
|
|
||||||
val {cursorIdx, buffer, ...} = app
|
val {cursorIdx, buffer, ...} = app
|
||||||
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer)
|
||||||
val tempSearchList =
|
val (buffer, tempSearchList) =
|
||||||
buildTempSearchList (searchString, buffer, cursorIdx)
|
buildTempSearchList (searchString, buffer, cursorIdx)
|
||||||
in
|
in
|
||||||
NormalSearchFinish.onSearchChanged
|
NormalSearchFinish.onSearchChanged
|
||||||
|
|||||||
@@ -242,9 +242,9 @@ struct
|
|||||||
SOME nfa =>
|
SOME nfa =>
|
||||||
Nfa.getMatchesInRange
|
Nfa.getMatchesInRange
|
||||||
(#idx buffer, finishIdx, buffer : LineGap.t, nfa)
|
(#idx buffer, finishIdx, buffer : LineGap.t, nfa)
|
||||||
| NONE => PersistentVector.empty
|
| NONE => (buffer, PersistentVector.empty)
|
||||||
else
|
else
|
||||||
PersistentVector.empty
|
(buffer, PersistentVector.empty)
|
||||||
|
|
||||||
fun nextMatch (cursorIdx, searchList, count) = raise Fail "todo: reimplement"
|
fun nextMatch (cursorIdx, searchList, count) = raise Fail "todo: reimplement"
|
||||||
|
|
||||||
|
|||||||
@@ -171,11 +171,12 @@ struct
|
|||||||
local
|
local
|
||||||
fun loop (pos, buffer, nfa, origNfa, startPos, acc, lastIdx) =
|
fun loop (pos, buffer, nfa, origNfa, startPos, acc, lastIdx) =
|
||||||
if pos = #textLength buffer then
|
if pos = #textLength buffer then
|
||||||
acc
|
(buffer, acc)
|
||||||
else if pos > lastIdx then
|
else if pos > lastIdx then
|
||||||
acc
|
(buffer, acc)
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
|
val buffer = LineGap.goToIdx (pos, buffer)
|
||||||
val chr = LineGap.sub (pos, buffer)
|
val chr = LineGap.sub (pos, buffer)
|
||||||
val (nfa, state) = rebuild (nfa, chr, pos)
|
val (nfa, state) = rebuild (nfa, chr, pos)
|
||||||
in
|
in
|
||||||
@@ -202,7 +203,6 @@ struct
|
|||||||
loop (pos + 1, buffer, nfa, origNfa, startPos, acc, lastIdx)
|
loop (pos + 1, buffer, nfa, origNfa, startPos, acc, lastIdx)
|
||||||
end
|
end
|
||||||
in
|
in
|
||||||
(* Prerequisite: move buffer to 'start' parameter before calling *)
|
|
||||||
fun getMatchesInRange (startIdx, finishIdx, buffer: LineGap.t, nfa) =
|
fun getMatchesInRange (startIdx, finishIdx, buffer: LineGap.t, nfa) =
|
||||||
loop (startIdx, buffer, nfa, nfa, 0, PersistentVector.empty, finishIdx)
|
loop (startIdx, buffer, nfa, nfa, 0, PersistentVector.empty, finishIdx)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user