[java-typing] Improve support of brace skipping (IDEA-336810)

GitOrigin-RevId: 0ec9bfb13f33a14254d0d7b7dcb0e3874898f52c
This commit is contained in:
Tagir Valeev
2023-11-09 10:26:47 +01:00
committed by intellij-monorepo-bot
parent 126ce73045
commit 749f715eab
4 changed files with 13 additions and 4 deletions

View File

@@ -116,12 +116,10 @@ public abstract class AbstractBasicJavaTypedHandler extends TypedHandlerDelegate
// Normal RBrace handler doesn't work with \{}, because braces in string template are not separate tokens
int offset = editor.getCaretModel().getOffset();
HighlighterIterator iterator = editor.getHighlighter().createIterator(offset-1);
HighlighterIterator iterator = editor.getHighlighter().createIterator(offset);
CharSequence sequence = editor.getDocument().getCharsSequence();
if (!iterator.atEnd() &&
(iterator.getTokenType() == JavaTokenType.STRING_TEMPLATE_BEGIN || iterator.getTokenType() == JavaTokenType.TEXT_BLOCK_TEMPLATE_BEGIN ||
iterator.getTokenType() == JavaTokenType.STRING_TEMPLATE_MID || iterator.getTokenType() == JavaTokenType.TEXT_BLOCK_TEMPLATE_MID) &&
iterator.getEnd() == offset && sequence.subSequence(iterator.getStart(), iterator.getEnd()).toString().equals("\\{")) {
(iterator.getTokenType() == JavaTokenType.STRING_TEMPLATE_END || iterator.getTokenType() == JavaTokenType.TEXT_BLOCK_TEMPLATE_END)) {
if (sequence.length() > offset && sequence.charAt(offset) == '}') {
editor.getCaretModel().moveToOffset(offset + 1);
return Result.STOP;