boolean (@NotNull Editor editor, @NotNull PsiFile psiFile) { // Check parameter description completion. final CaretModel caretModel = editor.getCaretModel(); final Pair<AbstractBasicJavadocHelper.JavadocParameterInfo,List<AbstractBasicJavadocHelper.JavadocParameterInfo>> pair = myHelper.parse(psiFile, editor, caretModel.getOffset()); if (pair.first == null) { return false; } final AbstractBasicJavadocHelper.JavadocParameterInfo next = findNext(pair.second, pair.first); if (next == null) { final int line = pair.first.lastLine + 1; final Document document = editor.getDocument(); if (line < document.getLineCount()) { StringBuilder indent = new StringBuilder(); boolean insertIndent = true; final CharSequence text = document.getCharsSequence(); for (int i = document.getLineStartOffset(line), max = document.getLineEndOffset(line); i < max; i++) { final char c = text.charAt(i); if (c == ' ' || c == '\t') { indent.append(c); continue; } else if (c == '*') { indent.append("* "); if (i < max - 1 && text.charAt(i + 1) != '/') { insertIndent = false; } } indent.append("\n"); break; } if (insertIndent) { document.insertString(document.getLineStartOffset(line), indent); } } moveCaretToTheLineEndIfPossible(editor, line); return true; } if (next.parameterDescriptionStartPosition != null) { myHelper.navigate(next.parameterDescriptionStartPosition, editor, psiFile.getProject()); } else { final LogicalPosition position = myHelper.calculateDescriptionStartPosition(psiFile, pair.second, next); myHelper.navigate(position, editor, psiFile.getProject()); } return true; }