void (@NotNull DocumentEvent e) { final PsiFile origPsiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(myHostDocument); String newText = myFragmentDocument.getText(); // prepare guarded blocks Map<String, String> replacementMap = new LinkedHashMap<>(); int count = 0; for (RangeMarker o : ContainerUtil.reverse(((DocumentEx)myFragmentDocument).getGuardedBlocks())) { String replacement = o.getUserData(QuickEditHandler.REPLACEMENT_KEY); String tempText = "REPLACE" + (count++) + Long.toHexString(StringHash.calc(replacement)); newText = newText.substring(0, o.getStartOffset()) + tempText + newText.substring(o.getEndOffset()); replacementMap.put(tempText, replacement); } // run preformat processors final int hostStartOffset = myAltFullRange.getStartOffset(); myHostEditor.getCaretModel().moveToOffset(hostStartOffset); for (CopyPastePreProcessor preProcessor : CopyPastePreProcessor.EP_NAME.getExtensionList()) { newText = preProcessor.preprocessOnPaste(myProject, origPsiFile, myHostEditor, newText, null); } myHostDocument.replaceString(hostStartOffset, myAltFullRange.getEndOffset(), newText); // replace temp strings for guarded blocks for (String tempText : replacementMap.keySet()) { int idx = CharArrayUtil.indexOf(myHostDocument.getCharsSequence(), tempText, hostStartOffset, myAltFullRange.getEndOffset()); myHostDocument.replaceString(idx, idx + tempText.length(), replacementMap.get(tempText)); } // JAVA: fix occasional char literal concatenation fixDocumentQuotes(myHostDocument, hostStartOffset - 1); fixDocumentQuotes(myHostDocument, myAltFullRange.getEndOffset()); // reformat PsiDocumentManager.getInstance(myProject).commitDocument(myHostDocument); try { if (origPsiFile != null && origPsiFile.isPhysical()) { CodeStyleManager.getInstance(myProject).reformatRange( origPsiFile, hostStartOffset, myAltFullRange.getEndOffset(), true); } } catch (IncorrectOperationException e1) { //LOG.error(e); } PsiElement newInjected = InjectedLanguageManager.getInstance(myProject).findInjectedElementAt(origPsiFile, hostStartOffset); DocumentWindow documentWindow = newInjected == null ? null : InjectedLanguageUtil.getDocumentWindow(newInjected); if (documentWindow != null) { myHostEditor.getCaretModel().moveToOffset(documentWindow.injectedToHost(e.getOffset())); myHostEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE); } }