boolean (InsertionContext context, PsiMethod method) { if (method.getParameterList().isEmpty() || context.getCompletionChar() == Lookup.COMPLETE_STATEMENT_SELECT_CHAR || !ParameterInfoControllerBase.areParameterTemplatesEnabledOnCompletion()) { return false; } Editor editor = context.getEditor(); context.commitDocument(); PsiDocumentManager.getInstance(context.getProject()).doPostponedOperationsAndUnblockDocument(editor.getDocument()); PsiCall call = PsiTreeUtil.findElementOfClassAtOffset(context.getFile(), context.getStartOffset(), PsiCall.class, false); PsiExpressionList argList = call == null ? null : call.getArgumentList(); if (argList == null || !argList.isEmpty()) { return false; } TextRange argRange = argList.getTextRange(); int caretOffset = editor.getCaretModel().getOffset(); if (!argRange.contains(caretOffset)) { return false; } Template template = createArgTemplate(method, caretOffset, argList, argRange); context.getDocument().deleteString(caretOffset, argRange.getEndOffset()); TemplateState templateState = TemplateManager.getInstance(method.getProject()).runTemplate(editor, template); setupNonFilledArgumentRemoving(editor, templateState); editor.putUserData(ARGUMENT_TEMPLATE_ACTIVE, method); Disposer.register(templateState, () -> { if (editor.getUserData(ARGUMENT_TEMPLATE_ACTIVE) == method) { editor.putUserData(ARGUMENT_TEMPLATE_ACTIVE, null); } }); return true; }