public static void initOffsets(final PsiFile file, final OffsetMap offsetMap) { int offset = Math.max( offsetMap.getOffset(CompletionInitializationContext.SELECTION_END_OFFSET), offsetMap.getOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET)); PsiElement element = file.findElementAt(offset); if (element instanceof PsiWhiteSpace && (!element.textContains('\n') || CodeStyleSettingsManager.getSettings(file.getProject()) .getCommonSettings(JavaLanguage.INSTANCE) .METHOD_PARAMETERS_LPAREN_ON_NEXT_LINE)) { element = file.findElementAt(element.getTextRange().getEndOffset()); } if (element == null) return; if (LEFT_PAREN.accepts(element)) { offsetMap.addOffset(LPAREN_OFFSET, element.getTextRange().getStartOffset()); PsiElement list = element.getParent(); PsiElement last = list.getLastChild(); if (last instanceof PsiJavaToken && ((PsiJavaToken) last).getTokenType() == JavaTokenType.RPARENTH) { offsetMap.addOffset(RPAREN_OFFSET, last.getTextRange().getStartOffset()); } offsetMap.addOffset(ARG_LIST_END_OFFSET, list.getTextRange().getEndOffset()); } }
private static void addNamesFromStatistics( Set<String> names, VariableKind variableKind, @Nullable String propertyName, @Nullable PsiType type) { String[] allNames = JavaStatisticsManager.getAllVariableNamesUsed(variableKind, propertyName, type); int maxFrequency = 0; for (String name : allNames) { int count = JavaStatisticsManager.getVariableNameUseCount(name, variableKind, propertyName, type); maxFrequency = Math.max(maxFrequency, count); } int frequencyLimit = Math.max(5, maxFrequency / 2); for (String name : allNames) { if (names.contains(name)) { continue; } int count = JavaStatisticsManager.getVariableNameUseCount(name, variableKind, propertyName, type); if (LOG.isDebugEnabled()) { LOG.debug("new name:" + name + " count:" + count); LOG.debug("frequencyLimit:" + frequencyLimit); } if (count >= frequencyLimit) { names.add(name); } } if (propertyName != null && type != null) { addNamesFromStatistics(names, variableKind, propertyName, null); addNamesFromStatistics(names, variableKind, null, type); } }