// remembering old end before document change because of problems // with fragments containing "\n" @Override public void beforeDocumentChange(DocumentEvent e) { if (!myTaskFile.isTrackChanges()) { return; } myTaskFile.setHighlightErrors(true); Document document = e.getDocument(); myAnswerPlaceholders.clear(); for (AnswerPlaceholder answerPlaceholder : myTaskFile.getAnswerPlaceholders()) { int twStart = answerPlaceholder.getRealStartOffset(document); int length = usePossibleAnswerLength ? answerPlaceholder.getPossibleAnswerLength() : answerPlaceholder.getLength(); int twEnd = twStart + length; myAnswerPlaceholders.add(new AnswerPlaceholderWrapper(answerPlaceholder, twStart, twEnd)); } }