diff --git a/fcore/app-type.sml b/fcore/app-type.sml index 5e7cefc..6e12a0c 100644 --- a/fcore/app-type.sml +++ b/fcore/app-type.sml @@ -7,6 +7,7 @@ struct , tempSearchList: PersistentVector.t , searchCursorIdx: int , searchScrollColumn: int + , caseSensitive: bool } type app_type = diff --git a/fcore/normal-mode/normal-mode.sml b/fcore/normal-mode/normal-mode.sml index d770ca3..7fdd659 100644 --- a/fcore/normal-mode/normal-mode.sml +++ b/fcore/normal-mode/normal-mode.sml @@ -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 diff --git a/fcore/normal-mode/normal-search-finish.sml b/fcore/normal-mode/normal-search-finish.sml index 3f0c05a..a3ffa1e 100644 --- a/fcore/normal-mode/normal-search-finish.sml +++ b/fcore/normal-mode/normal-search-finish.sml @@ -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 diff --git a/fcore/normal-mode/normal-search-mode.sml b/fcore/normal-mode/normal-search-mode.sml index 0a7d0b1..99de563 100644 --- a/fcore/normal-mode/normal-search-mode.sml +++ b/fcore/normal-mode/normal-search-mode.sml @@ -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