boolean (char c, @NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { if (c != CLOSE_TAG_SYMBOL || !CodeInsightSettings.getInstance().JAVADOC_GENERATE_CLOSING_TAG) { return false; } PsiDocumentManager.getInstance(project).commitAllDocuments(); if (!isAppropriatePlace(editor, file)) { return false; } // Inspect symbols to the left of the current caret position, insert closing tag only if valid tag is just typed // (e.g. don't insert anything on single '>' symbol typing). int offset = editor.getCaretModel().getOffset(); Document document = editor.getDocument(); String tagName = getTagName(document.getText(), offset); if (tagName == null || isSingleHtmlTag(tagName) || tagName.startsWith(COMMENT_PREFIX)) { return false; } document.insertString(offset, String.valueOf(START_TAG_SYMBOL) + SLASH + tagName + CLOSE_TAG_SYMBOL); return true; }