diff --git a/fcore/app-update.sml b/fcore/app-update.sml index d9d05ad..c73ae6f 100644 --- a/fcore/app-update.sml +++ b/fcore/app-update.sml @@ -357,17 +357,6 @@ struct (* text-delete functions *) (** equivalent of vi's 'x' command **) - - fun deleteSearchList (cursorIdx, length, searchString, searchList, buffer) = - let - val searchList = - SearchList.delete (cursorIdx, length, searchString, searchList) - val searchList = SearchList.mapFrom (cursorIdx, ~length, searchList) - in - BuildSearchList.fromRange - (cursorIdx, length, buffer, searchString, searchList) - end - fun helpRemoveChr (app: app_type, buffer, searchList, cursorIdx, count) = if count = 0 then Finish.buildTextAndClear (app, buffer, cursorIdx, searchList) @@ -400,11 +389,11 @@ struct let (* delete char at cursor and then decrement cursorIdx by 1 * if cursorIdx is not 0 *) - val {searchString, ...} = app + val searchString = #searchString app val buffer = LineGap.delete (cursorIdx, 1, buffer) - val (buffer, searchList) = deleteSearchList - (cursorIdx, 1, searchString, searchList, buffer) + val (buffer, searchList) = + SearchLineGap.build (buffer, searchString) val cursorIdx = if @@ -417,11 +406,11 @@ struct end else let - val {searchString, ...} = app + val searchString = #searchString app val buffer = LineGap.delete (cursorIdx, 1, buffer) - val (buffer, searchList) = deleteSearchList - (cursorIdx, 1, searchString, searchList, buffer) + val (buffer, searchList) = + SearchLineGap.build (buffer, searchString) in helpRemoveChr (app, buffer, searchList, cursorIdx, count - 1) end @@ -447,9 +436,8 @@ struct val buffer = LineGap.delete (low, length, buffer) - val {searchList, searchString, ...} = app - val (buffer, searchList) = deleteSearchList - (low, length, searchString, searchList, buffer) + val searchString = #searchString app + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) (* If we have deleted from the buffer so that cursorIdx * is no longer a valid idx, @@ -474,7 +462,7 @@ struct fun deleteByDfa (app: app_type, count, fMove) = let - val {buffer, cursorIdx, searchList, searchString, ...} = app + val {buffer, cursorIdx, searchString, ...} = app val buffer = LineGap.goToIdx (cursorIdx, buffer) val otherIdx = fMove (buffer, cursorIdx, count) @@ -485,8 +473,7 @@ struct val buffer = LineGap.delete (low, length, buffer) - val (buffer, searchList) = deleteSearchList - (low, length, searchString, searchList, buffer) + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) val buffer = LineGap.goToIdx (low, buffer) in @@ -514,9 +501,8 @@ struct val buffer = LineGap.delete (cursorIdx, length, buffer) (* delete from searchList and map *) - val {searchList, searchString, ...} = app - val (buffer, searchList) = deleteSearchList - (cursorIdx, length, searchString, searchList, buffer) + val searchString = #searchString app + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) in helpRemoveChr (app, buffer, searchList, cursorIdx, 1) end @@ -524,7 +510,7 @@ struct fun deleteLine (app: app_type, count) = let - val {buffer, cursorIdx, searchList, searchString, ...} = app + val {buffer, cursorIdx, searchString, ...} = app val buffer = LineGap.goToIdx (cursorIdx, buffer) val startIdx = Cursor.vi0 (buffer, cursorIdx) @@ -533,8 +519,7 @@ struct val length = finishIdx - startIdx val buffer = LineGap.delete (startIdx, length, buffer) - val (buffer, searchList) = deleteSearchList - (startIdx, length, searchString, searchList, buffer) + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) val buffer = LineGap.goToIdx (startIdx, buffer) in @@ -548,9 +533,8 @@ struct val length = high - low val buffer = LineGap.delete (low, length, buffer) - val {searchList, searchString, ...} = app - val (buffer, searchList) = deleteSearchList - (low, length, searchString, searchList, buffer) + val searchString = #searchString app + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) val buffer = LineGap.goToIdx (low, buffer) in @@ -585,7 +569,6 @@ struct , windowHeight , startLine , searchString - , searchList , ... } = app @@ -602,8 +585,7 @@ struct val length = high - low val buffer = LineGap.delete (low, length, buffer) - val (buffer, searchList) = deleteSearchList - (low, length, searchString, searchList, buffer) + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) in Finish.buildTextAndClear (app, buffer, low, searchList) end @@ -617,9 +599,8 @@ struct val length = high - low val buffer = LineGap.delete (low, length, buffer) - val {searchString, searchList, ...} = app - val (buffer, searchList) = deleteSearchList - (low, length, searchString, searchList, buffer) + val searchString = #searchString app + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) in buildTextAndClearAfterChr (app, buffer, low, searchList) end @@ -648,19 +629,11 @@ struct fun deleteToStart (app: app_type) = let - val - { cursorIdx - , buffer - , windowWidth - , windowHeight - , searchList - , searchString - , ... - } = app + val {cursorIdx, buffer, windowWidth, windowHeight, searchString, ...} = + app val buffer = LineGap.delete (0, cursorIdx, buffer) - val (buffer, searchList) = deleteSearchList - (0, cursorIdx, searchString, searchList, buffer) + val (buffer, searchList) = SearchLineGap.build (buffer, searchString) val cursorIdx = 0 val startLine = 0 diff --git a/fcore/build-search-list.sml b/fcore/build-search-list.sml deleted file mode 100644 index 570594d..0000000 --- a/fcore/build-search-list.sml +++ /dev/null @@ -1,23 +0,0 @@ -structure BuildSearchList = -struct - fun fromStart (app, cursorIdx, buffer, searchString) = - if String.size searchString > 0 then - let - val buffer = LineGap.goToEnd buffer - val searchList = SearchLineGap.search (buffer, searchString) - val buffer = LineGap.goToStart buffer - in - AppWith.searchList (app, searchList, buffer, searchString) - end - else - app - - fun fromRange (startIdx, length, buffer, searchString, searchList) = - let - val buffer = LineGap.goToEnd buffer - val searchList = SearchLineGap.search (buffer, searchString) - val buffer = LineGap.goToStart buffer - in - (buffer, searchList) - end -end diff --git a/fcore/search-list.sml b/fcore/search-list.sml index 2f0da00..2291c97 100644 --- a/fcore/search-list.sml +++ b/fcore/search-list.sml @@ -15,19 +15,19 @@ sig val toString: t -> string end -structure SearchList : SEARCH_LIST = +structure SearchList: SEARCH_LIST = struct - structure IntSet = MakeGapSet ( - struct - type key = int + structure IntSet = + MakeGapSet + (struct + type key = int - val maxNodeSize = 32 + val maxNodeSize = 32 - fun l (a: int, b) = a < b - fun eq (a: int, b) = a = b - fun g (a: int, b) = a > b - end - ) + fun l (a: int, b) = a < b + fun eq (a: int, b) = a = b + fun g (a: int, b) = a > b + end) type t = IntSet.t @@ -43,10 +43,8 @@ struct val empty = IntSet.empty fun insert (num, set) = - let - val () = print ("adding num: " ^ Int.toString num ^ "\n") - in - IntSet.add (num, set) + let val () = print ("adding num: " ^ Int.toString num ^ "\n") + in IntSet.add (num, set) end val append = IntSet.add @@ -63,10 +61,12 @@ struct val secondVec = toVector result - val () = print ("delete start has " ^ Int.toString (Vector.length - firstVec) ^ "elements\n") - val () = print ("delete result has " ^ Int.toString (Vector.length - secondVec) ^ "elements\n") + val () = print + ("delete start has " ^ Int.toString (Vector.length firstVec) + ^ "elements\n") + val () = print + ("delete result has " ^ Int.toString (Vector.length secondVec) + ^ "elements\n") in result end @@ -132,7 +132,7 @@ struct let (* goToNum always places vector where num was found to the right list *) val () = print ("mapping by " ^ Int.toString num ^ "\n") - val {left, right} = goToNum (0, lst) + val {left, right} = goToNum (0, lst) in moveRightAndMap (num, 0, left, right) end @@ -143,10 +143,11 @@ struct let val vec = toVector {left = left, right = right} - val () = print ("toString has " ^ Int.toString (Vector.length vec) ^ - "elements\n") + val () = print + ("toString has " ^ Int.toString (Vector.length vec) ^ "elements\n") - val strList = Vector.foldr (fn (num, acc) => Int.toString num :: acc) [] vec + val strList = + Vector.foldr (fn (num, acc) => Int.toString num :: acc) [] vec in "" end diff --git a/fcore/search/search-line-gap.sml b/fcore/search/search-line-gap.sml index c817881..fa9e357 100644 --- a/fcore/search/search-line-gap.sml +++ b/fcore/search/search-line-gap.sml @@ -76,16 +76,4 @@ struct end else (buffer, SearchList.empty) - - fun buildIntoApp (app, buffer, searchString) = - if String.size searchString > 0 then - let - val buffer = LineGap.goToEnd buffer - val searchList = search (buffer, searchString) - val buffer = LineGap.goToStart buffer - in - AppWith.searchList (app, searchList, buffer, searchString) - end - else - app end diff --git a/shell/shell.sml b/shell/shell.sml index c5a9c3b..6433a3c 100644 --- a/shell/shell.sml +++ b/shell/shell.sml @@ -65,7 +65,15 @@ struct val app = AppType.init (lineGap, 1920, 1080) (* todo: remove temp line below which tests search list *) - val app = BuildSearchList.fromStart (app, 0, lineGap, "val ") + val app = + let + val searchString = "val " + val (buffer, searchList) = + SearchLineGap.build (#buffer app, searchString) + val buffer = LineGap.goToStart buffer + in + AppWith.searchList (app, searchList, buffer, searchString) + end val () = registerCallbacks window diff --git a/shell/update-thread.sml b/shell/update-thread.sml index 63838bd..4358524 100644 --- a/shell/update-thread.sml +++ b/shell/update-thread.sml @@ -30,7 +30,8 @@ struct val () = ExceptionLogger.addCommand inputMsg - val app = AppUpdate.update (app, inputMsg) handle e => ExceptionLogger.log e + val app = AppUpdate.update (app, inputMsg) + handle e => ExceptionLogger.log e val searchList = #searchList app val searchList = SearchList.toString searchList ^ "\n" diff --git a/shf-tests.mlb b/shf-tests.mlb index 32f8e2e..5a6af1e 100644 --- a/shf-tests.mlb +++ b/shf-tests.mlb @@ -12,12 +12,11 @@ message-types/mailbox-type.sml fcore/bin-search.sml fcore/search-list.sml +fcore/search/search-line-gap.sml fcore/app-type.sml fcore/app-with.sml -fcore/search/search-line-gap.sml -fcore/build-search-list.sml fcore/text-constants.sml ann "allowVectorExps true" diff --git a/shf.mlb b/shf.mlb index fdf4c90..3be7291 100644 --- a/shf.mlb +++ b/shf.mlb @@ -12,12 +12,11 @@ message-types/mailbox-type.sml fcore/bin-search.sml fcore/search-list.sml +fcore/search/search-line-gap.sml fcore/app-type.sml fcore/app-with.sml -fcore/search/search-line-gap.sml -fcore/build-search-list.sml fcore/text-constants.sml ann "allowVectorExps true"