add 'caseSensitive' field to NORMAL_SEARCH_MODE, so that we know what kind of DFA to build

This commit is contained in:
2025-10-08 04:53:04 +01:00
parent 7a72bc2ed1
commit 7f68084398
4 changed files with 50 additions and 6 deletions

View File

@@ -7,6 +7,7 @@ struct
, tempSearchList: PersistentVector.t
, searchCursorIdx: int
, searchScrollColumn: int
, caseSensitive: bool
}
type app_type =

View File

@@ -7,7 +7,7 @@ struct
fun switchToNormalSearchMode (app: app_type) =
NormalSearchFinish.onSearchChanged
(app, "", PersistentVector.empty, 0, 0, #buffer app)
(app, "", PersistentVector.empty, 0, 0, true, #buffer app)
fun getNumLength (pos, str) =
if pos = String.size str then

View File

@@ -9,6 +9,7 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, buffer
) =
let
@@ -31,6 +32,7 @@ struct
, tempSearchList = tempSearchList
, searchCursorIdx = searchCursorIdx
, searchScrollColumn = searchScrollColumn
, caseSensitive = caseSensitive
}
val floatWindowWidth = Real32.fromInt windowWidth
@@ -86,6 +88,7 @@ struct
, searchCursorIdx
, tempSearchList
, searchScrollColumn
, caseSensitive
) =
let
val
@@ -104,6 +107,7 @@ struct
, tempSearchList = tempSearchList
, searchCursorIdx = searchCursorIdx
, searchScrollColumn = searchScrollColumn
, caseSensitive = caseSensitive
}
val searchStringPosY = newWindowHeight - TextConstants.ySpace - 5

View File

@@ -8,7 +8,13 @@ struct
SearchList.buildRange (buffer, searchString, cursorIdx + 1111)
fun addChr
(app: app_type, searchString, searchCursorIdx, searchScrollColumn, chr) =
( app: app_type
, searchString
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, chr
) =
let
val {cursorIdx, buffer, ...} = app
@@ -36,6 +42,7 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, buffer
)
end
@@ -97,6 +104,7 @@ struct
, tempSearchList
, searchScrollColumn
, searchCursorIdx
, caseSensitive
) =
if searchCursorIdx = 0 then
app
@@ -127,12 +135,19 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, buffer
)
end
fun moveLeft
(app, searchString, tempSearchList, searchCursorIdx, searchScrollColumn) =
( app
, searchString
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
) =
if searchCursorIdx = 0 then
app
else
@@ -145,12 +160,19 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, #buffer app
)
end
fun moveRight
(app, searchString, tempSearchList, searchCursorIdx, searchScrollColumn) =
( app
, searchString
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
) =
if searchCursorIdx = String.size searchString then
app
else
@@ -164,19 +186,32 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, #buffer app
)
end
fun update
( app
, {searchString, tempSearchList, searchCursorIdx, searchScrollColumn}
, { searchString
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
}
, msg
, time
) =
case msg of
CHAR_EVENT chr =>
addChr (app, searchString, searchCursorIdx, searchScrollColumn, chr)
addChr
( app
, searchString
, searchCursorIdx
, searchScrollColumn
, caseSensitive
, chr
)
| KEY_BACKSPACE =>
backspace
( app
@@ -184,6 +219,7 @@ struct
, tempSearchList
, searchScrollColumn
, searchCursorIdx
, caseSensitive
)
| KEY_ESC => exitToNormalMode app
| KEY_ENTER => saveSearch (app, searchString, tempSearchList, time)
@@ -194,6 +230,7 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
)
| ARROW_RIGHT =>
moveRight
@@ -202,6 +239,7 @@ struct
, tempSearchList
, searchCursorIdx
, searchScrollColumn
, caseSensitive
)
| WITH_SEARCH_LIST (searchList, time) =>
NormalFinish.withSearchList (app, searchList, time)
@@ -214,6 +252,7 @@ struct
, searchCursorIdx
, tempSearchList
, searchScrollColumn
, caseSensitive
)
(* In Vim's search mode, the up and down arrows can be used