TextRange (final FindResult occurrence, final String replacement, final Editor editor) { Project project = mySearchResults.getProject(); if (!ReadonlyStatusHandler.ensureDocumentWritable(project, editor.getDocument())) return null; FindModel findModel = mySearchResults.getFindModel(); CommandProcessor.getInstance().runUndoTransparentAction(() -> getEditor().getCaretModel().moveToOffset(occurrence.getEndOffset())); TextRange result = FindUtil.doReplace(project, editor.getDocument(), findModel, new FindResultImpl(occurrence.getStartOffset(), occurrence.getEndOffset()), replacement, true, new ArrayList<>()); mySearchResults.updateThreadSafe(findModel, true, result, mySearchResults.getStamp()); return result; }