diff --git a/extide/gradle.editor/build.xml b/extide/gradle.editor/build.xml
new file mode 100644
index 0000000..2f8c2f7
--- /dev/null
+++ b/extide/gradle.editor/build.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project basedir="." default="build" name="extide/gradle.editor">
+    <description>Builds, tests, and runs the project org.netbeans.modules.gradle.editor</description>
+    <import file="../../nbbuild/templates/projectized.xml"/>
+</project>
+
diff --git a/extide/gradle.editor/manifest.mf b/extide/gradle.editor/manifest.mf
new file mode 100644
index 0000000..47d1710
--- /dev/null
+++ b/extide/gradle.editor/manifest.mf
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+AutoUpdate-Show-In-Client: true
+OpenIDE-Module: org.netbeans.modules.gradle.editor
+OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/gradle/editor/Bundle.properties
+OpenIDE-Module-Specification-Version: 1.0
diff --git a/extide/gradle.editor/nbproject/project.properties b/extide/gradle.editor/nbproject/project.properties
new file mode 100644
index 0000000..0c0bc24
--- /dev/null
+++ b/extide/gradle.editor/nbproject/project.properties
@@ -0,0 +1,25 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+is.eager=true
+javac.source=1.8
+javac.compilerargs=-Xlint -Xlint:-serial
+
+nbm.module.author=Laszlo Kishalmi
+
+test-unit-sys-prop.test.netbeans.dest.dir=${netbeans.dest.dir}
+test-unit-sys-prop.java.awt.headless=true
diff --git a/extide/gradle.editor/nbproject/project.xml b/extide/gradle.editor/nbproject/project.xml
new file mode 100644
index 0000000..cc44a43
--- /dev/null
+++ b/extide/gradle.editor/nbproject/project.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.apisupport.project</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+            <code-name-base>org.netbeans.modules.gradle.editor</code-name-base>
+            <module-dependencies>
+                <dependency>
+                    <code-name-base>org.netbeans.api.annotations.common</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.45</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.api.lsp</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.11</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>3</release-version>
+                        <specification-version>1.104</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor.completion</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.62</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor.document</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>1.26</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor.lib</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>3</release-version>
+                        <specification-version>4.24</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor.lib2</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>2.37</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.editor.mimelookup</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.57</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.gradle</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>2</release-version>
+                        <specification-version>2.12</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.modules.projectapi</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>1</release-version>
+                        <specification-version>1.87</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.netbeans.spi.editor.hints</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <release-version>0</release-version>
+                        <specification-version>1.59</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.filesystems</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.29</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.nodes</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>7.62</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.text</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>6.85</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.25</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util.lookup</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>8.51</specification-version>
+                    </run-dependency>
+                </dependency>
+                <dependency>
+                    <code-name-base>org.openide.util.ui</code-name-base>
+                    <build-prerequisite/>
+                    <compile-dependency/>
+                    <run-dependency>
+                        <specification-version>9.25</specification-version>
+                    </run-dependency>
+                </dependency>
+            </module-dependencies>
+            <test-dependencies>
+                <test-type>
+                    <name>unit</name>
+                    <test-dependency>
+                        <code-name-base>org.netbeans.libs.junit4</code-name-base>
+                        <compile-dependency/>
+                    </test-dependency>
+                    <test-dependency>
+                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
+                        <recursive/>
+                        <compile-dependency/>
+                    </test-dependency>
+                </test-type>
+            </test-dependencies>
+            <public-packages/>
+        </data>
+    </configuration>
+</project>
diff --git a/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/Bundle.properties b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/Bundle.properties
new file mode 100644
index 0000000..ec39c31
--- /dev/null
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/Bundle.properties
@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+OpenIDE-Module-Display-Category=Gradle
+OpenIDE-Module-Name=Gradle Editor Support
+OpenIDE-Module-Short-Description=Additional support working on Gradle files.
+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/MimeTypes.java
similarity index 70%
copy from extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java
copy to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/MimeTypes.java
index f27efc0..dda7957 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/MimeTypes.java
@@ -16,23 +16,18 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-package org.netbeans.modules.gradle.execute;
-
-import org.netbeans.modules.editor.NbEditorKit;
+package org.netbeans.modules.gradle.editor;
 
 /**
  *
  * @author lkishalmi
  */
+public final class MimeTypes {
 
-public class GradleCliEditorKit extends NbEditorKit {
+    public static final String GRADLE_CLI = "text/x-gradle-cli"; //NOI18N
+    public static final String GRADLE_FILE = "text/x-gradle+x-groovy"; //NOI18N
+    public static final String GRADLE_KOTLIN_FILE = "text/x-gradle+x-kotlin"; //NOI18N
 
-    public static final String MIME_TYPE = "text/x-gradle-cli"; //NOI18N
-
-    @Override
-    public String getContentType() {
-        return MIME_TYPE; 
-    }
-
+    private MimeTypes() {}
 }
+
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProvider.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProvider.java
similarity index 98%
rename from extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProvider.java
rename to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProvider.java
index faaceac..c9dde04 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProvider.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProvider.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.netbeans.modules.gradle.execute;
+package org.netbeans.modules.gradle.editor.cli;
 
 import org.netbeans.modules.gradle.api.GradleBaseProject;
 import org.netbeans.modules.gradle.api.GradleTask;
@@ -263,7 +263,7 @@
     
     private static class GradleTaskCompletionItem extends AbstractGradleCompletionItem {
 
-        @StaticResource
+        //This resource is from Gradle Projects module
         private static final String TASK_ICON = "org/netbeans/modules/gradle/resources/gradle-task.gif"; //NOI18N
         private static final ImageIcon TASK_IMAGEICON = ImageUtilities.loadImageIcon(TASK_ICON, false);
 
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliEditorKit.java
similarity index 95%
rename from extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java
rename to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliEditorKit.java
index f27efc0..88fe888 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleCliEditorKit.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/cli/GradleCliEditorKit.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.netbeans.modules.gradle.execute;
+package org.netbeans.modules.gradle.editor.cli;
 
 import org.netbeans.modules.editor.NbEditorKit;
 
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsInvoker.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsInvoker.java
similarity index 94%
rename from extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsInvoker.java
rename to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsInvoker.java
index 9fdd614..5c780e5 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsInvoker.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsInvoker.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.gradle.editor;
+package org.netbeans.modules.gradle.editor.hints;
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
@@ -26,8 +26,8 @@
 import org.netbeans.api.editor.document.EditorDocumentUtils;
 import org.netbeans.api.project.FileOwnerQuery;
 import org.netbeans.api.project.Project;
-import org.netbeans.modules.gradle.GradleDataObject;
 import org.netbeans.modules.gradle.api.NbGradleProject;
+import org.netbeans.modules.gradle.editor.MimeTypes;
 import org.netbeans.spi.project.LookupProvider;
 import org.openide.filesystems.FileObject;
 import org.openide.util.Lookup;
@@ -86,7 +86,7 @@
                 if (fo == null) {
                     return;
                 }
-                if (!GradleDataObject.MIME_TYPE.equals(fo.getMIMEType())) {
+                if (!(MimeTypes.GRADLE_FILE.equals(fo.getMIMEType()) || MimeTypes.GRADLE_KOTLIN_FILE.equals(fo.getMIMEType()))) {
                     return;
                 }
                 
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsProvider.java
similarity index 98%
rename from extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java
rename to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsProvider.java
index e275c81..3783764 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/editor/GradleHintsProvider.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/GradleHintsProvider.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.gradle.editor;
+package org.netbeans.modules.gradle.editor.hints;
 
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/editor/LspErrorProvider.java b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/LspErrorProvider.java
similarity index 91%
rename from extide/gradle/src/org/netbeans/modules/gradle/editor/LspErrorProvider.java
rename to extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/LspErrorProvider.java
index 58e9e64..02357d1 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/editor/LspErrorProvider.java
+++ b/extide/gradle.editor/src/org/netbeans/modules/gradle/editor/hints/LspErrorProvider.java
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.gradle.editor;
+package org.netbeans.modules.gradle.editor.hints;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
-import javax.swing.text.BadLocationException;
 import org.netbeans.api.editor.document.EditorDocumentUtils;
 import org.netbeans.api.editor.document.LineDocument;
 import org.netbeans.api.editor.document.LineDocumentUtils;
@@ -30,8 +29,8 @@
 import org.netbeans.api.lsp.Diagnostic;
 import org.netbeans.api.project.FileOwnerQuery;
 import org.netbeans.api.project.Project;
-import org.netbeans.modules.gradle.GradleDataObject;
 import org.netbeans.modules.gradle.api.GradleReport;
+import org.netbeans.modules.gradle.editor.MimeTypes;
 import org.netbeans.spi.lsp.ErrorProvider;
 import org.openide.filesystems.FileObject;
 
@@ -39,12 +38,12 @@
  * Bridges GradleReports to LSP API
  * @author sdedic
  */
-@MimeRegistration(service = ErrorProvider.class, mimeType = GradleDataObject.MIME_TYPE)
+@MimeRegistration(service = ErrorProvider.class, mimeType = MimeTypes.GRADLE_FILE)
 public class LspErrorProvider implements ErrorProvider {
     @Override
     public List<? extends Diagnostic> computeErrors(Context context) {
         FileObject fo = context.file();
-        if (fo == null || !fo.getMIMEType(GradleDataObject.MIME_TYPE).equals(GradleDataObject.MIME_TYPE)) {
+        if (fo == null || !fo.getMIMEType(MimeTypes.GRADLE_FILE).equals(MimeTypes.GRADLE_FILE)) {
             return Collections.emptyList();
         }
         
diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProviderTest.java b/extide/gradle.editor/test/unit/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProviderTest.java
similarity index 95%
rename from extide/gradle/test/unit/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProviderTest.java
rename to extide/gradle.editor/test/unit/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProviderTest.java
index f49950e..465c7a2 100644
--- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/execute/GradleCliCompletionProviderTest.java
+++ b/extide/gradle.editor/test/unit/src/org/netbeans/modules/gradle/editor/cli/GradleCliCompletionProviderTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.netbeans.modules.gradle.execute;
+package org.netbeans.modules.gradle.editor.cli;
 
 import org.junit.Test;
 import static org.junit.Assert.*;
diff --git a/extide/gradle/nbproject/project.xml b/extide/gradle/nbproject/project.xml
index 024a392..acec092 100644
--- a/extide/gradle/nbproject/project.xml
+++ b/extide/gradle/nbproject/project.xml
@@ -44,15 +44,6 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.api.lsp</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.9</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.netbeans.api.progress</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
@@ -88,24 +79,6 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.editor</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>3</release-version>
-                        <specification-version>1.87.1.6.3.23.55</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.editor.completion</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.44.1.2</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.netbeans.modules.editor.document</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
@@ -114,42 +87,6 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.modules.editor.lib</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>3</release-version>
-                        <specification-version>4.7.1.23.3.55</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.editor.lib2</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>2.36</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.editor.mimelookup</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.40.1</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
-                    <code-name-base>org.netbeans.modules.editor.util</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>1</release-version>
-                        <specification-version>1.81</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.netbeans.modules.extexecution</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
@@ -212,15 +149,6 @@
                     </run-dependency>
                 </dependency>
                 <dependency>
-                    <code-name-base>org.netbeans.spi.editor.hints</code-name-base>
-                    <build-prerequisite/>
-                    <compile-dependency/>
-                    <run-dependency>
-                        <release-version>0</release-version>
-                        <specification-version>1.58</specification-version>
-                    </run-dependency>
-                </dependency>
-                <dependency>
                     <code-name-base>org.netbeans.spi.navigator</code-name-base>
                     <build-prerequisite/>
                     <compile-dependency/>
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/configurations/NewConfigurationPanel.java b/extide/gradle/src/org/netbeans/modules/gradle/configurations/NewConfigurationPanel.java
index f16413b..cf3e300 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/configurations/NewConfigurationPanel.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/configurations/NewConfigurationPanel.java
@@ -31,7 +31,6 @@
 import javax.swing.text.EditorKit;
 import org.netbeans.api.project.Project;
 import org.netbeans.modules.gradle.api.execute.GradleExecConfiguration;
-import org.netbeans.modules.gradle.execute.GradleCliEditorKit;
 import org.openide.NotificationLineSupport;
 import org.openide.filesystems.FileUtil;
 import org.openide.text.CloneableEditorSupport;
@@ -54,7 +53,7 @@
         this.configProvider = confProvider;
 
         initComponents();
-        EditorKit kit = CloneableEditorSupport.getEditorKit(GradleCliEditorKit.MIME_TYPE);
+        EditorKit kit = CloneableEditorSupport.getEditorKit("text/x-gradle-cli"); //NOI18N
         txParameters.setEditorKit(kit);
         txParameters.getDocument().putProperty(Document.StreamDescriptionProperty, project);
         if (isNew) {
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/customizer/BuildActionsCustomizer.java b/extide/gradle/src/org/netbeans/modules/gradle/customizer/BuildActionsCustomizer.java
index 2ec0baf..bacfc49 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/customizer/BuildActionsCustomizer.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/customizer/BuildActionsCustomizer.java
@@ -21,7 +21,6 @@
 
 import org.netbeans.modules.gradle.api.execute.ActionMapping;
 import org.netbeans.modules.gradle.spi.actions.ProjectActionMappingProvider;
-import org.netbeans.modules.gradle.execute.GradleCliEditorKit;
 import java.awt.CardLayout;
 import java.awt.Component;
 import java.awt.Font;
@@ -102,7 +101,7 @@
         actionRegistry = new CustomActionRegistrationSupport(project);
         lsActions.setCellRenderer(new MyListCellRenderer());
         tfLabel.getDocument().addDocumentListener(applyListener);
-        EditorKit kit = CloneableEditorSupport.getEditorKit(GradleCliEditorKit.MIME_TYPE);
+        EditorKit kit = CloneableEditorSupport.getEditorKit("text/x-gradle-cli"); //NOI18N
         taArgs.setEditorKit(kit);
         taArgs.getDocument().putProperty(Document.StreamDescriptionProperty, project);
         taArgs.getDocument().addDocumentListener(applyListener);
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleExecutorOptionsPanel.java b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleExecutorOptionsPanel.java
index fdd4007..6f3cca7 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleExecutorOptionsPanel.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/execute/GradleExecutorOptionsPanel.java
@@ -47,7 +47,7 @@
     public GradleExecutorOptionsPanel(Project project) {
         this.project = project;
         initComponents();
-        EditorKit kit = CloneableEditorSupport.getEditorKit(GradleCliEditorKit.MIME_TYPE);
+        EditorKit kit = CloneableEditorSupport.getEditorKit("text/x-gradle-cli"); //NOI18N
         epCLI.setEditorKit(kit);
         if (project != null) {
             epCLI.getDocument().putProperty(Document.StreamDescriptionProperty, project);
diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties
index bb59882..db00d72 100644
--- a/nbbuild/cluster.properties
+++ b/nbbuild/cluster.properties
@@ -1494,6 +1494,7 @@
 nb.cluster.extide=\
         gradle,\
         gradle.dists,\
+        gradle.editor,\
         libs.gradle,\
         o.apache.tools.ant.module,\
         options.java
