add just one more 'word' test, extract steps to delete from search list into a reusable function (don't need to memorise the steps), and fix bug in cursor.sml where we were looking at tl without calculating correct strIdx

This commit is contained in:
2024-11-23 05:16:37 +00:00
parent 4a09a5716d
commit 0bfe549e04
3 changed files with 30 additions and 9 deletions

View File

@@ -363,6 +363,16 @@ 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
let
@@ -423,11 +433,8 @@ struct
val {searchString, ...} = app
val buffer = LineGap.delete (cursorIdx, 1, buffer)
val searchList = SearchList.delete (cursorIdx, 1, searchString, searchList)
val searchList = SearchList.mapFrom (cursorIdx, ~1, searchList)
val (buffer, searchList) =
BuildSearchList.fromRange
(cursorIdx, 1, buffer, searchString, searchList)
deleteSearchList (cursorIdx, 1, searchString, searchList, buffer)
val cursorIdx =
if
@@ -443,11 +450,8 @@ struct
val {searchString, ...} = app
val buffer = LineGap.delete (cursorIdx, 1, buffer)
val searchList = SearchList.delete (cursorIdx, 1, searchString, searchList)
val searchList = SearchList.mapFrom (cursorIdx, ~1, searchList)
val (buffer, searchList) =
BuildSearchList.fromRange
(cursorIdx, 1, buffer, searchString, searchList)
deleteSearchList (cursorIdx, 1, searchString, searchList, buffer)
in
helpRemoveChr (app, buffer, searchList, cursorIdx, count - 1)
end

View File

@@ -1732,7 +1732,8 @@ struct
(* strIdx is in tl *)
(case tl of
tlhd :: tltl =>
helpIsNextChrEndOfLine (strIdx, tlhd, tltl)
helpIsNextChrEndOfLine
(strIdx - String.size hd, tlhd, tltl)
| [] =>
(* strIdx is at end of lineGap
* which also means at end of line *)