void (@NotNull LookupElement element, final @NotNull Lookup lookup, @NotNull Consumer<? super @NotNull LookupElementAction> consumer) { if (element instanceof CustomLiveTemplateLookupElement && ((CustomLiveTemplateLookupElement)element).getCustomLiveTemplate() instanceof ZenCodingTemplate) { PsiFile file = lookup.getPsiFile(); if (file == null) { return; } CustomTemplateCallback callback = new CustomTemplateCallback(lookup.getEditor(), file); final ZenCodingGenerator generator = ZenCodingTemplate.findApplicableDefaultGenerator(callback, false); if (generator != null) { consumer.consume(new LookupElementAction(PlatformIcons.EDIT, XmlBundle.message("edit.emmet.settings")) { @Override public Result performLookupAction() { final Project project = lookup.getProject(); ApplicationManager.getApplication().invokeLater(() -> { if (project.isDisposed()) return; final Configurable generatorSpecificConfigurable = generator.createConfigurable(); Configurable configurable = generatorSpecificConfigurable != null ? generatorSpecificConfigurable : new XmlEmmetConfigurable(); ShowSettingsUtil.getInstance().editConfigurable(project, new EmmetCompositeConfigurable(configurable)); }); return Result.HIDE_LOOKUP; } }); consumer.consume(new LookupElementAction(AllIcons.Actions.Cancel, XmlBundle.message("disable.emmet")) { @Override public Result performLookupAction() { ApplicationManager.getApplication().invokeLater(generator::disableEmmet); return Result.HIDE_LOOKUP; } }); } } }