private PreprocessingCategory getBufferPreprocessingCategory()

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;
    }