From 45fbd85183dbf6837533bd6b5d0ac5a03ece9161 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Tue, 30 Sep 2025 05:40:57 +0100 Subject: [PATCH] move buffer around when calling 'SearchList.buildRange' --- fcore/normal-mode/make-normal-delete.sml | 18 ++++++++++-------- fcore/normal-mode/normal-search-mode.sml | 5 +++-- fcore/search-list.sml | 4 ++-- fcore/search-list/nfa.sml | 6 +++--- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/fcore/normal-mode/make-normal-delete.sml b/fcore/normal-mode/make-normal-delete.sml index a15404a..9229ad2 100644 --- a/fcore/normal-mode/make-normal-delete.sml +++ b/fcore/normal-mode/make-normal-delete.sml @@ -17,7 +17,8 @@ struct val msgs = SEARCH (buffer, searchString, time) :: msgs 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) in @@ -239,7 +240,7 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, cursorIdx + 1111) (* If we have deleted from the buffer so that cursorIdx @@ -717,7 +718,7 @@ struct val initialMsg = SEARCH (buffer, #searchString app, time) :: initialMsg val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, cursorIdx + 1111) val cursorIdx = 0 @@ -765,7 +766,8 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg 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) in @@ -823,7 +825,7 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg val buffer = LineGap.goToIdx (low - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, low + 1111) val buffer = LineGap.goToIdx (low, buffer) @@ -855,7 +857,7 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg val buffer = LineGap.goToIdx (low - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, low + 1111) val buffer = LineGap.goToIdx (low, buffer) @@ -884,7 +886,7 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg val buffer = LineGap.goToIdx (low - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, low + 1111) val buffer = LineGap.goToIdx (origLow, buffer) @@ -998,7 +1000,7 @@ struct val initialMsg = SEARCH (buffer, searchString, time) :: initialMsg val buffer = LineGap.goToIdx (low - 1111, buffer) - val searchList = + val (buffer, searchList) = SearchList.buildRange (buffer, searchString, low + 1111) val buffer = LineGap.goToIdx (low, buffer) diff --git a/fcore/normal-mode/normal-search-mode.sml b/fcore/normal-mode/normal-search-mode.sml index 671fcaf..610705f 100644 --- a/fcore/normal-mode/normal-search-mode.sml +++ b/fcore/normal-mode/normal-search-mode.sml @@ -29,7 +29,8 @@ struct val searchCursorIdx = searchCursorIdx + 1 val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer) - val tempSearchList = buildTempSearchList (searchString, buffer, cursorIdx) + val (buffer, tempSearchList) = + buildTempSearchList (searchString, buffer, cursorIdx) in NormalSearchFinish.onSearchChanged ( app @@ -120,7 +121,7 @@ struct val {cursorIdx, buffer, ...} = app val buffer = LineGap.goToIdx (cursorIdx - 1111, buffer) - val tempSearchList = + val (buffer, tempSearchList) = buildTempSearchList (searchString, buffer, cursorIdx) in NormalSearchFinish.onSearchChanged diff --git a/fcore/search-list.sml b/fcore/search-list.sml index fdcc47b..f5052a8 100644 --- a/fcore/search-list.sml +++ b/fcore/search-list.sml @@ -242,9 +242,9 @@ struct SOME nfa => Nfa.getMatchesInRange (#idx buffer, finishIdx, buffer : LineGap.t, nfa) - | NONE => PersistentVector.empty + | NONE => (buffer, PersistentVector.empty) else - PersistentVector.empty + (buffer, PersistentVector.empty) fun nextMatch (cursorIdx, searchList, count) = raise Fail "todo: reimplement" diff --git a/fcore/search-list/nfa.sml b/fcore/search-list/nfa.sml index 70c82b1..8b1cf7a 100644 --- a/fcore/search-list/nfa.sml +++ b/fcore/search-list/nfa.sml @@ -171,11 +171,12 @@ struct local fun loop (pos, buffer, nfa, origNfa, startPos, acc, lastIdx) = if pos = #textLength buffer then - acc + (buffer, acc) else if pos > lastIdx then - acc + (buffer, acc) else let + val buffer = LineGap.goToIdx (pos, buffer) val chr = LineGap.sub (pos, buffer) val (nfa, state) = rebuild (nfa, chr, pos) in @@ -202,7 +203,6 @@ struct loop (pos + 1, buffer, nfa, origNfa, startPos, acc, lastIdx) end in - (* Prerequisite: move buffer to 'start' parameter before calling *) fun getMatchesInRange (startIdx, finishIdx, buffer: LineGap.t, nfa) = loop (startIdx, buffer, nfa, nfa, 0, PersistentVector.empty, finishIdx) end