void (@NotNull AnActionEvent e) { Project project = e.getProject(); VirtualFile file = project == null ? null : e.getData(CommonDataKeys.VIRTUAL_FILE); Document document = file == null ? null : FileDocumentManager.getInstance().getDocument(file); if (document == null) return; String fileText = document.getText(); String extension = Strings.notNullize(file.getExtension()); String nameWithoutExtension = file.getNameWithoutExtension(); PsiFile psiFile = PsiManager.getInstance(project).findFile(file); for (SaveFileAsTemplateHandler handler : SaveFileAsTemplateHandler.EP_NAME.getExtensionList()) { String textFromHandler = handler.getTemplateText(psiFile, fileText, nameWithoutExtension); if (textFromHandler != null) { fileText = textFromHandler; break; } } FileTemplateManager templateManager = FileTemplateManager.getInstance(project); FileTemplate[] templates = templateManager.getAllTemplates(); FileTemplate template = FileTemplateUtil.createTemplate(nameWithoutExtension, extension, fileText, templates); FileTemplateConfigurable configurable = new FileTemplateConfigurable(project); configurable.setProportion(0.6f); configurable.setTemplate(template, FileTemplateManagerImpl.getInstanceImpl(project).getDefaultTemplateDescription()); SaveFileAsTemplateDialog dialog = new SaveFileAsTemplateDialog(project, configurable); if (dialog.showAndGet()) { templateManager.setTemplates(FileTemplateManager.DEFAULT_TEMPLATES_CATEGORY, List.of(ArrayUtil.append(templates, template))); } }