diff --git a/build.gradle b/build.gradle index 9478f03..4312f0f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,7 @@ import com.typelead.gradle.utils.EtaRuntimeUtils +import org.gradle.internal.jvm.Jvm + +import java.util.function.BiConsumer // Depend on local gradle-eta plugin. buildscript { @@ -6,7 +9,7 @@ buildscript { mavenLocal() dependencies { - classpath 'com.typelead:gradle-eta:0.0.1-SNAPSHOT-785fcdb' + classpath 'com.typelead:gradle-eta:0.0.1-SNAPSHOT-fd00812' } } } @@ -15,113 +18,162 @@ plugins { id "org.jetbrains.intellij" version "0.2.17" } -group 'com.typelead' +version = file('version.txt').text.trim() -apply plugin: 'java' -apply plugin: 'eta' -apply plugin: 'org.jetbrains.intellij' +group 'com.typelead' ext { javaVersion = '1.8' } -intellij { - version = '2017.3' - pluginName = 'IntelliJ-Eta' - // Makes it easy to support multiple intellij versions. - // If we want to set this to true, we should find a way to cross build - // against multiple intellij versions. - updateSinceUntilBuild = false - instrumentCode = false +task runJFlex(type: Exec) { + commandLine './tools/run-jflex' } -eta { - useSystemEtlas = true +task cleanJFlex(type: Exec) { + commandLine './tools/run-jflex', 'clean' } -sourceCompatibility = 1.8 +allprojects { -repositories { - mavenCentral() -} + apply plugin: 'java' + apply plugin: 'org.jetbrains.intellij' -dependencies { - testCompile fileTree(dir: 'build/etlas/dist/build', include: 'HSintellij-eta-*.jar') -} + repositories { + mavenCentral() + } + + configurations { + provided + compile.extendsFrom provided + } + + intellij { + version = '2017.3' + pluginName = 'IntelliJ-Eta' + // Makes it easy to support multiple intellij versions. + // If we want to set this to true, we should find a way to cross build + // against multiple intellij versions. + updateSinceUntilBuild = false + } -task hpack(type: Exec) { - commandLine 'hpack' + sourceCompatibility = 1.8 } -sandboxAddSourcesEta { - sources = ['eta-parser'] - inputs.property('etlas_add_source', sources) - outputs.files('.cabal-sandbox/add-source-timestamps') +task cleanEtaParserSources(type: Exec) { + workingDir file('eta-parser') + commandLine = ['make', 'clean'] } +clean.dependsOn(cleanEtaParserSources) + task makeEtaParserSources(type: Exec) { workingDir file('eta-parser') - commandLine = ['make', 'sources'] + commandLine = ['make', 'hpack', 'sources'] ['eta', 'java', 'patches', 'tools'].each { inputs.dir(it) } ['eta-parser.cabal', 'Makefile'].each { inputs.file(it) } } -installDepsEta.dependsOn(hpack, makeEtaParserSources) +project(':plugin') { -[installDepsEta,installTestDepsEta].forEach { - it.inputs.files('package.yaml') - it.outputs.dir('.cabal-sandbox/lib') -} + apply plugin: 'eta' -task runJFlex(type: Exec) { - commandLine './tools/run-jflex' -} + eta { + useSystemEtlas = true + } -task cleanJFlex(type: Exec) { - commandLine './tools/run-jflex', 'clean' -} + task hpack(type: Exec) { + commandLine 'hpack' + } -compileJava.dependsOn(runJFlex) + cleanEta.dependsOn(hpack) -clean.dependsOn(cleanJFlex) + sandboxAddSourcesEta { + sources = ['../eta-parser'] + inputs.property('etlas_add_source', sources) + outputs.files('.cabal-sandbox/add-source-timestamps') + } -compileEta { - inputs.dir('src/main/eta') - outputs.files('build/etlas/dist/build/HSintellij-eta*.jar') -} + installDepsEta.dependsOn(hpack, makeEtaParserSources) -compileTestJava.dependsOn(compileEta) + [installDepsEta, installTestDepsEta].forEach { + it.inputs.files('package.yaml') + it.outputs.dir('.cabal-sandbox/lib') + } -testCompileEta { - inputs.files('src/test/eta') - outputs.files('build/etlas/dist/build/test/test.jar') -} + dependencies { + compile project(':jps-shared') + compile project(':jps-plugin') + testCompile fileTree(dir: "${project.buildDir}/etlas/dist/build", include: 'HSintellij-eta-*.jar') + } -testCompileEta.dependsOn(compileTestJava) + compileJava.dependsOn(runJFlex) -prepareSandbox { - doLast { - copyEtaRuntimeToPluginSandbox(false) + clean.dependsOn(cleanJFlex) + + compileTestJava.dependsOn(compileEta) + + testCompileEta { + inputs.files('src/test/eta') + outputs.files("${project.buildDir}/etlas/dist/build/test/test.jar") } -} -prepareSandbox.dependsOn(compileEta) + testCompileEta.dependsOn(compileTestJava) -prepareTestingSandbox { - doLast { - copyEtaRuntimeToPluginSandbox(true) + prepareSandbox { + doLast { + copyEtaRuntimeToPluginSandbox(project, false) + } + } + + prepareSandbox.dependsOn(compileEta) + + prepareTestingSandbox { + doLast { + copyEtaRuntimeToPluginSandbox(project, true) + } + } + + prepareTestingSandbox.dependsOn(testCompileEta) + + // Hack to trick junit into thinking we have java tests. + testClasses { + dependsOn testCompileEta + doLast { + copy { + from zipTree("${project.buildDir}/etlas/dist/build/test/test.jar") + into "${project.buildDir}/classes/test" + } + } + } + + testClasses.dependsOn(testCompileEta) + + task configureTest { + dependsOn testCompileEta + doLast { + test.classpath += files(getEtaRuntimeClasspath(project)) + } + } + + test { + dependsOn configureTest } } -prepareTestingSandbox.dependsOn(testCompileEta) +project(':jps-plugin') { + dependencies { + compile project(':jps-shared') + } +} -def getSandboxLibDir(Boolean test) { +static def getSandboxLibDir(Project project, Boolean test) { def pluginsDir = test ? "plugins-test" : "plugins" - "${intellij.sandboxDirectory}/$pluginsDir/${intellij.pluginName}/lib/" + "${project.intellij.sandboxDirectory}/$pluginsDir/${project.intellij.pluginName}/lib/" } -Set getEtaRuntimeClasspath() { - if (eta.etlasBinary == null) { +static Set getEtaRuntimeClasspath(Project project) { + if (project.eta.etlasBinary == null) { throw new GradleException( "Cannot getEtaRuntimeClasspath, eta.etlasBinary is null; " + "consider running in a doLast { .. } block instead." @@ -131,17 +183,17 @@ Set getEtaRuntimeClasspath() { // Attempt at caching the runtime, later we can build this into gradle-eta (using ~/.gradle/caches) def useCache = true if (useCache) { - File cachedRuntimeFile = new File("build/etlas/runtime/$component") + File cachedRuntimeFile = new File(project.buildDir, "etlas/runtime/$component") if (!cachedRuntimeFile.exists() - || cachedRuntimeFile.lastModified() < new File('package.yaml').lastModified()) { + || cachedRuntimeFile.lastModified() < new File(project.projectDir, 'package.yaml').lastModified()) { if (cachedRuntimeFile.exists()) { cachedRuntimeFile.write('') } else { cachedRuntimeFile.getParentFile().mkdirs() } - logger.info("Requesting eta runtime classpath...") - def res = EtaRuntimeUtils.getRuntimeClasspath(project, eta, component) - logger.info("Using eta runtime classpath: $res") + project.logger.info("Requesting eta runtime classpath...") + def res = EtaRuntimeUtils.getRuntimeClasspath(project, project.eta, component) + project.logger.info("Using eta runtime classpath: $res") res.each { cachedRuntimeFile.append(it.path + '\n') } res } else { @@ -150,19 +202,19 @@ Set getEtaRuntimeClasspath() { cachedRuntimeFile.eachLine { if (!it.isEmpty()) res.add(new File(it)) } - logger.info("Using cached eta runtime classpath: $res") + project.logger.info("Using cached eta runtime classpath: $res") res } } else { - def res = EtaRuntimeUtils.getRuntimeClasspath(project, eta, component) - logger.info("Using eta runtime classpath: $res") + def res = EtaRuntimeUtils.getRuntimeClasspath(project, project.eta, component) + project.logger.info("Using eta runtime classpath: $res") res } } -def copyEtaRuntimeToPluginSandbox(Boolean test) { - def dest = getSandboxLibDir(test) - getEtaRuntimeClasspath().forEach { dep -> +def copyEtaRuntimeToPluginSandbox(Project project, Boolean test) { + def dest = getSandboxLibDir(project, test) + getEtaRuntimeClasspath(project).forEach { dep -> project.copy { from dep.canonicalPath into dest @@ -170,26 +222,43 @@ def copyEtaRuntimeToPluginSandbox(Boolean test) { } } -// Hack to trick junit into thinking we have java tests. -testClasses { - dependsOn testCompileEta +task ffigenConfigure { doLast { - copy { - from zipTree("build/etlas/dist/build/test/test.jar") - into "build/classes/test" - } + // Forward property arguments + System.properties.forEach(new BiConsumer() { + void accept(String k, String v) { + ffigen.jvmArgs += "-D$k=$v" + } + }) + + ffigen.classpath += getIdeaRuntimeClasspath() + ffigen.classpath += project(':ffigen').sourceSets.main.runtimeClasspath + ffigen.classpath += project(':plugin').sourceSets.main.runtimeClasspath } } -testClasses.dependsOn(testCompileEta) - -task configureTest { - dependsOn testCompileEta - doLast { - test.classpath += files(getEtaRuntimeClasspath()) - } +task ffigen(type: JavaExec) { + main = 'com.typelead.intellij.utils.FFIGen' } -test { - dependsOn configureTest +ffigen.dependsOn(':ffigen:compileJava', ffigenConfigure) + +// Adapted from org.jetbrains.intellij.tasks.RunIdeaTask#configureClasspath +FileCollection getIdeaRuntimeClasspath() { + FileCollection cp = project.files() + File ideaDirectory = runIde.ideaDirectory + def toolsJar = Jvm.current().toolsJar + if (toolsJar != null) cp += project.files(toolsJar) + cp += project.files( + "$ideaDirectory/lib/idea_rt.jar", + "$ideaDirectory/lib/idea.jar", + "$ideaDirectory/lib/bootstrap.jar", + "$ideaDirectory/lib/extensions.jar", + "$ideaDirectory/lib/util.jar", + "$ideaDirectory/lib/openapi.jar", + "$ideaDirectory/lib/trove4j.jar", + "$ideaDirectory/lib/jdom.jar", + "$ideaDirectory/lib/log4j.jar" + ) + cp } diff --git a/eta-parser b/eta-parser index 502871a..42d10a4 160000 --- a/eta-parser +++ b/eta-parser @@ -1 +1 @@ -Subproject commit 502871aa2eb82ebe65c8e1834aa7fc2412eac235 +Subproject commit 42d10a47b44aa32dea568f41964a968c09129233 diff --git a/ffigen/src/main/java/com/typelead/intellij/utils/FFIGen.java b/ffigen/src/main/java/com/typelead/intellij/utils/FFIGen.java new file mode 100644 index 0000000..09dca76 --- /dev/null +++ b/ffigen/src/main/java/com/typelead/intellij/utils/FFIGen.java @@ -0,0 +1,341 @@ +package com.typelead.intellij.utils; + +import java.io.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.*; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * Utility for generating FFI definitions. Uses JVM properties for arguments. + * + * Required arguments - + * -Dclass=qualified.path.to.SomeClass Fully-qualified path to Java class + * + * Optional arguments - + * -Dtarget=SomeType Target Eta type name + * -Dmethod=someMethod1,someMethod2 One or more method names to export, separated by commas + * If omitted, exports all method names + * -Dwrite Writes the output to the appropriate file in src/main/eta/FFI + * -Doverwrite Same as -Dwrite except writes regardless of existence. + */ +public class FFIGen { + + private static Map typeMapping = + new TypeMappingBuilder() + .put("java.lang.String", "JString", "Java") + .put("boolean", "Bool", "Prelude") + .put("boolean[]", "JBooleanArray", "Java") + .put("java.lang.Boolean", "JBoolean", "Java") + .put("byte", "Byte", "Java") + .put("byte[]", "JByteArray", "Java") + .put("java.lang.Byte", "JByte", "Java") + .put("short", "Short", "Java") + .put("short[]", "JShortArray", "Java") + .put("java.lang.Short", "JShort", "Java") + .put("char", "JChar", "Java") + .put("char[]", "JCharArray", "Java") + .put("java.lang.Char", "JCharacter", "Java") + .put("int", "Int", "Prelude") + .put("int[]", "JIntArray", "Java") + .put("java.lang.Integer", "JInteger", "Java") + .put("long", "Int64", "Data.Int") + .put("long[]", "JLongArray", "Java") + .put("java.lang.Long", "JLong", "Java") + .put("float", "Float", "Prelude") + .put("float[]", "JFloatArray", "Java") + .put("java.lang.Float", "JFloat", "Java") + .put("double", "Double", "Prelude") + .put("double[]", "JDoubleArray", "Java") + .put("java.lang.Double", "JDouble", "Java") + .put("void", "()") + .build(); + + private static Map packageMapping = + new MapBuilder() + .put("intellij", "IntelliJ") + .put("extapi", "ExtApi") + .put("openapi", "OpenApi") + .put("ui", "UI") + .put("io", "IO") + .put("typelead", "TypeLead") + .build(); + + private static Set ignoredMethods = new HashSet<>(Arrays.asList( + "equals", + "toString", + "hashCode", + "wait", + "getClass", + "notify", + "notifyAll" + )); + + ///////////////////////////////////////////////////////////////// + + public static void main(String[] args) { + String clsName = System.getProperty("class"); + if (clsName == null) { + throw new RuntimeException("Missing -Dclass=... argument"); + } + Class cls; + try { + cls = Class.forName(clsName); + } catch (Throwable e) { + throw new IllegalArgumentException("Class not found: " + clsName); + } + + final String etaDataName = System.getProperty("target", cls.getSimpleName()); + + final Result result = new Result(cls, clsName, etaDataName); + + Function lookupEtaTypeAndAddImports = t -> { + TypeEntry typeEntry = typeMapping.get(t.getName()); + if (typeEntry == null) { + return t.getSimpleName(); + } else { + result.imports.addAll(typeEntry.imports); + return typeEntry.etaType; + } + }; + + + Function> getArgTypes = paramTypes -> + Arrays.stream(paramTypes).map(lookupEtaTypeAndAddImports).collect(Collectors.toList()); + + Map methodCounts = new HashMap<>(); + for (Method m : cls.getMethods()) { + methodCounts.merge(m.getName(), 1, (a, b) -> a + b); + } + Map counter = new HashMap<>(); + + Set onlyMethods = null; + if (System.getProperty("method") != null) { + onlyMethods = + Arrays.stream(System.getProperty("method").split(",")) + .collect(Collectors.toSet()); + } + + BiConsumer addCtor = (name, c) -> + result.ctors.add(new FFICtor(name, getArgTypes.apply(c.getParameterTypes()), etaDataName)); + // If we have more than 1 constructor, append an index to each exported name. + if (cls.getConstructors().length == 1) { + addCtor.accept("new" + etaDataName, cls.getConstructors()[0]); + } else { + for (int i = 0; i < cls.getConstructors().length; i++) { + addCtor.accept("new" + etaDataName + i, cls.getConstructors()[i]); + } + } + + for (Method m : cls.getMethods()) { + // Filter out methods we want to ignore. + if (ignoredMethods.contains(m.getName())) continue; + // If the user specified -Dmethod, only show those methods. + if (onlyMethods != null && !onlyMethods.contains(m.getName())) continue; + final String name; + if (methodCounts.get(m.getName()) > 1) { + name = m.getName() + counter.merge(m.getName(), 1, (a, b) -> a + b); + } else { + name = m.getName(); + } + + result.methods.add( + new FFIMethod( + m, + name, + getArgTypes.apply(m.getParameterTypes()), + lookupEtaTypeAndAddImports.apply(m.getReturnType()), + result.cls, + etaDataName + ) + ); + } + + PrintWriter pw; + + // If -D(over)write is specified, write to the appropriate file; otherwise, write to stdout. + if (System.getProperty("write") != null || System.getProperty("overwrite") != null) { + File file = new File( + "plugin/src/main/eta/FFI" + "/" + String.join("/", result.getModulePath()) + + "/" + result.etaDataName + ".hs" + ); + if (System.getProperty("overwrite") == null && file.exists()) { + throw new IllegalArgumentException("File already exists: " + file.getPath()); + } + try { + //noinspection ResultOfMethodCallIgnored + file.getParentFile().mkdirs(); + pw = new PrintWriter(new FileWriter(file)); + } catch (IOException e) { + throw new RuntimeException(e); + } + System.out.println("Writing to file: " + file.getPath()); + } else { + pw = new PrintWriter(System.out); + } + + pw.println(result.render()); + + pw.close(); + } + + private interface Renderable { + String render(); + } + + private static class FFICtor implements Renderable { + final String name; + final List argTypes; + final String retType; + + FFICtor(String name, List argTypes, String retType) { + this.name = name; + this.argTypes = argTypes; + this.retType = retType; + } + + @Override + public String render() { + StringBuilder sb = new StringBuilder(); + // foreign import java unsafe "@new" newTextFieldWithBrowseButton :: Java a TextFieldWithBrowseButton + sb.append("foreign import java unsafe \"@new\" ").append(name).append("\n :: "); + argTypes.forEach(t -> sb.append(t).append(" -> ")); + sb.append("Java a ").append(retType); + return sb.toString(); + } + } + + private static class FFIMethod implements Renderable { + final Method method; + final String etaName; + final List argTypes; + final String retType; + final Class cls; + final String etaDataName; + + FFIMethod( + Method method, String etaName, List argTypes, String retType, + Class cls, String etaDataName + ) { + this.method = method; + this.etaName = etaName; + this.argTypes = argTypes; + this.retType = retType; + this.cls = cls; + this.etaDataName = etaDataName; + } + + @Override + @SuppressWarnings("StringConcatenationInsideStringBufferAppend") + public String render() { + List ffiStrParts = getFFIStringLitParts(); + StringBuilder sb = new StringBuilder(); + sb.append("foreign import java unsafe "); + if (!ffiStrParts.isEmpty()) { + sb.append('"').append(String.join(" ", ffiStrParts)).append('"').append(' '); + } + sb.append(etaName); + sb.append("\n :: "); + argTypes.forEach(t -> sb.append(t).append(" -> ")); + sb.append("Java " + etaDataName + " " + retType); + return sb.toString(); + } + + private List getFFIStringLitParts() { + if (Modifier.isStatic(method.getModifiers())) { + return Collections.singletonList("@static " + cls.getName() + "." + method.getName()); + } + List res = new ArrayList<>(); + if (cls.isInterface()) res.add("@interface"); + if (!method.getName().equals(etaName)) res.add(method.getName()); + return res; + } + } + + private static class Result implements Renderable { + final Class cls; + final String clsName; + final String etaDataName; + final Set imports = new HashSet<>(); + final List ctors = new ArrayList<>(); + final List methods = new ArrayList<>(); + + Result(Class cls, String clsName, String etaDataName) { + this.cls = cls; + this.clsName = clsName; + this.etaDataName = etaDataName; + } + + List getModulePath() { + return + Arrays.stream(cls.getPackage().getName().split("\\.")) + .map(FFIGen::translatePackageName) + .collect(Collectors.toList()); + } + + @Override + @SuppressWarnings("StringConcatenationInsideStringBufferAppend") + public String render() { + StringBuilder sb = new StringBuilder(); + String moduleName = getModulePath().stream().reduce("FFI", (acc, s) -> acc + '.' + s); + sb.append("module " + moduleName + "." + etaDataName + " where\n\n"); + imports.forEach(i -> sb.append("import " + i + "\n")); + sb.append("\n"); + sb.append( + "data " + etaDataName + " = " + etaDataName + "\n" + + " @" + clsName + "\n" + + " deriving Class\n\n" + ); + Stream funcExports = Stream.concat(ctors.stream(), methods.stream()); + sb.append(String.join("\n\n", funcExports.map(Renderable::render).collect(Collectors.toList()))); + return sb.toString(); + } + } + + /** Translate package name `s` using packageMapping; if it doesn't exist, just capitalize `s` */ + private static String translatePackageName(String s) { + String res = packageMapping.get(s); + if (res == null) res = Character.toUpperCase(s.charAt(0)) + s.substring(1); + return res; + } + + @SafeVarargs + private static Set mkSet(A... values) { + return new HashSet<>(Arrays.asList(values)); + } + + private static class TypeEntry { + final String etaType; + final Set imports; + + TypeEntry(String etaType, String... imports) { + this.etaType = etaType; + this.imports = mkSet(imports); + } + } + + private static class MapBuilder { + + private Map map = new HashMap<>(); + + public MapBuilder put(K k, V v) { + map.put(k, v); + return this; + } + + public Map build() { + return Collections.unmodifiableMap(map); + } + } + + private static class TypeMappingBuilder extends MapBuilder { + public TypeMappingBuilder put(String javaType, String etaType, String... imports) { + return (TypeMappingBuilder)super.put(javaType, new TypeEntry(etaType, imports)); + } + } + +} diff --git a/jps-shared/src/main/java/com/typelead/intellij/eta/jps/model/JpsEtaBuildOptionsConstants.java b/jps-shared/src/main/java/com/typelead/intellij/eta/jps/model/JpsEtaBuildOptionsConstants.java new file mode 100644 index 0000000..03474f3 --- /dev/null +++ b/jps-shared/src/main/java/com/typelead/intellij/eta/jps/model/JpsEtaBuildOptionsConstants.java @@ -0,0 +1,6 @@ +package com.typelead.intellij.eta.jps.model; + +public abstract class JpsEtaBuildOptionsConstants { + public static final String ETA_BUILD_OPTIONS_COMPONENT = "EtaBuildOptions"; + public static final String ETA_BUILD_OPTIONS_FILE = "eta-compiler.xml"; +} diff --git a/jps-shared/src/main/java/com/typelead/intellij/plugin/eta/jps/model/EtaBuildOptions.java b/jps-shared/src/main/java/com/typelead/intellij/plugin/eta/jps/model/EtaBuildOptions.java new file mode 100644 index 0000000..e8ac54b --- /dev/null +++ b/jps-shared/src/main/java/com/typelead/intellij/plugin/eta/jps/model/EtaBuildOptions.java @@ -0,0 +1,30 @@ +package com.typelead.intellij.plugin.eta.jps.model; + +import com.intellij.util.xmlb.annotations.Tag; + +/** Build options for Eta projects. */ +public class EtaBuildOptions { + + @Tag("etaPath") public String etaPath = ""; + @Tag("etlasPath") public String etlasPath = ""; + + public EtaBuildOptions() { + } + + public EtaBuildOptions(EtaBuildOptions options) { + etaPath = options.etaPath; + etlasPath = options.etlasPath; + } + + public EtaBuildOptions copy() { + return new EtaBuildOptions(this); + } + + @Override + public String toString() { + return "EtaBuildOptions{" + + "etaPath=" + etaPath + + ", etlasPath=" + etlasPath + + "}"; + } +} diff --git a/package.yaml b/plugin/package.yaml similarity index 100% rename from package.yaml rename to plugin/package.yaml diff --git a/src/main/eta/FFI/Com/IntelliJ/ExtApi/Psi/ASTWrapperPsiElement.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/ExtApi/Psi/ASTWrapperPsiElement.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/ExtApi/Psi/ASTWrapperPsiElement.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/ExtApi/Psi/ASTWrapperPsiElement.hs diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Framework/FrameworkTypeEx.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Framework/FrameworkTypeEx.hs new file mode 100644 index 0000000..caa3282 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Framework/FrameworkTypeEx.hs @@ -0,0 +1,12 @@ +module FFI.Com.IntelliJ.Framework.FrameworkTypeEx where + +import P + +import FFI.Com.IntelliJ.OpenApi.Extensions.ExtensionPointName + +data FrameworkTypeEx = FrameworkTypeEx @com.intellij.framework.FrameworkTypeEx + deriving Class + +foreign import java unsafe + "@static @field com.intellij.framework.FrameworkTypeEx.EP_NAME" + frameworkTypeExEPName :: ExtensionPointName FrameworkTypeEx diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/AbstractModuleBuilder.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/AbstractModuleBuilder.hs new file mode 100644 index 0000000..c3a1f6d --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/AbstractModuleBuilder.hs @@ -0,0 +1,7 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.AbstractModuleBuilder where + +import P.Base + +data AbstractModuleBuilder = AbstractModuleBuilder + @com.intellij.ide.util.projectWizard.AbstractModuleBuilder + deriving Class diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/EmptyModuleBuilder.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/EmptyModuleBuilder.hs new file mode 100644 index 0000000..687dce4 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/EmptyModuleBuilder.hs @@ -0,0 +1,11 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.EmptyModuleBuilder where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder (ModuleBuilder) + +data EmptyModuleBuilder = EmptyModuleBuilder + @com.intellij.ide.util.projectWizard.EmptyModuleBuilder + deriving Class + +type instance Inherits EmptyModuleBuilder = '[ModuleBuilder] diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/JavaModuleBuilder.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/JavaModuleBuilder.hs new file mode 100644 index 0000000..9262b36 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/JavaModuleBuilder.hs @@ -0,0 +1,15 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.JavaModuleBuilder where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder (ModuleBuilder) +import FFI.Com.IntelliJ.OpenApi.Roots.ModifiableRootModel (ModifiableRootModel) + +data JavaModuleBuilder = JavaModuleBuilder + @com.intellij.ide.util.projectWizard.JavaModuleBuilder + deriving Class + +type instance Inherits JavaModuleBuilder = '[ModuleBuilder] + +foreign import java unsafe setupRootModel + :: ModifiableRootModel -> Java JavaModuleBuilder () diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleBuilder.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleBuilder.hs new file mode 100644 index 0000000..96e107d --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleBuilder.hs @@ -0,0 +1,33 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder where + +import Prelude +import Java +import FFI.Com.IntelliJ.OpenApi.Module.Module +import FFI.Com.IntelliJ.OpenApi.Roots.ModifiableRootModel +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.AbstractModuleBuilder (AbstractModuleBuilder) + +data ModuleBuilder = ModuleBuilder + @com.intellij.ide.util.projectWizard.ModuleBuilder + deriving Class + +type instance Inherits ModuleBuilder = '[AbstractModuleBuilder] + +foreign import java unsafe "addModuleConfigurationUpdater" + addModuleConfigurationUpdaterJava + :: (a <: ModuleBuilder) + => ModuleConfigurationUpdater -> Java a () + +addModuleConfigurationUpdater + :: (a <: ModuleBuilder) + => (Module -> ModifiableRootModel -> Java x ()) + -> Java a () +addModuleConfigurationUpdater f = + addModuleConfigurationUpdaterJava $ newModuleConfigurationUpdater f + +data ModuleConfigurationUpdater = ModuleConfigurationUpdater + @com.intellij.ide.util.projectWizard.ModuleBuilder$ModuleConfigurationUpdater + deriving Class + +foreign import java unsafe "@wrapper @abstract update" newModuleConfigurationUpdater + :: (Module -> ModifiableRootModel -> Java a ()) + -> ModuleConfigurationUpdater diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleWizardStep.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleWizardStep.hs new file mode 100644 index 0000000..f038091 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/ModuleWizardStep.hs @@ -0,0 +1,18 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleWizardStep where + +import P + +data ModuleWizardStep = ModuleWizardStep + @com.intellij.ide.util.projectWizard.ModuleWizardStep + deriving Class + +type instance Inherits ModuleWizardStep = '[Object] + +data ModuleWizardStepArray = ModuleWizardStepArray + @com.intellij.ide.util.projectWizard.ModuleWizardStep[] + deriving Class + +instance JArray ModuleWizardStep ModuleWizardStepArray + +foreign import java unsafe updateDataModel + :: (a <: ModuleWizardStep) => Java a () diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/SettingsStep.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/SettingsStep.hs new file mode 100644 index 0000000..fbaf312 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/SettingsStep.hs @@ -0,0 +1,12 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.SettingsStep where + +import P +import FFI.Javax.Swing.JComponent + +data SettingsStep = SettingsStep + @com.intellij.ide.util.projectWizard.SettingsStep + deriving Class + +foreign import java unsafe "@interface" addSettingsField + :: (s <: SettingsStep, c <: JComponent) + => JString -> c -> Java s () diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/WizardContext.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/WizardContext.hs new file mode 100644 index 0000000..ad93666 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Ide/Util/ProjectWizard/WizardContext.hs @@ -0,0 +1,12 @@ +module FFI.Com.IntelliJ.Ide.Util.ProjectWizard.WizardContext where + +import P + +data WizardContext = WizardContext + @com.intellij.ide.util.projectWizard.WizardContext + deriving Class + +type instance Inherits WizardContext = '[Object] + +foreign import java unsafe isCreatingNewProject + :: Java WizardContext Bool diff --git a/src/main/eta/FFI/Com/IntelliJ/Lang/ASTNode.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ASTNode.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lang/ASTNode.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ASTNode.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Lang/Language.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lang/Language.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lang/Language.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lang/Language.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition/SpaceRequirements.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition/SpaceRequirements.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition/SpaceRequirements.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lang/ParserDefinition/SpaceRequirements.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Lang/PsiParser.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lang/PsiParser.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lang/PsiParser.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lang/PsiParser.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Lexer/Lexer.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Lexer/Lexer.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Lexer/Lexer.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Lexer/Lexer.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/Colors/TextAttributesKey.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/Colors/TextAttributesKey.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/Colors/TextAttributesKey.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/Colors/TextAttributesKey.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/DefaultLanguageHighlighterColors.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/DefaultLanguageHighlighterColors.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/DefaultLanguageHighlighterColors.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Editor/DefaultLanguageHighlighterColors.hs diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Extensions/ExtensionPointName.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Extensions/ExtensionPointName.hs new file mode 100644 index 0000000..433142f --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Extensions/ExtensionPointName.hs @@ -0,0 +1,10 @@ +module FFI.Com.IntelliJ.OpenApi.Extensions.ExtensionPointName where + +import P + +data ExtensionPointName a = ExtensionPointName + (@com.intellij.openapi.extensions.ExtensionPointName a) + deriving Class + +foreign import java unsafe findExtension + :: (t <: Object, v <: t) => JClass v -> Java (ExtensionPointName t) v diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/JavaModuleType.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/JavaModuleType.hs new file mode 100644 index 0000000..d4b16e2 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/JavaModuleType.hs @@ -0,0 +1,17 @@ +module FFI.Com.IntelliJ.OpenApi.Module.JavaModuleType where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder (ModuleBuilder) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.JavaModuleBuilder (JavaModuleBuilder) +import FFI.Com.IntelliJ.OpenApi.Module.ModuleType (ModuleType) + +data JavaModuleType = JavaModuleType + @com.intellij.openapi.module.JavaModuleType + deriving Class + +type instance Inherits JavaModuleType = '[ModuleType JavaModuleBuilder] + +foreign import java unsafe + "@static com.intellij.openapi.module.JavaModuleType.getModuleType" + getJavaModuleType :: Java a (ModuleType ModuleBuilder) diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/Module.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/Module.hs new file mode 100644 index 0000000..865124b --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/Module.hs @@ -0,0 +1,15 @@ +module FFI.Com.IntelliJ.OpenApi.Module.Module where + +import Java +import P.Methods.GetProject + +data Module = Module + @com.intellij.openapi.module.Module + deriving Class + + +foreign import java unsafe "@interface getProject" getProjectImpl + :: Java Module Project + +instance GetProject Module where + getProject = getProjectImpl diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/ModuleType.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/ModuleType.hs new file mode 100644 index 0000000..d00c382 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Module/ModuleType.hs @@ -0,0 +1,16 @@ +module FFI.Com.IntelliJ.OpenApi.Module.ModuleType where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleWizardStep +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.SettingsStep + +data ModuleType a = ModuleType + (@com.intellij.openapi.module.ModuleType a) + deriving Class + +foreign import java unsafe modifyProjectTypeStep + :: SettingsStep + -> ModuleBuilder + -> Java (ModuleType ModuleBuilder) ModuleWizardStep diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Project.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighter.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighter.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighter.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighter.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterBase.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterBase.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterBase.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterBase.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterFactory.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterFactory.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterFactory.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/FileTypes/SyntaxHighlighterFactory.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs similarity index 93% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs index 3233ce4..763b7ff 100644 --- a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Project/Project.hs @@ -1,6 +1,6 @@ module FFI.Com.IntelliJ.OpenApi.Project.Project where -import P +import Java data {-# CLASS "com.intellij.openapi.project.Project" #-} Project = Project (Object# Project) diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ContentEntry.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ContentEntry.hs new file mode 100644 index 0000000..8f0000f --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ContentEntry.hs @@ -0,0 +1,31 @@ +module FFI.Com.IntelliJ.OpenApi.Roots.ContentEntry where + +import P + +import FFI.Com.IntelliJ.OpenApi.Vfs.VirtualFile +import FFI.Com.IntelliJ.OpenApi.Roots.ExcludeFolder + +data ContentEntry = ContentEntry + @com.intellij.openapi.roots.ContentEntry + deriving Class + +type instance Inherits ContentEntry = '[Object] + +data ContentEntryArray = ContentEntryArray + @com.intellij.openapi.roots.ContentEntry[] + deriving Class + +instance JArray ContentEntry ContentEntryArray + +foreign import java unsafe "@interface" getUrl + :: Java ContentEntry JString + +foreign import java unsafe "@interface" getFile + :: Java ContentEntry VirtualFile + +foreign import java unsafe "@interface addExcludeFolder" addExcludeFolderStr + :: JString -> Java ContentEntry ExcludeFolder + +foreign import java unsafe "@interface addExcludeFolder" addExcludeFolderVFile + :: VirtualFile -> Java ContentEntry ExcludeFolder + diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ExcludeFolder.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ExcludeFolder.hs new file mode 100644 index 0000000..37b28ce --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ExcludeFolder.hs @@ -0,0 +1,7 @@ +module FFI.Com.IntelliJ.OpenApi.Roots.ExcludeFolder where + +import P + +data ExcludeFolder = ExcludeFolder + @com.intellij.openapi.roots.ExcludeFolder + deriving Class diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ModifiableRootModel.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ModifiableRootModel.hs new file mode 100644 index 0000000..fb6957b --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/ModifiableRootModel.hs @@ -0,0 +1,21 @@ +module FFI.Com.IntelliJ.OpenApi.Roots.ModifiableRootModel where + +import Java +import P.Methods.GetProject +import FFI.Com.IntelliJ.OpenApi.Project.Project +import FFI.Com.IntelliJ.OpenApi.Roots.ContentEntry (ContentEntryArray) + +data ModifiableRootModel = ModifiableRootModel + @com.intellij.openapi.roots.ModifiableRootModel + deriving Class + +type instance Inherits ModifiableRootModel = '[Object] + +foreign import java unsafe "@interface" getContentEntries + :: Java ModifiableRootModel ContentEntryArray + +foreign import java unsafe "@interface getProject" getProjectImpl + :: Java ModifiableRootModel Project + +instance GetProject ModifiableRootModel where + getProject = getProjectImpl diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/UI/Configuration/ModulesProvider.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/UI/Configuration/ModulesProvider.hs new file mode 100644 index 0000000..706b26c --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Roots/UI/Configuration/ModulesProvider.hs @@ -0,0 +1,9 @@ +module FFI.Com.IntelliJ.OpenApi.Roots.UI.Configuration.ModulesProvider where + +import P + +data ModulesProvider = ModulesProvider + @com.intellij.openapi.roots.ui.configuration.ModulesProvider + deriving Class + +type instance Inherits ModulesProvider = '[Object] diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/TextFieldWithBrowseButton.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/TextFieldWithBrowseButton.hs new file mode 100644 index 0000000..e10079c --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/TextFieldWithBrowseButton.hs @@ -0,0 +1,14 @@ +module FFI.Com.IntelliJ.OpenApi.UI.TextFieldWithBrowseButton where + +import Java +import FFI.Com.IntelliJ.UI.TextAccessor +import FFI.Javax.Swing.JComponent + +data TextFieldWithBrowseButton = TextFieldWithBrowseButton + @com.intellij.openapi.ui.TextFieldWithBrowseButton + deriving Class + +type instance Inherits TextFieldWithBrowseButton = '[JComponent, TextAccessor] + +foreign import java unsafe "@new" newTextFieldWithBrowseButton + :: Java a TextFieldWithBrowseButton diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/ValidationInfo.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/ValidationInfo.hs new file mode 100644 index 0000000..592c3ee --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/UI/ValidationInfo.hs @@ -0,0 +1,7 @@ +module FFI.Com.IntelliJ.OpenApi.UI.ValidationInfo where + +import Java + +data ValidationInfo = ValidationInfo + @com.intellij.openapi.ui.ValidationInfo + deriving Class diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/IO/FileUtil.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/IO/FileUtil.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/IO/FileUtil.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/IO/FileUtil.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/Text/StringUtil.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/Text/StringUtil.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/Text/StringUtil.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Util/Text/StringUtil.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/OpenApi/Vfs/VirtualFile.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Vfs/VirtualFile.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/OpenApi/Vfs/VirtualFile.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/OpenApi/Vfs/VirtualFile.hs diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplate.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplate.hs new file mode 100644 index 0000000..24c6527 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplate.hs @@ -0,0 +1,31 @@ +module FFI.Com.IntelliJ.Platform.ProjectTemplate where + +import P.Base +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.AbstractModuleBuilder (AbstractModuleBuilder) +import FFI.Com.IntelliJ.OpenApi.UI.ValidationInfo (ValidationInfo) +import FFI.Javax.Swing.Icon (Icon) + +data ProjectTemplate = ProjectTemplate + @com.intellij.platform.ProjectTemplate + deriving Class + +data ProjectTemplateArray = ProjectTemplateArray + @com.intellij.platform.ProjectTemplate[] + deriving Class + +instance JArray ProjectTemplate ProjectTemplateArray + +foreign import java unsafe "@interface" createModuleBuilder + :: Java ProjectTemplate AbstractModuleBuilder + +foreign import java unsafe "@interface" getDescription + :: Java ProjectTemplate JString + +foreign import java unsafe "@interface" getIcon + :: Java ProjectTemplate Icon + +foreign import java unsafe "@interface" validateSettings + :: Java ProjectTemplate ValidationInfo + +foreign import java unsafe "@interface" getName + :: Java ProjectTemplate JString diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplatesFactory.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplatesFactory.hs new file mode 100644 index 0000000..764546e --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/Platform/ProjectTemplatesFactory.hs @@ -0,0 +1,7 @@ +module FFI.Com.IntelliJ.Platform.ProjectTemplatesFactory where + +import P.Base + +data ProjectTemplatesFactory = ProjectTemplatesFactory + @com.intellij.platform.ProjectTemplatesFactory + deriving Class diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/FileViewProvider.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/FileViewProvider.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/FileViewProvider.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/FileViewProvider.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/PsiElement.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/PsiElement.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/PsiElement.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/PsiElement.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/PsiFile.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/PsiFile.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/PsiFile.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/PsiFile.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/TokenType.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/TokenType.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/TokenType.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/TokenType.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/Tree.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/Tree.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IElementType.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IElementType.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IElementType.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IElementType.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IFileElementType.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IFileElementType.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IFileElementType.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/IFileElementType.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/TokenSet.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/TokenSet.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/Psi/Tree/TokenSet.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/Psi/Tree/TokenSet.hs diff --git a/src/main/eta/FFI/Com/IntelliJ/RT/Execution/JUnit/FileComparisonFailure.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/RT/Execution/JUnit/FileComparisonFailure.hs similarity index 100% rename from src/main/eta/FFI/Com/IntelliJ/RT/Execution/JUnit/FileComparisonFailure.hs rename to plugin/src/main/eta/FFI/Com/IntelliJ/RT/Execution/JUnit/FileComparisonFailure.hs diff --git a/plugin/src/main/eta/FFI/Com/IntelliJ/UI/TextAccessor.hs b/plugin/src/main/eta/FFI/Com/IntelliJ/UI/TextAccessor.hs new file mode 100644 index 0000000..c349004 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/IntelliJ/UI/TextAccessor.hs @@ -0,0 +1,13 @@ +module FFI.Com.IntelliJ.UI.TextAccessor where + +import Java + +data TextAccessor = TextAccessor + @com.intellij.ui.TextAccessor + deriving Class + +foreign import java unsafe "@interface" setText + :: (a <: TextAccessor) => JString -> Java a () + +foreign import java unsafe "@interface" getText + :: (a <: TextAccessor) => Java a JString diff --git a/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Jps/Model/EtaBuildOptions.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Jps/Model/EtaBuildOptions.hs new file mode 100644 index 0000000..3528082 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Jps/Model/EtaBuildOptions.hs @@ -0,0 +1,21 @@ +module FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Jps.Model.EtaBuildOptions where + +import Java + +data EtaBuildOptions = EtaBuildOptions + @com.typelead.intellij.eta.jps.model.EtaBuildOptions + deriving Class + +type instance Inherits EtaBuildOptions = '[Object] + +foreign import java unsafe "@new" newEtaBuildOptions :: Java a EtaBuildOptions + +-- There is a copy method, but this works just as well from Eta. +foreign import java unsafe "@new" copyEtaBuildOptions + :: EtaBuildOptions -> Java a EtaBuildOptions + +foreign import java unsafe "@field etaPath" getEtaPath :: Java EtaBuildOptions JString +foreign import java unsafe "@field etaPath" setEtaPath :: JString -> Java EtaBuildOptions () + +foreign import java unsafe "@field etlasPath" getEtlasPath :: Java a JString +foreign import java unsafe "@field etlasPath" setEtlasPath :: JString -> Java EtaBuildOptions () diff --git a/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/EtaLanguage.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/EtaLanguage.hs similarity index 100% rename from src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/EtaLanguage.hs rename to plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/EtaLanguage.hs diff --git a/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Lexer/EtaSyntaxHighlightingLexer.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Lexer/EtaSyntaxHighlightingLexer.hs similarity index 100% rename from src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Lexer/EtaSyntaxHighlightingLexer.hs rename to plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Lexer/EtaSyntaxHighlightingLexer.hs diff --git a/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaFile.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaFile.hs similarity index 100% rename from src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaFile.hs rename to plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaFile.hs diff --git a/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaTokenTypes.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaTokenTypes.hs similarity index 100% rename from src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaTokenTypes.hs rename to plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Lang/Psi/EtaTokenTypes.hs diff --git a/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleType.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleType.hs new file mode 100644 index 0000000..6c72abe --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleType.hs @@ -0,0 +1,16 @@ +module FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Project.Module.EtlasModuleType where + +import P + +import FFI.Com.IntelliJ.OpenApi.Module.ModuleType (ModuleType) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.EmptyModuleBuilder (EmptyModuleBuilder) + +data EtlasModuleType = EtlasModuleType + @com.typelead.intellij.plugin.eta.project.module.EtlasModuleType + deriving Class + +type instance Inherits EtlasModuleType = '[ModuleType EmptyModuleBuilder] + +foreign import java unsafe + "@static @field com.typelead.intellij.plugin.eta.project.module.EtlasModuleType.INSTANCE" + getEtlasModuleType :: EtlasModuleType diff --git a/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Resources/EtaIcons.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Resources/EtaIcons.hs new file mode 100644 index 0000000..33cf247 --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Resources/EtaIcons.hs @@ -0,0 +1,7 @@ +module FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Resources.EtaIcons where + +import Java +import FFI.Javax.Swing.Icon (Icon) + +foreign import java unsafe "@static @field com.typelead.intellij.plugin.eta.resources.EtaIcons.FILE" + etaFileIcon :: Icon diff --git a/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Settings/EtaBuildSettings.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Settings/EtaBuildSettings.hs new file mode 100644 index 0000000..a2d5c9a --- /dev/null +++ b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Plugin/Eta/Settings/EtaBuildSettings.hs @@ -0,0 +1,36 @@ +module FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Settings.EtaBuildSettings where + +import Java +import FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Jps.Model.EtaBuildOptions (EtaBuildOptions) +import FFI.Com.IntelliJ.OpenApi.Project.Project + +data EtaBuildSettings = EtaBuildSettings + @com.typelead.intellij.plugin.eta.settings.EtaBuildSettings + deriving Class + +foreign import java unsafe "@static com.typelead.intellij.plugin.eta.settings.EtaBuildSettings.getInstance" + getInstance :: Project -> Java EtaBuildSettings EtaBuildSettings + +foreign import java unsafe "@new" newEtaBuildSettings + :: Java a EtaBuildSettings + +foreign import java unsafe "loadState" loadState + :: EtaBuildOptions -> Java EtaBuildSettings () + +foreign import java unsafe setEtaPath + :: JString -> Java EtaBuildSettings () + +foreign import java unsafe getEtaPath + :: Java EtaBuildSettings JString + +foreign import java unsafe setEtlasPath + :: JString -> Java EtaBuildSettings () + +foreign import java unsafe getEtlasPath + :: Java EtaBuildSettings JString + +foreign import java unsafe "getState" getState + :: Java EtaBuildSettings EtaBuildOptions + +foreign import java unsafe noStateLoaded + :: Java EtaBuildSettings () diff --git a/src/main/eta/FFI/Com/TypeLead/IntelliJ/Utils/Parser/SimplePsiParser.hs b/plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Utils/Parser/SimplePsiParser.hs similarity index 100% rename from src/main/eta/FFI/Com/TypeLead/IntelliJ/Utils/Parser/SimplePsiParser.hs rename to plugin/src/main/eta/FFI/Com/TypeLead/IntelliJ/Utils/Parser/SimplePsiParser.hs diff --git a/plugin/src/main/eta/FFI/Javax/Swing/Icon.hs b/plugin/src/main/eta/FFI/Javax/Swing/Icon.hs new file mode 100644 index 0000000..55727bf --- /dev/null +++ b/plugin/src/main/eta/FFI/Javax/Swing/Icon.hs @@ -0,0 +1,7 @@ +module FFI.Javax.Swing.Icon where + +import P.Base + +data Icon = Icon + @javax.swing.Icon + deriving Class diff --git a/plugin/src/main/eta/FFI/Javax/Swing/JComponent.hs b/plugin/src/main/eta/FFI/Javax/Swing/JComponent.hs new file mode 100644 index 0000000..c4e0b93 --- /dev/null +++ b/plugin/src/main/eta/FFI/Javax/Swing/JComponent.hs @@ -0,0 +1,27 @@ +module FFI.Javax.Swing.JComponent + ( JComponent + , emptyJComponent + ) where + +import P.Base + +data JComponent = JComponent + @javax.swing.JComponent + deriving Class + +emptyJComponent :: Java a JComponent +emptyJComponent = superCastJ newEmptyJComponent + +-- TODO: Workaround for lack of anonymous classes +data EmptyJComponent = EmptyJComponent + @com.typelead.intellij.plugin.util.EmptyJComponent + deriving Class + +type instance Inherits EmptyJComponent = '[JComponent] + +foreign import java unsafe "@new" newEmptyJComponent :: Java a EmptyJComponent + +-- TODO: Dummy declaration to force Eta to export EmptyJComponent +foreign export java __dummy :: Java EmptyJComponent () +__dummy :: Java EmptyJComponent () +__dummy = return () diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighter.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighter.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighter.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighter.hs diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighterFactory.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighterFactory.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighterFactory.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Highlighting/EtaSyntaxHighlighterFactory.hs diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Lexer/EtaParsingLexer.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Lexer/EtaParsingLexer.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Lexer/EtaParsingLexer.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Lexer/EtaParsingLexer.hs diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Parser/EtaParserDefinition.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Parser/EtaParserDefinition.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Parser/EtaParserDefinition.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Parser/EtaParserDefinition.hs diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Psi/EtaElementFactory.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Psi/EtaElementFactory.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Psi/EtaElementFactory.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Psi/EtaElementFactory.hs diff --git a/src/main/eta/IntelliJ/Plugin/Eta/Lang/Utils.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Utils.hs similarity index 100% rename from src/main/eta/IntelliJ/Plugin/Eta/Lang/Utils.hs rename to plugin/src/main/eta/IntelliJ/Plugin/Eta/Lang/Utils.hs diff --git a/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleBuilder.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleBuilder.hs new file mode 100644 index 0000000..d7d16dc --- /dev/null +++ b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Module/EtlasModuleBuilder.hs @@ -0,0 +1,106 @@ +module IntelliJ.Plugin.Eta.Project.Module.EtlasModuleBuilder where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.EmptyModuleBuilder (EmptyModuleBuilder) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.JavaModuleBuilder (JavaModuleBuilder) +import qualified FFI.Com.IntelliJ.Ide.Util.ProjectWizard.JavaModuleBuilder as JavaModuleBuilder +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleBuilder (ModuleBuilder, addModuleConfigurationUpdater) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleWizardStep (ModuleWizardStep, ModuleWizardStepArray, updateDataModel) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.SettingsStep (SettingsStep, addSettingsField) +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.WizardContext (WizardContext, isCreatingNewProject) +import FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Project.Module.EtlasModuleType (getEtlasModuleType) +import qualified FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Settings.EtaBuildSettings as EtaBuildSettings +import FFI.Com.IntelliJ.OpenApi.Module.JavaModuleType (JavaModuleType, getJavaModuleType) +import FFI.Com.IntelliJ.OpenApi.Module.ModuleType (ModuleType, modifyProjectTypeStep) +import FFI.Com.IntelliJ.OpenApi.Roots.ContentEntry (getUrl, addExcludeFolderStr) +import FFI.Com.IntelliJ.OpenApi.Roots.ExcludeFolder (ExcludeFolder) +import FFI.Com.IntelliJ.OpenApi.Roots.ModifiableRootModel (ModifiableRootModel, getContentEntries) +import FFI.Com.IntelliJ.OpenApi.Roots.UI.Configuration.ModulesProvider (ModulesProvider) +import FFI.Com.IntelliJ.OpenApi.UI.TextFieldWithBrowseButton (TextFieldWithBrowseButton, newTextFieldWithBrowseButton) +import FFI.Com.IntelliJ.UI.TextAccessor (getText, setText) +import FFI.Javax.Swing.JComponent + +import IntelliJ.Plugin.Util.Wizard + +data EtlasModuleBuilder = EtlasModuleBuilder + @com.typelead.intellij.plugin.eta.project.module.EtlasModuleBuilder + deriving Class + +type instance Inherits EtlasModuleBuilder = '[JavaModuleBuilder] + +foreign import java unsafe "@new" newEtlasModuleBuilder :: Java a EtlasModuleBuilder + +foreign export java getModuleType + :: Java EtlasModuleBuilder (ModuleType EmptyModuleBuilder) +getModuleType = return (superCast getEtlasModuleType) + +foreign export java createWizardSteps + :: WizardContext + -> ModulesProvider + -> Java EtlasModuleBuilder ModuleWizardStepArray +createWizardSteps + :: WizardContext + -> ModulesProvider + -> Java EtlasModuleBuilder ModuleWizardStepArray +createWizardSteps wizardContext modulesProvider = do + isNewProj <- wizardContext <.> isCreatingNewProject + -- TODO + arrayFromList [] +-- if isNewProj then do +-- this <- getThis +-- arrayFromList =<< sequence [newEtlasStep this wizardContext] +-- else +-- arrayFromList [] + +foreign export java modifySettingsStep + :: SettingsStep + -> Java EtlasModuleBuilder ModuleWizardStep +modifySettingsStep settingsStep = do + this <- getThis + superCastJ $ newEtaStep this settingsStep + +foreign export java setupRootModel :: ModifiableRootModel -> Java EtlasModuleBuilder () +setupRootModel rootModel = do + this <- getThis + (superCast this) <.> JavaModuleBuilder.setupRootModel rootModel + addExcludedRoots + where + addExcludedRoots = do + entries <- rootModel <.> getContentEntries >- arrayToList + forM_ entries $ \contentEntry -> do + url <- contentEntry <.> getUrl + contentEntry <.> addExcludeFolderStr (url <> "/dist") + +-- TODO +-- newEtlasStep :: EtlasModuleBuilder -> WizardContext -> Java a ModuleWizardStep +-- newEtlasStep moduleBuilder wizardContext = mkModuleWizardStep MkModuleWizardStep {..} +-- where +-- mkModuleWizardStepUpdateDataModel = undefined +-- mkModuleWizardStepGetComponent = undefined + +newEtaStep :: EtlasModuleBuilder -> SettingsStep -> Java a ModuleWizardStep +newEtaStep moduleBuilder settingsStep = do + component <- emptyJComponent + let mkModuleWizardStepGetComponent = return component + + javaStep <- getJavaModuleType >- modifyProjectTypeStep settingsStep (superCast moduleBuilder) + + etaPathField <- newPathField "eta" + settingsStep <.> addSettingsField "Eta path:" etaPathField + etlasPathField <- newPathField "etlas" + settingsStep <.> addSettingsField "Etlas path:" etlasPathField + + let mkModuleWizardStepUpdateDataModel = do + javaStep <.> updateDataModel + moduleBuilder <.> addModuleConfigurationUpdater (\module_ rootModel -> do + project <- rootModel <.> getProject + buildSettings <- EtaBuildSettings.getInstance project + (etaPathField <.> getText) >>= (\s -> buildSettings <.> EtaBuildSettings.setEtaPath s) + (etlasPathField <.> getText) >>= (\s -> buildSettings <.> EtaBuildSettings.setEtlasPath s) + ) + + mkModuleWizardStep MkModuleWizardStep {..} + where + -- TODO: Need to GuiUtil.addFolderListener, locateExecutableByGuessing, etc. + newPathField name = newTextFieldWithBrowseButton diff --git a/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtaProjectTemplatesFactory.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtaProjectTemplatesFactory.hs new file mode 100644 index 0000000..09b8f0c --- /dev/null +++ b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtaProjectTemplatesFactory.hs @@ -0,0 +1,28 @@ +module IntelliJ.Plugin.Eta.Project.Template.EtaProjectTemplatesFactory where + +import P.Base +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.WizardContext (WizardContext) +import FFI.Com.IntelliJ.Platform.ProjectTemplate (ProjectTemplate, ProjectTemplateArray) +import FFI.Com.IntelliJ.Platform.ProjectTemplatesFactory (ProjectTemplatesFactory) +import IntelliJ.Plugin.Eta.Project.Template.EtlasProjectTemplate (newEtlasProjectTemplate, toProjectTemplate) + +data EtaProjectTemplatesFactory = EtaProjectTemplatesFactory + @com.typelead.intellij.plugin.eta.project.template.EtaProjectTemplatesFactory + deriving Class + +type instance Inherits EtaProjectTemplatesFactory = '[ProjectTemplatesFactory] + +foreign export java getGroups :: Java EtaProjectTemplatesFactory JStringArray +getGroups = arrayFromList ["Eta"] + +foreign export java createTemplates + :: JString + -> WizardContext + -> Java EtaProjectTemplatesFactory ProjectTemplateArray +createTemplates + :: JString + -> WizardContext + -> Java EtaProjectTemplatesFactory ProjectTemplateArray +createTemplates _ _ = do + t <- newEtlasProjectTemplate + arrayFromList [toProjectTemplate t] diff --git a/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtlasProjectTemplate.hs b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtlasProjectTemplate.hs new file mode 100644 index 0000000..15d00c7 --- /dev/null +++ b/plugin/src/main/eta/IntelliJ/Plugin/Eta/Project/Template/EtlasProjectTemplate.hs @@ -0,0 +1,41 @@ +module IntelliJ.Plugin.Eta.Project.Template.EtlasProjectTemplate where + +import P.Base +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.AbstractModuleBuilder (AbstractModuleBuilder) +import FFI.Com.IntelliJ.OpenApi.UI.ValidationInfo (ValidationInfo) +import FFI.Com.IntelliJ.Platform.ProjectTemplate (ProjectTemplate) +import FFI.Com.TypeLead.IntelliJ.Plugin.Eta.Resources.EtaIcons (etaFileIcon) +import FFI.Javax.Swing.Icon (Icon) +import IntelliJ.Plugin.Eta.Project.Module.EtlasModuleBuilder (newEtlasModuleBuilder) + +-- TODO: This seems to use extends instead of implements, using the old way instead... +-- data EtlasProjectTemplate = EtlasProjectTemplate +-- @com.typelead.intellij.plugin.eta.project.template.EtlasProjectTemplate +-- deriving Class +-- +-- type instance Inherits EtlasProjectTemplate = '[ProjectTemplate] + +data {-# CLASS "com.typelead.intellij.plugin.eta.project.template.EtlasProjectTemplate implements com.intellij.platform.ProjectTemplate" #-} + EtlasProjectTemplate = EtlasProjectTemplate (Object# EtlasProjectTemplate) + deriving Class + +-- Hack since we can't superCast +toProjectTemplate :: EtlasProjectTemplate -> ProjectTemplate +toProjectTemplate t = unsafeRuntimeCast t + +foreign import java unsafe "@new" newEtlasProjectTemplate :: Java a EtlasProjectTemplate + +foreign export java getName :: Java EtlasProjectTemplate JString +getName = return "Etlas" + +foreign export java getDescription :: Java EtlasProjectTemplate JString +getDescription = return "Eta project compiled with the Etlas build tool" + +foreign export java getIcon :: Java EtlasProjectTemplate Icon +getIcon = return etaFileIcon + +foreign export java createModuleBuilder :: Java EtlasProjectTemplate AbstractModuleBuilder +createModuleBuilder = superCastJ newEtlasModuleBuilder + +foreign export java validateSettings :: Java EtlasProjectTemplate ValidationInfo +validateSettings = return unsafeJNull diff --git a/plugin/src/main/eta/IntelliJ/Plugin/Util/Wizard.hs b/plugin/src/main/eta/IntelliJ/Plugin/Util/Wizard.hs new file mode 100644 index 0000000..1000ed0 --- /dev/null +++ b/plugin/src/main/eta/IntelliJ/Plugin/Util/Wizard.hs @@ -0,0 +1,57 @@ +module IntelliJ.Plugin.Util.Wizard + ( EtaModuleWizardStep + , MkModuleWizardStep(..) + , mkModuleWizardStep + ) where + +import P + +import FFI.Com.IntelliJ.Ide.Util.ProjectWizard.ModuleWizardStep +import FFI.Javax.Swing.JComponent + +import Foreign.StablePtr + +data MkModuleWizardStep = MkModuleWizardStep + { mkModuleWizardStepUpdateDataModel :: Java EtaModuleWizardStep () + , mkModuleWizardStepGetComponent :: Java EtaModuleWizardStep JComponent + } + +mkModuleWizardStep :: MkModuleWizardStep -> Java a ModuleWizardStep +mkModuleWizardStep impl = do + ptr <- io $ newStablePtr impl + wizStep <- newEtaModuleWizardStep + wizStep <.> setMyImplPtr ptr + return $ superCast wizStep + +data AbstractEtaModuleWizardStep = AbstractEtaModuleWizardStep + @com.typelead.intellij.plugin.eta.util.AbstractEtaModuleWizardStep + deriving Class + +type instance Inherits AbstractEtaModuleWizardStep = '[ModuleWizardStep] + +data EtaModuleWizardStep = EtaModuleWizardStep + @com.typelead.intellij.plugin.eta.util.EtaModuleWizardStep + deriving Class + +type instance Inherits EtaModuleWizardStep = '[AbstractEtaModuleWizardStep] + +foreign import java unsafe "@new" newEtaModuleWizardStep + :: Java a EtaModuleWizardStep + +foreign import java unsafe "@field myImplPtr" setMyImplPtr + :: (StablePtr MkModuleWizardStep) -> Java EtaModuleWizardStep () + +foreign import java unsafe "@field myImplPtr" myImplPtr + :: Java EtaModuleWizardStep (StablePtr MkModuleWizardStep) + +withImpl :: (MkModuleWizardStep -> Java EtaModuleWizardStep a) -> Java EtaModuleWizardStep a +withImpl f = do + ptr <- myImplPtr + impl <- io $ deRefStablePtr ptr + f impl + +foreign export java "updateDataModel" updateDataModelImpl :: Java EtaModuleWizardStep () +updateDataModelImpl = withImpl mkModuleWizardStepUpdateDataModel + +foreign export java "getComponent" getComponentImpl :: Java EtaModuleWizardStep JComponent +getComponentImpl = withImpl mkModuleWizardStepGetComponent diff --git a/plugin/src/main/eta/P.hs b/plugin/src/main/eta/P.hs new file mode 100644 index 0000000..4b747a5 --- /dev/null +++ b/plugin/src/main/eta/P.hs @@ -0,0 +1,5 @@ +-- The standard prelude for this project. +module P (module X) where + +import P.Base as X +import P.Methods as X diff --git a/src/main/eta/P.hs b/plugin/src/main/eta/P/Base.hs similarity index 88% rename from src/main/eta/P.hs rename to plugin/src/main/eta/P/Base.hs index 9cbac30..a4ae6f4 100644 --- a/src/main/eta/P.hs +++ b/plugin/src/main/eta/P/Base.hs @@ -1,6 +1,8 @@ --- The standard prelude for this project. -module P - ( module P +-- Base of the prelude P module +-- This should be importable from anywhere (especially FFI modules), +-- so take care to not introduce any potential cyclical dependencies. +module P.Base + ( module P.Base , module X ) where @@ -15,8 +17,10 @@ import Data.Typeable import GHC.Base (isTrue#, isNullObject#, unJava) import Java as X ( JArray(..), type (<:), Object, JString, JStringArray, Class(..), JClass(..), - Object#, Java(..), CharSequence(..), Inherits(..), Short(..), - withThis, arrayFromList, io, java, (<.>), fromJava, superCast + Object#, Java(..), CharSequence(..), Inherits(..), Short(..), JavaConverter(..), + withThis, arrayFromList, arrayToList, io, java, (<.>), fromJava, superCast, unsafeCast, + unsafePerformJava, + (>-) ) import Java.String as X (fromJString, toJString) import qualified Java @@ -72,9 +76,6 @@ maybeToJava = fromMaybe unsafeJNull maybeFromJava :: (a <: Object) => a -> Maybe a maybeFromJava x = if isJNull x then Nothing else Just x -unsafePerformJava :: (forall c. Java c a) -> a -unsafePerformJava = Java.pureJava - data {-# CLASS "java.io.File" #-} JFile = JFile (Object# JFile) deriving Class @@ -155,3 +156,7 @@ throwJavaM :: (e <: JThrowable) => Java a e -> Java a b throwJavaM me = do e <- me throwJava e + +foreign import java unsafe + "@static com.typelead.intellij.utils.JavaUtil.unsafeRuntimeCast" + unsafeRuntimeCast :: (a <: Object, b <: Object) => a -> b diff --git a/plugin/src/main/eta/P/Methods.hs b/plugin/src/main/eta/P/Methods.hs new file mode 100644 index 0000000..5fbc505 --- /dev/null +++ b/plugin/src/main/eta/P/Methods.hs @@ -0,0 +1,3 @@ +module P.Methods (module X) where + +import P.Methods.GetProject as X diff --git a/plugin/src/main/eta/P/Methods/GetProject.hs b/plugin/src/main/eta/P/Methods/GetProject.hs new file mode 100644 index 0000000..3fdc15b --- /dev/null +++ b/plugin/src/main/eta/P/Methods/GetProject.hs @@ -0,0 +1,10 @@ +module P.Methods.GetProject ( + GetProject(..) + , Project + ) where + +import Java +import FFI.Com.IntelliJ.OpenApi.Project.Project + +class GetProject a where + getProject :: Java a Project diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/CabalPackageSettingsStep.java b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/CabalPackageSettingsStep.java new file mode 100644 index 0000000..9057d72 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/CabalPackageSettingsStep.java @@ -0,0 +1,57 @@ +package com.typelead.intellij.plugin.cabal.project.module; + +import com.intellij.ide.util.projectWizard.ModuleBuilder; +import com.intellij.ide.util.projectWizard.ModuleWizardStep; +import com.intellij.ide.util.projectWizard.WizardContext; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModifiableRootModel; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiManager; +import com.typelead.intellij.plugin.cabal.project.template.CabalFileData; +import com.typelead.intellij.plugin.cabal.project.template.CabalPackageTemplate; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public class CabalPackageSettingsStep extends ModuleWizardStep { + + private final ModuleBuilder moduleBuilder; + private final WizardContext wizardContext; + private final NewCabalProjectForm form; + + public CabalPackageSettingsStep( + ModuleBuilder moduleBuilder, + WizardContext wizardContext, + NewCabalProjectForm form + ) { + this.moduleBuilder = moduleBuilder; + this.wizardContext = wizardContext; + this.form = form; + } + + @Override + public void updateDataModel() { + moduleBuilder.addModuleConfigurationUpdater(new ModuleBuilder.ModuleConfigurationUpdater() { + @Override + public void update(@NotNull Module module, @NotNull ModifiableRootModel rootModel) { + updateModule(rootModel); + } + }); + } + + @Override + public JComponent getComponent() { + return form.getContentPane(); + } + + private void updateModule(ModifiableRootModel rootModel) { + Project project = rootModel.getProject(); + CabalFileData data = form.getData(); + if (wizardContext.isCreatingNewProject() && data.initializeCabalPackage) { + PsiDirectory psiDir = PsiManager.getInstance(project).findDirectory(project.getBaseDir()); + CabalPackageTemplate.createCabalFile(psiDir, project.getName(), data); + CabalPackageTemplate.createSetupFile(psiDir); + } + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.form b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.form new file mode 100644 index 0000000..b6fbdaa --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.form @@ -0,0 +1,197 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.java b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.java new file mode 100644 index 0000000..783cca4 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/module/NewCabalProjectForm.java @@ -0,0 +1,42 @@ +package com.typelead.intellij.plugin.cabal.project.module; + +import com.typelead.intellij.plugin.cabal.project.template.CabalComponentType; +import com.typelead.intellij.plugin.cabal.project.template.CabalFileData; + +import javax.swing.*; + +public class NewCabalProjectForm { + + private JPanel contentPane; + private JCheckBox initializeCabalPackage; + private JTextField version; + private JTextField synopsis; + private JTextField homepage; + private JTextField authorName; + private JTextField maintainerEmail; + private JComboBox category; + private JTextField cabalVersion; + private JComboBox componentType; + private JTextField sourceDir; + private JComboBox language; + + public JComponent getContentPane() { + return contentPane; + } + + public CabalFileData getData() { + return new CabalFileData( + initializeCabalPackage.isSelected(), + version.getText(), + synopsis.getText(), + homepage.getText(), + authorName.getText(), + maintainerEmail.getText(), + (String)category.getSelectedItem(), + cabalVersion.getText(), + CabalComponentType.valueOf((String) componentType.getSelectedItem()), + sourceDir.getText(), + (String)language.getSelectedItem() + ); + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalComponentType.java b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalComponentType.java new file mode 100644 index 0000000..efa4b12 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalComponentType.java @@ -0,0 +1,6 @@ +package com.typelead.intellij.plugin.cabal.project.template; + +public enum CabalComponentType { + Library, + Executable +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalFileData.java b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalFileData.java new file mode 100644 index 0000000..700cdd5 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalFileData.java @@ -0,0 +1,42 @@ +package com.typelead.intellij.plugin.cabal.project.template; + +public class CabalFileData { + + public final boolean initializeCabalPackage; + public final String packageVersion; + public final String synopsis; + public final String homepage; + public final String author; + public final String maintainer; + public final String category; + public final String cabalVersion; + public final CabalComponentType componentType; + public final String sourceDir; + public final String language; + + public CabalFileData( + boolean initializeCabalPackage, + String packageVersion, + String synopsis, + String homepage, + String author, + String maintainer, + String category, + String cabalVersion, + CabalComponentType componentType, + String sourceDir, + String language + ) { + this.initializeCabalPackage = initializeCabalPackage; + this.packageVersion = packageVersion; + this.synopsis = synopsis; + this.homepage = homepage; + this.author = author; + this.maintainer = maintainer; + this.category = category; + this.cabalVersion = cabalVersion; + this.componentType = componentType; + this.sourceDir = sourceDir; + this.language = language; + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalPackageTemplate.java b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalPackageTemplate.java new file mode 100644 index 0000000..516b90e --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/cabal/project/template/CabalPackageTemplate.java @@ -0,0 +1,79 @@ +package com.typelead.intellij.plugin.cabal.project.template; + +import com.intellij.ide.fileTemplates.FileTemplate; +import com.intellij.ide.fileTemplates.FileTemplateManager; +import com.intellij.ide.fileTemplates.FileTemplateUtil; +import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.PsiDirectory; +import com.intellij.util.IncorrectOperationException; + +import java.util.Properties; + +public final class CabalPackageTemplate { + + private CabalPackageTemplate() {} + + private static Logger LOG = Logger.getInstance(CabalPackageTemplate.class); + + public static boolean createSetupFile(PsiDirectory psiDir) { + return createFileFromTemplate(psiDir, "Setup.hs", "Default Setup Haskell File"); + } + + public static boolean createCabalFile(PsiDirectory psiDir, String name, CabalFileData data) { + String templateName; + if (data.componentType == CabalComponentType.Library) { + templateName = "Default Library Cabal File"; + } else if (data.componentType == CabalComponentType.Executable) { + templateName = "Default Executable Cabal File"; + } else { + throw new IllegalArgumentException("Unexpected componentType: " + data.componentType); + } + return createFileFromTemplate( + psiDir, name + ".cabal", templateName, + "NAME", name, + "PACKAGE_VERSION", data.packageVersion, + "SYNOPSIS", data.synopsis, + "HOMEPAGE", data.homepage, + "AUTHOR", data.author, + "MAINTAINER", data.maintainer, + "CATEGORY", data.category, + "CABAL_VERSION", data.cabalVersion, + "SOURCE_DIR", data.sourceDir, + "LANGAUGE", data.language + ); + } + + public static boolean createHaskellMainFile(PsiDirectory psiDir) { + return createFileFromTemplate(psiDir, "Main.hs", "Default Haskell Main File"); + } + + private static boolean createFileFromTemplate( + PsiDirectory psiDir, + String fileName, + String templateName, + String... kvps + ) { + if (kvps.length % 2 != 0) { + throw new IllegalArgumentException("Invalid property arguments length: " + kvps.length); + } + try { + psiDir.checkCreateFile(fileName); + } catch (IncorrectOperationException e) { + LOG.warn("Unable to create " + fileName + " in " + psiDir.getText() + ": " + e.getMessage(), e); + return false; + } + FileTemplateManager templateManager = FileTemplateManager.getInstance(psiDir.getProject()); + FileTemplate template = templateManager.findInternalTemplate(templateName); + Properties props = FileTemplateManager.getInstance(psiDir.getProject()).getDefaultProperties(); + for (int i = 0; i < kvps.length; ++i) { + props.setProperty(kvps[i], kvps[i + 1]); + } + try { + FileTemplateUtil.createFromTemplate(template, fileName, props, psiDir); + return true; + } catch (Exception e) { + LOG.warn("Failed to create Setup.hs file in " + psiDir.getText() + ": " + e.getMessage(), e); + return false; + } + } +} diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaFileType.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaFileType.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/EtaFileType.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaFileType.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaLanguage.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaLanguage.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/EtaLanguage.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/EtaLanguage.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/.gitignore b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/.gitignore similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/.gitignore rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/.gitignore diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaParsingLexer.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaParsingLexer.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaParsingLexer.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaParsingLexer.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexer.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexer.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexer.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexer.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer.flex b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer.flex similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer.flex rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer.flex diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFile.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFile.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFile.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFile.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFileTypeFactory.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFileTypeFactory.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFileTypeFactory.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaFileTypeFactory.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenType.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenType.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenType.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenType.java diff --git a/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenTypes.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenTypes.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenTypes.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/psi/EtaTokenTypes.java diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/module/EtlasModuleType.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/module/EtlasModuleType.java new file mode 100644 index 0000000..dfb058c --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/module/EtlasModuleType.java @@ -0,0 +1,43 @@ +package com.typelead.intellij.plugin.eta.project.module; + +import com.intellij.ide.util.projectWizard.EmptyModuleBuilder; +import com.intellij.openapi.module.ModuleType; +import com.typelead.intellij.plugin.eta.resources.EtaIcons; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public class EtlasModuleType extends ModuleType { + + private static String ID = "ETA_ETLAS_MODULE"; + + public static EtlasModuleType INSTANCE = new EtlasModuleType(); + + private EtlasModuleType() { + super(ID); + } + + @NotNull + @Override + public EmptyModuleBuilder createModuleBuilder() { + return new EmptyModuleBuilder(); + } + + @NotNull + @Override + public String getName() { + return "Etlas Module"; + } + + @NotNull + @Override + public String getDescription() { + return "Etlas modules are used for developing Eta projects using " + + "the Eta build tool."; + } + + @Override + public Icon getNodeIcon(boolean isOpened) { + return EtaIcons.FILE; + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaFrameworkType.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaFrameworkType.java new file mode 100644 index 0000000..0ec6d81 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaFrameworkType.java @@ -0,0 +1,40 @@ +package com.typelead.intellij.plugin.eta.project.template; + +import com.intellij.framework.FrameworkTypeEx; +import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider; +import com.typelead.intellij.plugin.eta.resources.EtaIcons; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public class EtaFrameworkType extends FrameworkTypeEx { + + private EtaFrameworkType() { + super("Eta"); + } + + private static EtaFrameworkType _instance = null; + + public static EtaFrameworkType getInstance() { + if (_instance == null) _instance = FrameworkTypeEx.EP_NAME.findExtension(EtaFrameworkType.class); + return _instance; + } + + @NotNull + @Override + public FrameworkSupportInModuleProvider createProvider() { + return new EtaSupportProvider(); + } + + @NotNull + @Override + public String getPresentableName() { + return "Eta"; + } + + @NotNull + @Override + public Icon getIcon() { + return EtaIcons.FILE; + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportConfigurable.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportConfigurable.java new file mode 100644 index 0000000..2616817 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportConfigurable.java @@ -0,0 +1,28 @@ +package com.typelead.intellij.plugin.eta.project.template; + +import com.intellij.framework.addSupport.FrameworkSupportInModuleConfigurable; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.roots.ModifiableModelsProvider; +import com.intellij.openapi.roots.ModifiableRootModel; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +public class EtaSupportConfigurable extends FrameworkSupportInModuleConfigurable { + + @Nullable + @Override + public JComponent createComponent() { + return null; + } + + @Override + public void addSupport( + @NotNull Module module, + @NotNull ModifiableRootModel rootModel, + @NotNull ModifiableModelsProvider modifiableModelsProvider + ) { + // noop + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportProvider.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportProvider.java new file mode 100644 index 0000000..a9e4153 --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/project/template/EtaSupportProvider.java @@ -0,0 +1,38 @@ +package com.typelead.intellij.plugin.eta.project.template; + +import com.intellij.framework.FrameworkTypeEx; +import com.intellij.framework.addSupport.FrameworkSupportInModuleConfigurable; +import com.intellij.framework.addSupport.FrameworkSupportInModuleProvider; +import com.intellij.ide.util.frameworkSupport.FrameworkSupportModel; +import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.module.ModuleTypeId; +import com.typelead.intellij.plugin.eta.resources.EtaIcons; +import org.jetbrains.annotations.NotNull; + +import javax.swing.*; + +public class EtaSupportProvider extends FrameworkSupportInModuleProvider { + + @Override + public Icon getIcon() { + return EtaIcons.FILE; + } + + @NotNull + @Override + public FrameworkTypeEx getFrameworkType() { + return EtaFrameworkType.getInstance(); + } + + @NotNull + @Override + public FrameworkSupportInModuleConfigurable createConfigurable(@NotNull FrameworkSupportModel model) { + return new EtaSupportConfigurable(); + } + + @Override + public boolean isEnabledForModuleType(@NotNull ModuleType moduleType) { + String id = moduleType.getId(); + return ModuleTypeId.JAVA_MODULE.equals(id) || "PLUGIN_MODULE".equals(id); + } +} diff --git a/src/main/java/com/typelead/intellij/plugin/eta/resources/EtaIcons.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/resources/EtaIcons.java similarity index 100% rename from src/main/java/com/typelead/intellij/plugin/eta/resources/EtaIcons.java rename to plugin/src/main/java/com/typelead/intellij/plugin/eta/resources/EtaIcons.java diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/settings/EtaBuildSettings.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/settings/EtaBuildSettings.java new file mode 100644 index 0000000..c059afd --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/settings/EtaBuildSettings.java @@ -0,0 +1,57 @@ +package com.typelead.intellij.plugin.eta.settings; + +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.components.State; +import com.intellij.openapi.components.Storage; +import com.intellij.openapi.project.Project; +import com.typelead.intellij.plugin.eta.jps.model.EtaBuildOptions; +import com.typelead.intellij.eta.jps.model.JpsEtaBuildOptionsConstants; +import org.jetbrains.annotations.Nullable; + +/** Persistent state of Eta build settings for a project. */ +@State( + name = JpsEtaBuildOptionsConstants.ETA_BUILD_OPTIONS_COMPONENT, + storages = { + @Storage(JpsEtaBuildOptionsConstants.ETA_BUILD_OPTIONS_FILE) + } +) +public class EtaBuildSettings implements PersistentStateComponent { + +// // TODO: REMOVE +// public static final EtaBuildSettings defaultInstance = getInstance(ProjectManager.getInstance().getDefaultProject()); + + public static EtaBuildSettings getInstance(Project project) { + EtaBuildSettings settings = ServiceManager.getService(project, EtaBuildSettings.class); + return settings == null ? new EtaBuildSettings() : settings; + } + + private EtaBuildOptions state = new EtaBuildOptions(); + + @Nullable + @Override + public EtaBuildOptions getState() { + return state; + } + + @Override + public void loadState(EtaBuildOptions state) { + this.state = state; + } + + public void setEtaPath(String s) { + state.etaPath = s; + } + + public String getEtaPath() { + return state.etaPath; + } + + public void setEtlasPath(String s) { + state.etlasPath = s; + } + + public String getEtlasPath() { + return state.etlasPath; + } +} diff --git a/plugin/src/main/java/com/typelead/intellij/plugin/eta/util/AbstractEtaModuleWizardStep.java b/plugin/src/main/java/com/typelead/intellij/plugin/eta/util/AbstractEtaModuleWizardStep.java new file mode 100644 index 0000000..247af3b --- /dev/null +++ b/plugin/src/main/java/com/typelead/intellij/plugin/eta/util/AbstractEtaModuleWizardStep.java @@ -0,0 +1,7 @@ +package com.typelead.intellij.plugin.eta.util; + +import com.intellij.ide.util.projectWizard.ModuleWizardStep; + +public abstract class AbstractEtaModuleWizardStep extends ModuleWizardStep { + public int myImplPtr; +} diff --git a/src/main/java/com/typelead/intellij/utils/JavaUtil.java b/plugin/src/main/java/com/typelead/intellij/utils/JavaUtil.java similarity index 89% rename from src/main/java/com/typelead/intellij/utils/JavaUtil.java rename to plugin/src/main/java/com/typelead/intellij/utils/JavaUtil.java index 7ac3322..1b2e4cd 100644 --- a/src/main/java/com/typelead/intellij/utils/JavaUtil.java +++ b/plugin/src/main/java/com/typelead/intellij/utils/JavaUtil.java @@ -13,6 +13,10 @@ public static void throwJava(Throwable t) throws Throwable { throw t; } + public static R unsafeRuntimeCast(A a) { + return (R) a; + } + public static A tryJava( Class catchCls, Supplier
supplier, diff --git a/src/main/java/com/typelead/intellij/utils/parser/SimplePsiParser.java b/plugin/src/main/java/com/typelead/intellij/utils/parser/SimplePsiParser.java similarity index 100% rename from src/main/java/com/typelead/intellij/utils/parser/SimplePsiParser.java rename to plugin/src/main/java/com/typelead/intellij/utils/parser/SimplePsiParser.java diff --git a/src/main/resources/META-INF/plugin.xml b/plugin/src/main/resources/META-INF/plugin.xml similarity index 74% rename from src/main/resources/META-INF/plugin.xml rename to plugin/src/main/resources/META-INF/plugin.xml index edfe4cf..7cbec98 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/plugin/src/main/resources/META-INF/plugin.xml @@ -6,6 +6,7 @@ Eta language support for IntelliJ IDEA. + + diff --git a/plugin/src/main/resources/fileTemplates/internal/Default Executable Cabal File.cabal.ft b/plugin/src/main/resources/fileTemplates/internal/Default Executable Cabal File.cabal.ft new file mode 100644 index 0000000..d002905 --- /dev/null +++ b/plugin/src/main/resources/fileTemplates/internal/Default Executable Cabal File.cabal.ft @@ -0,0 +1,22 @@ +name: ${NAME} +version: ${PACKAGE_VERSION} +synopsis: ${SYNOPSIS} +-- description: +-- license: +-- license-file: +homepage: ${HOMEPAGE} +author: ${AUTHOR} +maintainer: ${MAINTAINER} +category: ${CATEGORY} +-- copyright: +build-type: Simple +-- extra-source-files: +cabal-version: ${CABAL_VERSION} + +executable ${NAME} + main-is: Main.hs + -- other-modules: + -- other-extensions: + build-depends: base >= 4.7 && < 5 + hs-source-dirs: ${SOURCE_DIR} + default-language: ${LANGUAGE} diff --git a/plugin/src/main/resources/fileTemplates/internal/Default Haskell Main File.hs.ft b/plugin/src/main/resources/fileTemplates/internal/Default Haskell Main File.hs.ft new file mode 100644 index 0000000..c7c36d7 --- /dev/null +++ b/plugin/src/main/resources/fileTemplates/internal/Default Haskell Main File.hs.ft @@ -0,0 +1,4 @@ +module Main where + +main :: IO () +main = error "not implemented" diff --git a/plugin/src/main/resources/fileTemplates/internal/Default Haskell Setup File.hs.ft b/plugin/src/main/resources/fileTemplates/internal/Default Haskell Setup File.hs.ft new file mode 100644 index 0000000..9a994af --- /dev/null +++ b/plugin/src/main/resources/fileTemplates/internal/Default Haskell Setup File.hs.ft @@ -0,0 +1,2 @@ +import Distribution.Simple +main = defaultMain diff --git a/plugin/src/main/resources/fileTemplates/internal/Default Library Cabal File.cabal.ft b/plugin/src/main/resources/fileTemplates/internal/Default Library Cabal File.cabal.ft new file mode 100644 index 0000000..dbaa479 --- /dev/null +++ b/plugin/src/main/resources/fileTemplates/internal/Default Library Cabal File.cabal.ft @@ -0,0 +1,22 @@ +name: ${NAME} +version: ${PACKAGE_VERSION} +synopsis: ${SYNOPSIS} +-- description: +-- license: +-- license-file: +homepage: ${HOMEPAGE} +author: ${AUTHOR} +maintainer: ${MAINTAINER} +category: ${CATEGORY} +-- copyright: +build-type: Simple +-- extra-source-files: +cabal-version: ${CABAL_VERSION} + +library + -- exposed-modules: + -- other-modules: + -- other-extensions: + build-depends: base >= 4.7 && < 5 + hs-source-dirs: ${SOURCE_DIR} + default-language: ${LANGUAGE} diff --git a/src/main/resources/icons/eta.png b/plugin/src/main/resources/icons/eta.png similarity index 100% rename from src/main/resources/icons/eta.png rename to plugin/src/main/resources/icons/eta.png diff --git a/src/main/resources/icons/eta@2x.png b/plugin/src/main/resources/icons/eta@2x.png similarity index 100% rename from src/main/resources/icons/eta@2x.png rename to plugin/src/main/resources/icons/eta@2x.png diff --git a/src/test/eta/IntelliJ/TestFramework/UsefulTestCase.hs b/plugin/src/test/eta/IntelliJ/TestFramework/UsefulTestCase.hs similarity index 100% rename from src/test/eta/IntelliJ/TestFramework/UsefulTestCase.hs rename to plugin/src/test/eta/IntelliJ/TestFramework/UsefulTestCase.hs diff --git a/src/test/eta/IntelliJ/TestFramework/VfsTestUtil.hs b/plugin/src/test/eta/IntelliJ/TestFramework/VfsTestUtil.hs similarity index 100% rename from src/test/eta/IntelliJ/TestFramework/VfsTestUtil.hs rename to plugin/src/test/eta/IntelliJ/TestFramework/VfsTestUtil.hs diff --git a/src/test/eta/JUnit.hs b/plugin/src/test/eta/JUnit.hs similarity index 100% rename from src/test/eta/JUnit.hs rename to plugin/src/test/eta/JUnit.hs diff --git a/src/test/eta/JUnit/Framework/TestCase.hs b/plugin/src/test/eta/JUnit/Framework/TestCase.hs similarity index 100% rename from src/test/eta/JUnit/Framework/TestCase.hs rename to plugin/src/test/eta/JUnit/Framework/TestCase.hs diff --git a/src/test/eta/JUnit/Runner/JUnitCore.hs b/plugin/src/test/eta/JUnit/Runner/JUnitCore.hs similarity index 100% rename from src/test/eta/JUnit/Runner/JUnitCore.hs rename to plugin/src/test/eta/JUnit/Runner/JUnitCore.hs diff --git a/src/test/eta/JUnit/Runner/Notification/Failure.hs b/plugin/src/test/eta/JUnit/Runner/Notification/Failure.hs similarity index 100% rename from src/test/eta/JUnit/Runner/Notification/Failure.hs rename to plugin/src/test/eta/JUnit/Runner/Notification/Failure.hs diff --git a/src/test/eta/JUnit/Runner/Result.hs b/plugin/src/test/eta/JUnit/Runner/Result.hs similarity index 100% rename from src/test/eta/JUnit/Runner/Result.hs rename to plugin/src/test/eta/JUnit/Runner/Result.hs diff --git a/src/test/eta/Main.hs b/plugin/src/test/eta/Main.hs similarity index 100% rename from src/test/eta/Main.hs rename to plugin/src/test/eta/Main.hs diff --git a/src/test/eta/Tests/EtaSyntaxHighlighterTest.hs b/plugin/src/test/eta/Tests/EtaSyntaxHighlighterTest.hs similarity index 100% rename from src/test/eta/Tests/EtaSyntaxHighlighterTest.hs rename to plugin/src/test/eta/Tests/EtaSyntaxHighlighterTest.hs diff --git a/src/test/eta/Tests/Utils.hs b/plugin/src/test/eta/Tests/Utils.hs similarity index 100% rename from src/test/eta/Tests/Utils.hs rename to plugin/src/test/eta/Tests/Utils.hs diff --git a/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaLexerTest.java b/plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaLexerTest.java similarity index 100% rename from src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaLexerTest.java rename to plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/AbstractEtaLexerTest.java diff --git a/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaParsingLexerTest.java b/plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaParsingLexerTest.java similarity index 100% rename from src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaParsingLexerTest.java rename to plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaParsingLexerTest.java diff --git a/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexerTest.java b/plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexerTest.java similarity index 100% rename from src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexerTest.java rename to plugin/src/test/java/com/typelead/intellij/plugin/eta/lang/lexer/EtaSyntaxHighlightingLexerTest.java diff --git a/src/test/java/com/typelead/intellij/test/LightPlatformCodeInsightFixtureTestCaseWrapper.java b/plugin/src/test/java/com/typelead/intellij/test/LightPlatformCodeInsightFixtureTestCaseWrapper.java similarity index 100% rename from src/test/java/com/typelead/intellij/test/LightPlatformCodeInsightFixtureTestCaseWrapper.java rename to plugin/src/test/java/com/typelead/intellij/test/LightPlatformCodeInsightFixtureTestCaseWrapper.java diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/AStack00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/AStack00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/AStack00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/AStack00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Arrow00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Arrow00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Arrow00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Arrow00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/CPP00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/CPP00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/CPP00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/CPP00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Case00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Case00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Case00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Case00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Comment00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Comment00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Comment00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Eta00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Eta00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Eta00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Eta00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Export00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Export00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Export00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Export00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/FFI00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/FFI00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/FFI00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/FFI00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/FFI00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/FFI00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/FFI00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/FFI00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/ForAll00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/ForAll00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/ForAll00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/ForAll00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00009.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00009.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00009.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00009.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00010.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00010.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00010.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00010.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00011.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00011.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00011.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00011.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00012.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00012.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00012.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00012.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Fun00013.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00013.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Fun00013.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Fun00013.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Hello00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Hello00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Hello00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Hello00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Hello00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Hello00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Hello00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Import00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Import00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Import00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Incomplete00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Incomplete00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Incomplete00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Incomplete00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Infix00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Infix00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Infix00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Infix00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/InstanceSigs00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/InstanceSigs00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/InstanceSigs00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/InstanceSigs00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/InternalLexer.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/InternalLexer.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/InternalLexer.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/InternalLexer.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Kind00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Kind00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Kind00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Kind00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Kind00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Kind00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Kind00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Kind00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Kind00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Lambda00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Lambda00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Lambda00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Lambda00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00009.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00009.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00009.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00009.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00010.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00010.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00010.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00010.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00011.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00011.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00011.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00011.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00012.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00012.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00012.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00012.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00013.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00013.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00013.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00013.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00014.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00014.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00014.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00014.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00015.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00015.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00015.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00015.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00016.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00016.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00016.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00016.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00017.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00017.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00017.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00017.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00018.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00018.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00018.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00018.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00019.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00019.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00019.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00019.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00020.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00020.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00020.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00020.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00021.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00021.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00021.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00021.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00022.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00022.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00022.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00022.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00023.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00023.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00023.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00023.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00024.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00024.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00024.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00024.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Layout00025.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00025.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Layout00025.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Layout00025.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Let00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Let00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Let00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Let00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/List00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/List00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/List00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/List00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/List00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/List00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/List00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/List00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/MagicHash00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/MagicHash00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/MagicHash00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/MagicHash00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Minimal00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Minimal00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Minimal00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Minimal00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Module00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Module00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Module00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Module00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Operator00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Operator00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Operator00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Operator00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Operator00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Operator00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Operator00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Operator00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Pragma00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Pragma00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Pragma00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Pragma00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Pragma00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Pragma00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Proc00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Proc00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Proc00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Proc00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Quote00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Quote00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Quote00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Quote00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Record00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Record00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Record00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Record00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Record00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Record00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Record00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Record00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Strict00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Strict00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Strict00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Strict00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/String00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/String00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/String00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/TempHask00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/TempHask00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/TempHask00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/TempHask00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/TempHask00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/TempHask00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Type00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Type00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Type00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Unicode00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Unicode00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Unicode00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Unicode00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/Var00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/Var00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/Var00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/Var00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/highlighting/ViewPatterns00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/highlighting/ViewPatterns00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/highlighting/ViewPatterns00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/highlighting/ViewPatterns00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/AStack00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/AStack00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/AStack00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/AStack00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Arrow00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Arrow00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Arrow00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Arrow00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Case00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Case00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Case00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Case00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Comment00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Comment00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Comment00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Eta00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Eta00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Eta00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Eta00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Export00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Export00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Export00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Export00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/FFI00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/FFI00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/FFI00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/FFI00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/FFI00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/FFI00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/FFI00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/FFI00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/ForAll00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/ForAll00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/ForAll00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/ForAll00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00009.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00009.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00009.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00009.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00010.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00010.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00010.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00010.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00011.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00011.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00011.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00011.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00012.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00012.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00012.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00012.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Fun00013.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00013.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Fun00013.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Fun00013.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Hello00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Hello00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Hello00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Hello00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Hello00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Hello00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Hello00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Import00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Import00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Import00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Import00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Import00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Import00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Import00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Import00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Import00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Import00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Import00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Incomplete00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Incomplete00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Incomplete00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Incomplete00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Infix00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Infix00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Infix00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Infix00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/InstanceSigs00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/InstanceSigs00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/InstanceSigs00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/InstanceSigs00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/InternalLexer.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/InternalLexer.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/InternalLexer.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/InternalLexer.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Kind00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Kind00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Kind00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Kind00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Kind00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Kind00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Kind00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Kind00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Kind00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Lambda00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Lambda00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Lambda00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Lambda00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00008.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00008.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00008.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00008.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00009.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00009.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00009.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00009.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00010.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00010.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00010.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00010.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00011.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00011.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00011.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00011.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00013.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00013.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00013.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00013.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00014.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00014.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00014.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00014.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00015.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00015.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00015.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00015.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00016.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00016.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00016.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00016.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00017.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00017.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00017.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00017.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00018.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00018.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00018.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00018.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00019.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00019.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00019.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00019.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00021.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00021.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00021.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00021.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00022.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00022.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00022.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00022.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00023.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00023.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00023.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00023.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00024.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00024.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00024.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00024.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Layout00025.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00025.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Layout00025.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Layout00025.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Let00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Let00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Let00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Let00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/List00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/List00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/List00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/List00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/List00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/List00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/List00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/List00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Minimal00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Minimal00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Minimal00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Minimal00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Module00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Module00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Module00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Module00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Operator00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Operator00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Operator00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Operator00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Operator00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Operator00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Operator00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Operator00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Pragma00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Pragma00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Pragma00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Pragma00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Pragma00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Pragma00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Pragma00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Pragma00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Pragma00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Pragma00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Pragma00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Proc00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Proc00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Proc00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Proc00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Quote00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Quote00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Quote00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Quote00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Record00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Record00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Record00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Record00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Record00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Record00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Record00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Record00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Strict00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Strict00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Strict00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Strict00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/String00007.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/String00007.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/String00007.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/String00007.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/TempHask00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/TempHask00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/TempHask00002.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00002.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/TempHask00002.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00002.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/TempHask00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/TempHask00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/TempHask00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/TempHask00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/TempHask00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/TempHask00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/TempHask00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Type00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Type00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Type00003.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00003.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Type00003.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00003.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Type00004.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00004.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Type00004.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00004.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Type00005.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00005.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Type00005.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00005.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Type00006.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00006.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Type00006.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Type00006.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/Var00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/Var00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/Var00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/Var00001.txt diff --git a/src/test/resources/fixtures/eta/lexer/parsing/ViewPatterns00001.txt b/plugin/src/test/resources/fixtures/eta/lexer/parsing/ViewPatterns00001.txt similarity index 100% rename from src/test/resources/fixtures/eta/lexer/parsing/ViewPatterns00001.txt rename to plugin/src/test/resources/fixtures/eta/lexer/parsing/ViewPatterns00001.txt diff --git a/src/test/resources/fixtures/eta/sources/AStack00001.hs b/plugin/src/test/resources/fixtures/eta/sources/AStack00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/AStack00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/AStack00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Arrow00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Arrow00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Arrow00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Arrow00001.hs diff --git a/src/test/resources/fixtures/eta/sources/CPP00001.hs b/plugin/src/test/resources/fixtures/eta/sources/CPP00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/CPP00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/CPP00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Case00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Case00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Case00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Case00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00006.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00006.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00007.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00007.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00007.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00007.hs diff --git a/src/test/resources/fixtures/eta/sources/Comment00008.hs b/plugin/src/test/resources/fixtures/eta/sources/Comment00008.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Comment00008.hs rename to plugin/src/test/resources/fixtures/eta/sources/Comment00008.hs diff --git a/src/test/resources/fixtures/eta/sources/Eta00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Eta00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Eta00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Eta00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Export00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Export00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Export00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Export00001.hs diff --git a/src/test/resources/fixtures/eta/sources/FFI00001.hs b/plugin/src/test/resources/fixtures/eta/sources/FFI00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/FFI00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/FFI00001.hs diff --git a/src/test/resources/fixtures/eta/sources/FFI00002.hs b/plugin/src/test/resources/fixtures/eta/sources/FFI00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/FFI00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/FFI00002.hs diff --git a/src/test/resources/fixtures/eta/sources/ForAll00001.hs b/plugin/src/test/resources/fixtures/eta/sources/ForAll00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/ForAll00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/ForAll00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00006.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00006.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00007.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00007.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00007.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00007.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00008.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00008.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00008.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00008.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00009.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00009.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00009.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00009.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00010.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00010.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00010.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00010.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00011.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00011.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00011.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00011.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00012.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00012.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00012.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00012.hs diff --git a/src/test/resources/fixtures/eta/sources/Fun00013.hs b/plugin/src/test/resources/fixtures/eta/sources/Fun00013.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Fun00013.hs rename to plugin/src/test/resources/fixtures/eta/sources/Fun00013.hs diff --git a/src/test/resources/fixtures/eta/sources/Hello00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Hello00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Hello00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Hello00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Hello00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Hello00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Hello00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Hello00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Hello00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Hello00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Hello00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Hello00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Import00006.hs b/plugin/src/test/resources/fixtures/eta/sources/Import00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Import00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/Import00006.hs diff --git a/src/test/resources/fixtures/eta/sources/Incomplete00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Incomplete00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Incomplete00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Incomplete00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Infix00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Infix00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Infix00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Infix00001.hs diff --git a/src/test/resources/fixtures/eta/sources/InstanceSigs00001.hs b/plugin/src/test/resources/fixtures/eta/sources/InstanceSigs00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/InstanceSigs00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/InstanceSigs00001.hs diff --git a/src/test/resources/fixtures/eta/sources/InternalLexer.hs b/plugin/src/test/resources/fixtures/eta/sources/InternalLexer.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/InternalLexer.hs rename to plugin/src/test/resources/fixtures/eta/sources/InternalLexer.hs diff --git a/src/test/resources/fixtures/eta/sources/Kind00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Kind00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Kind00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Kind00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Kind00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Kind00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Kind00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Kind00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Kind00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Kind00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Kind00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Kind00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Kind00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Kind00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Kind00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Kind00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Lambda00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Lambda00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Lambda00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Lambda00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00006.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00006.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00007.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00007.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00007.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00007.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00008.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00008.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00008.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00008.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00009.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00009.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00009.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00009.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00010.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00010.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00010.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00010.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00011.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00011.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00011.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00011.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00012.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00012.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00012.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00012.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00013.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00013.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00013.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00013.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00014.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00014.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00014.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00014.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00015.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00015.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00015.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00015.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00016.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00016.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00016.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00016.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00017.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00017.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00017.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00017.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00018.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00018.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00018.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00018.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00019.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00019.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00019.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00019.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00020.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00020.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00020.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00020.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00021.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00021.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00021.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00021.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00022.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00022.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00022.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00022.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00023.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00023.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00023.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00023.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00024.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00024.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00024.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00024.hs diff --git a/src/test/resources/fixtures/eta/sources/Layout00025.hs b/plugin/src/test/resources/fixtures/eta/sources/Layout00025.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Layout00025.hs rename to plugin/src/test/resources/fixtures/eta/sources/Layout00025.hs diff --git a/src/test/resources/fixtures/eta/sources/Let00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Let00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Let00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Let00001.hs diff --git a/src/test/resources/fixtures/eta/sources/List00001.hs b/plugin/src/test/resources/fixtures/eta/sources/List00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/List00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/List00001.hs diff --git a/src/test/resources/fixtures/eta/sources/List00002.hs b/plugin/src/test/resources/fixtures/eta/sources/List00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/List00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/List00002.hs diff --git a/src/test/resources/fixtures/eta/sources/MagicHash00001.hs b/plugin/src/test/resources/fixtures/eta/sources/MagicHash00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/MagicHash00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/MagicHash00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Minimal00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Minimal00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Minimal00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Minimal00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Module00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Module00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Module00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Module00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Operator00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Operator00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Operator00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Operator00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Operator00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Operator00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Operator00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Operator00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Pragma00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Pragma00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Pragma00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Pragma00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Pragma00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Pragma00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Pragma00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Pragma00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Pragma00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Pragma00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Pragma00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Pragma00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Pragma00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Pragma00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Pragma00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Pragma00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Pragma00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Pragma00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Pragma00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Pragma00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Proc00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Proc00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Proc00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Proc00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Quote00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Quote00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Quote00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Quote00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Record00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Record00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Record00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Record00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Record00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Record00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Record00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Record00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Strict00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Strict00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Strict00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Strict00001.hs diff --git a/src/test/resources/fixtures/eta/sources/String00001.hs b/plugin/src/test/resources/fixtures/eta/sources/String00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00001.hs diff --git a/src/test/resources/fixtures/eta/sources/String00002.hs b/plugin/src/test/resources/fixtures/eta/sources/String00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00002.hs diff --git a/src/test/resources/fixtures/eta/sources/String00003.hs b/plugin/src/test/resources/fixtures/eta/sources/String00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00003.hs diff --git a/src/test/resources/fixtures/eta/sources/String00004.hs b/plugin/src/test/resources/fixtures/eta/sources/String00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00004.hs diff --git a/src/test/resources/fixtures/eta/sources/String00005.hs b/plugin/src/test/resources/fixtures/eta/sources/String00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00005.hs diff --git a/src/test/resources/fixtures/eta/sources/String00006.hs b/plugin/src/test/resources/fixtures/eta/sources/String00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00006.hs diff --git a/src/test/resources/fixtures/eta/sources/String00007.hs b/plugin/src/test/resources/fixtures/eta/sources/String00007.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/String00007.hs rename to plugin/src/test/resources/fixtures/eta/sources/String00007.hs diff --git a/src/test/resources/fixtures/eta/sources/TempHask00001.hs b/plugin/src/test/resources/fixtures/eta/sources/TempHask00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/TempHask00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/TempHask00001.hs diff --git a/src/test/resources/fixtures/eta/sources/TempHask00002.hs b/plugin/src/test/resources/fixtures/eta/sources/TempHask00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/TempHask00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/TempHask00002.hs diff --git a/src/test/resources/fixtures/eta/sources/TempHask00003.hs b/plugin/src/test/resources/fixtures/eta/sources/TempHask00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/TempHask00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/TempHask00003.hs diff --git a/src/test/resources/fixtures/eta/sources/TempHask00004.hs b/plugin/src/test/resources/fixtures/eta/sources/TempHask00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/TempHask00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/TempHask00004.hs diff --git a/src/test/resources/fixtures/eta/sources/TempHask00005.hs b/plugin/src/test/resources/fixtures/eta/sources/TempHask00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/TempHask00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/TempHask00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00002.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00002.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00002.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00002.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00003.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00003.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00003.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00003.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00004.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00004.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00004.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00004.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00005.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00005.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00005.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00005.hs diff --git a/src/test/resources/fixtures/eta/sources/Type00006.hs b/plugin/src/test/resources/fixtures/eta/sources/Type00006.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Type00006.hs rename to plugin/src/test/resources/fixtures/eta/sources/Type00006.hs diff --git a/src/test/resources/fixtures/eta/sources/Unicode00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Unicode00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Unicode00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Unicode00001.hs diff --git a/src/test/resources/fixtures/eta/sources/Var00001.hs b/plugin/src/test/resources/fixtures/eta/sources/Var00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/Var00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/Var00001.hs diff --git a/src/test/resources/fixtures/eta/sources/ViewPatterns00001.hs b/plugin/src/test/resources/fixtures/eta/sources/ViewPatterns00001.hs similarity index 100% rename from src/test/resources/fixtures/eta/sources/ViewPatterns00001.hs rename to plugin/src/test/resources/fixtures/eta/sources/ViewPatterns00001.hs diff --git a/settings.gradle b/settings.gradle index 30e5feb..22b3c71 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1,3 @@ rootProject.name = 'intellij-eta' + +include 'plugin', 'jps-shared', 'jps-plugin', 'ffigen' diff --git a/tools/run-jflex b/tools/run-jflex index a998f01..3f54166 100755 --- a/tools/run-jflex +++ b/tools/run-jflex @@ -18,7 +18,7 @@ usage() { # Names without extensions, this way we can add .java or .flex as needed. names=( -src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer +plugin/src/main/java/com/typelead/intellij/plugin/eta/lang/lexer/_EtaSyntaxHighlightingLexer ) main() { diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..cfefe08 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.0.1-SNAPSHOT