diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
index 167a17e34..913e99c71 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
@@ -162,7 +162,7 @@
+ editorId="org.springframework.tooling.ls.eclipse.commons.YamlGenericEditor">
@@ -42,7 +42,7 @@
point="org.eclipse.ui.editors">
+ editorId="org.springframework.tooling.ls.eclipse.commons.YamlGenericEditor">
diff --git a/eclipse-language-servers/org.springframework.tooling.concourse.ls/plugin.xml b/eclipse-language-servers/org.springframework.tooling.concourse.ls/plugin.xml
index 87510270d..0411ef639 100644
--- a/eclipse-language-servers/org.springframework.tooling.concourse.ls/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.concourse.ls/plugin.xml
@@ -34,7 +34,7 @@
point="org.eclipse.ui.editors">
+ editorId="org.springframework.tooling.ls.eclipse.commons.YamlGenericEditor">
@@ -42,7 +42,7 @@
point="org.eclipse.ui.editors">
+ editorId="org.springframework.tooling.ls.eclipse.commons.YamlGenericEditor">
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/META-INF/MANIFEST.MF b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/META-INF/MANIFEST.MF
index b8d624137..9c2d1aeb3 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/META-INF/MANIFEST.MF
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/META-INF/MANIFEST.MF
@@ -19,7 +19,9 @@ Require-Bundle: org.eclipse.jdt.launching;bundle-version="3.8.0",
org.eclipse.ui.ide,
org.eclipse.jdt.core,
org.eclipse.jdt.ui,
- org.apache.commons.lang3
+ org.apache.commons.lang3,
+ org.eclipse.ui.genericeditor,
+ org.eclipse.ui.editors
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Export-Package: org.springframework.tooling.ls.eclipse.commons,
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
index cf580e9d0..8d2bdda10 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
@@ -38,6 +38,9 @@
+
+
@@ -49,4 +52,15 @@
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditor.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditor.java
new file mode 100644
index 000000000..2424764cc
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditor.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.tooling.ls.eclipse.commons;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.editors.text.EditorsUI;
+import org.eclipse.ui.internal.genericeditor.ExtensionBasedTextEditor;
+import org.eclipse.ui.texteditor.ChainedPreferenceStore;
+
+/**
+ * YAML editor based on Generic editor.
+ * Has spaces rather than tab for indentation
+ *
+ * @author Alex Boyko
+ *
+ */
+@SuppressWarnings("restriction")
+public class YamlGenericEditor extends ExtensionBasedTextEditor {
+
+ @Override
+ protected boolean isTabsToSpacesConversionEnabled() {
+ return true;
+ }
+
+ @Override
+ protected void initializeEditor() {
+ super.initializeEditor();
+
+ List stores = new ArrayList<>(3);
+ stores.add(LanguageServerCommonsActivator.getInstance().getPreferenceStore());
+ stores.add(EditorsUI.getPreferenceStore());
+ stores.add(PlatformUI.getPreferenceStore());
+
+ setPreferenceStore(new ChainedPreferenceStore(stores.toArray(new IPreferenceStore[stores.size()])));
+
+ }
+
+}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditorPreferencesInitializer.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditorPreferencesInitializer.java
new file mode 100644
index 000000000..fe65dd44d
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/YamlGenericEditorPreferencesInitializer.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2018 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.tooling.ls.eclipse.commons;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
+
+/**
+ * Initializers of preferences for Generic editor for YAML ls extensions
+ *
+ * @author Alex Boyko
+ *
+ */
+public class YamlGenericEditorPreferencesInitializer extends AbstractPreferenceInitializer {
+
+ @Override
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = LanguageServerCommonsActivator.getInstance().getPreferenceStore();
+ store.setDefault(AbstractDecoratedTextEditorPreferenceConstants.EDITOR_TAB_WIDTH, 2);
+ }
+
+}