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 , tempSearchList: PersistentVector.t
, searchCursorIdx: int , searchCursorIdx: int
, searchScrollColumn: int , searchScrollColumn: int
, caseSensitive: bool
} }
type app_type = type app_type =

View File

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

View File

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

View File

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