in plugin/src/software/aws/toolkits/eclipse/amazonq/util/JavaTypeaheadProcessor.java [231:284]
private PreprocessingCategory getBufferPreprocessingCategory(final int distanceTraversed, final String input,
final IQInlineBracket[] brackets) {
var bracket = brackets[distanceTraversed];
if (input.length() > 1 && bracket != null && bracket.getSymbol() == input.charAt(0)
&& (input.equals("()") || input.equals("<>") || input.equals("[]"))) {
((QInlineSuggestionOpenBracketSegment) bracket).setAutoCloseOccurred(true);
return PreprocessingCategory.NORMAL_BRACKETS_OPEN;
}
if (input.equals("\"\"") || input.equals("\'\'")) {
if (bracket != null && bracket.getSymbol() == input.charAt(0)) {
if (bracket instanceof QInlineSuggestionOpenBracketSegment) {
((QInlineSuggestionOpenBracketSegment) bracket).setAutoCloseOccurred(true);
return PreprocessingCategory.STR_QUOTE_OPEN;
} else {
return PreprocessingCategory.STR_QUOTE_CLOSE;
}
}
}
Matcher matcher = CURLY_AUTO_CLOSE_MATCHER.matcher(input);
if (matcher.find()) {
IQInlineBracket curlyBracket = null;
for (int i = distanceTraversed; i < brackets.length; i++) {
if (brackets[distanceTraversed] == null || brackets[distanceTraversed].getSymbol() != '{') {
continue;
}
((QInlineSuggestionOpenBracketSegment) brackets[distanceTraversed]).setAutoCloseOccurred(true);
}
return PreprocessingCategory.CURLY_BRACES;
}
if (bracket != null) {
if ((bracket instanceof QInlineSuggestionCloseBracketSegment) && input.charAt(0) == bracket.getSymbol()
&& !((QInlineSuggestionCloseBracketSegment) bracket).getOpenBracket().isResolved()
&& ((QInlineSuggestionCloseBracketSegment) bracket).getOpenBracket().hasAutoCloseOccurred()) {
boolean autoCloseEnabled = false;
switch (bracket.getSymbol()) {
case '\"':
case '\'':
autoCloseEnabled = isStringSetToAutoClose;
break;
case '>':
case ')':
case ']':
autoCloseEnabled = isBracketsSetToAutoClose;
break;
default:
break;
}
if (autoCloseEnabled) {
return PreprocessingCategory.NORMAL_BRACKETS_CLOSE;
}
}
}
return PreprocessingCategory.NONE;
}