From 262d26869c2b0d06deaccfedf2b5927a7b1370de Mon Sep 17 00:00:00 2001 From: Gregory Bednov Date: Fri, 10 Jan 2025 19:56:51 +0300 Subject: [PATCH] C/C++ plugin - added file support --- build.gradle.kts | 2 +- .../org/gregorybednov/NewCFileAction.kt | 25 ++++++++++++++++++ .../org/gregorybednov/NewCppFileAction.kt | 26 +++++++++++++++++++ src/main/resources/META-INF/plugin.xml | 12 ++++++++- .../internal/DefaultTemplate.c.ft | 6 +++++ .../internal/DefaultTemplate.cpp.ft | 6 +++++ 6 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/org/gregorybednov/NewCFileAction.kt create mode 100644 src/main/kotlin/org/gregorybednov/NewCppFileAction.kt create mode 100644 src/main/resources/fileTemplates/internal/DefaultTemplate.c.ft create mode 100644 src/main/resources/fileTemplates/internal/DefaultTemplate.cpp.ft diff --git a/build.gradle.kts b/build.gradle.kts index e2d6415..8a7111f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "com.gregorybednov" -version = "1.0.0" +version = "1.0.1" repositories { mavenCentral() diff --git a/src/main/kotlin/org/gregorybednov/NewCFileAction.kt b/src/main/kotlin/org/gregorybednov/NewCFileAction.kt new file mode 100644 index 0000000..2abbe19 --- /dev/null +++ b/src/main/kotlin/org/gregorybednov/NewCFileAction.kt @@ -0,0 +1,25 @@ +package org.gregorybednov + +import com.intellij.ide.actions.CreateFileFromTemplateAction +import com.intellij.ide.actions.CreateFileFromTemplateDialog +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiDirectory +import org.gregorybednov.clsp.CIcon + + +class NewCFileAction : + CreateFileFromTemplateAction("C File", "Creates new C file", CIcon.FILE ) { + override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) { + builder + .setTitle("New C File") + .addKind("My file", CIcon.FILE, "DefaultTemplate.c") + } + + override fun getActionName(directory: PsiDirectory?, newName: String, templateName: String?): String { + return "C File" + } + + override fun getDefaultTemplateProperty(): String { + return "DefaultTemplate.c"; + } +} \ No newline at end of file diff --git a/src/main/kotlin/org/gregorybednov/NewCppFileAction.kt b/src/main/kotlin/org/gregorybednov/NewCppFileAction.kt new file mode 100644 index 0000000..18e8c03 --- /dev/null +++ b/src/main/kotlin/org/gregorybednov/NewCppFileAction.kt @@ -0,0 +1,26 @@ +package org.gregorybednov + +import com.intellij.ide.actions.CreateFileFromTemplateAction +import com.intellij.ide.actions.CreateFileFromTemplateDialog +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiDirectory +import org.gregorybednov.clsp.CIcon +import org.gregorybednov.clsp.CppIcon + + +class NewCppFileAction : + CreateFileFromTemplateAction("C++ File", "Creates new C++ file", CppIcon.FILE ) { + override fun buildDialog(project: Project, directory: PsiDirectory, builder: CreateFileFromTemplateDialog.Builder) { + builder + .setTitle("New C++ File") + .addKind("My file", CIcon.FILE, "DefaultTemplate.cpp") + } + + override fun getActionName(directory: PsiDirectory?, newName: String, templateName: String?): String { + return "C++ File" + } + + override fun getDefaultTemplateProperty(): String { + return "DefaultTemplate.cpp"; + } +} \ No newline at end of file diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 177e38d..d8f0010 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -10,7 +10,18 @@ com.redhat.devtools.lsp4ij org.jetbrains.plugins.textmate + + + + + + + + + + + - diff --git a/src/main/resources/fileTemplates/internal/DefaultTemplate.c.ft b/src/main/resources/fileTemplates/internal/DefaultTemplate.c.ft new file mode 100644 index 0000000..c1a6458 --- /dev/null +++ b/src/main/resources/fileTemplates/internal/DefaultTemplate.c.ft @@ -0,0 +1,6 @@ +\#include + +int main() { + printf("Hello world"); + return 0; +} \ No newline at end of file diff --git a/src/main/resources/fileTemplates/internal/DefaultTemplate.cpp.ft b/src/main/resources/fileTemplates/internal/DefaultTemplate.cpp.ft new file mode 100644 index 0000000..29bdc26 --- /dev/null +++ b/src/main/resources/fileTemplates/internal/DefaultTemplate.cpp.ft @@ -0,0 +1,6 @@ +\#include + +int main() { + std::cout << "Hello world"; + return 0; +} \ No newline at end of file