in vim-engine/src/main/kotlin/com/maddyhome/idea/vim/regexp/engine/nfa/matcher/CollectionMatcher.kt [32:56]
override fun matches(
editor: VimEditor,
index: Int,
groups:
VimMatchGroupCollection,
isCaseInsensitive: Boolean,
possibleCursors: MutableList<VimCaret>,
): MatcherResult {
if (index >= editor.text().length) return MatcherResult.Failure
if (!includesEOL && editor.text()[index] == '\n') return MatcherResult.Failure
if (includesEOL && editor.text()[index] == '\n') return MatcherResult.Success(1)
val char = editor.text()[index]
val result = if (isCaseInsensitive && !forceNoIgnoreCase) (chars.map { it.lowercaseChar() }
.contains(char.lowercaseChar()) || ranges.any {
it.inRange(
char,
true
)
} || charClasses.any { it(char.lowercaseChar()) || it(char.uppercaseChar()) }) == !isNegated
else (chars.contains(char) || ranges.any { it.inRange(char) } || charClasses.any { it(char) }) == !isNegated
return if (result) MatcherResult.Success(1)
else MatcherResult.Failure
}