void (final @NotNull CompletionInitializationContext context) { final int offset = context.getStartOffset(); final PsiFile file = context.getFile(); final XmlAttributeValue attributeValue = PsiTreeUtil.findElementOfClassAtOffset(file, offset, XmlAttributeValue.class, true); if (attributeValue != null && offset == attributeValue.getTextRange().getStartOffset()) { context.setDummyIdentifier(""); } final PsiElement at = file.findElementAt(offset); if (at != null && at.getNode().getElementType() == XmlTokenType.XML_NAME && at.getParent() instanceof XmlAttribute) { context.getOffsetMap().addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, at.getTextRange().getEndOffset()); } if (at != null && at.getParent() instanceof XmlAttributeValue) { final int end = at.getParent().getTextRange().getEndOffset(); final Document document = context.getEditor().getDocument(); final int lineEnd = document.getLineEndOffset(document.getLineNumber(offset)); if (lineEnd < end) { context.setReplacementOffset(lineEnd); } } }