void (@NotNull UpdateParameterInfoContext context) { if (!Registry.is("editor.completion.hints.virtual.comma")) return; Project project = context.getProject(); Editor editor = context.getEditor(); if (editor instanceof EditorWindow) return; int inlaysBeforeCaretWithComma = getInlaysBeforeCaretWithComma(editor); if (inlaysBeforeCaretWithComma == 0) return; EditorUtil.performBeforeCommandEnd(() -> { if (project.isDisposed() || editor.isDisposed()) return; // repeat the check, just in case int countAgain = getInlaysBeforeCaretWithComma(editor); if (countAgain == 0) return; Caret caret = editor.getCaretModel().getCurrentCaret(); int caretOffset = caret.getOffset(); String textToInsert = StringUtil.repeat(", ", inlaysBeforeCaretWithComma); WriteAction.run(() -> editor.getDocument().insertString(caretOffset, textToInsert)); caret.moveToOffset(caretOffset + textToInsert.length()); PsiDocumentManager.getInstance(project).commitDocument(editor.getDocument()); PsiElement exprList = context.getParameterOwner(); if (!(exprList instanceof PsiExpressionList) || !exprList.isValid()) return; PsiElement call = exprList.getParent(); if (call == null || !call.isValid()) return; int index = ParameterInfoUtils.getCurrentParameterIndex(exprList.getNode(), editor.getCaretModel().getOffset(), JavaTokenType.COMMA); asyncHighlightHints(editor, (PsiExpressionList)exprList, index, context.getCustomContext()); }); }