void (Document document, int caretOffset, int rBracesInsertOffset, String generatedRBraces) { document.insertString(rBracesInsertOffset, "\n" + generatedRBraces); // We need to adjust indents of the text that will be moved, hence, need to insert preliminary line feed. // Example: // if (test1()) { // } else {<caret> if (test2()) { // foo(); // } // We insert here '\n}' after 'foo();' and have the following: // if (test1()) { // } else { if (test2()) { // foo(); // } // } // That is formatted incorrectly because line feed between 'else' and 'if' is not inserted yet (whole 'if' block is indent anchor // to 'if' code block('{}')). So, we insert temporary line feed between 'if' and 'else', correct indent and remove that temporary // line feed. document.insertString(caretOffset, "\n"); }