diff --git a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
index ae54785..7b90c90 100644
--- a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
+++ b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
@@ -76,6 +76,7 @@
 import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
 import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
 import org.eclipse.statet.ltk.ui.templates.config.EditTemplateDialog;
+import org.eclipse.statet.ltk.ui.templates.config.TemplateConfigUI;
 
 
 /**
@@ -370,7 +371,8 @@
 				EditTemplateDialog.FIX_TEMPLATE,
 				this.fCategoryProvider[item.getCategoryIndex()].getEditTemplateDialogConfiguator(this.fEditTemplateProcessor, this.fProject),
 				this.fEditTemplateProcessor,
-				this.fCategoryProvider[item.getCategoryIndex()].getContextTypeRegistry());
+				this.fCategoryProvider[item.getCategoryIndex()].getContextTypeRegistry(),
+				TemplateConfigUI.PREF_QUALIFIER );
 		if (dialog.open() == Window.OK) {
 			// changed
 			item.fData.setTemplate(dialog.getTemplate());
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
index df3d994..f648539 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
@@ -51,6 +51,7 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.ecommons.databinding.IntegerValidator;
 import org.eclipse.statet.ecommons.databinding.jface.SWTMultiEnabledObservable;
@@ -63,6 +64,7 @@
 
 import org.eclipse.statet.internal.r.console.ui.Messages;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditorObservable;
 import org.eclipse.statet.nico.core.util.HistoryTrackingConfiguration;
 import org.eclipse.statet.nico.core.util.TrackingConfiguration;
@@ -71,6 +73,7 @@
 import org.eclipse.statet.nico.ui.util.TrackingConfigurationDialog;
 import org.eclipse.statet.r.console.ui.launching.RConsoleLaunching;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -122,7 +125,7 @@
 	private ButtonGroup<TrackingConfiguration> trackingButtons;
 	private int trackingMaxCustomId;
 	
-	private SnippetEditor startupSnippetEditor;
+	private SnippetEditor1 startupSnippetEditor;
 	
 	private Button rHelpByStatetControl;
 	private Button rGraphicsByStatetControl;
@@ -285,7 +288,8 @@
 		final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 				RCore.WORKBENCH_ACCESS,
 				templateVariableProcessor );
-		this.startupSnippetEditor= new SnippetEditor(configurator);
+		this.startupSnippetEditor= new SnippetEditor1(configurator, null,
+				PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
 		this.startupSnippetEditor.create(container, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
 		final GridData gd= new GridData(SWT.FILL, SWT.FILL, true, true);
 		gd.heightHint= LayoutUtil.hintHeight(this.startupSnippetEditor.getSourceViewer().getTextWidget(), 8);
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
index 64d565d..a9e1d69 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
@@ -56,6 +56,7 @@
 import org.eclipse.statet.ltk.ui.templates.config.TemplateCategory;
 import org.eclipse.statet.ltk.ui.templates.config.TemplateStoreContribution;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.RUI;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -138,7 +139,8 @@
 				final SourceEditorViewerConfigurator configurator,
 				final TemplateVariableProcessor processor, final ContextTypeRegistry registry,
 				final RSnippets snippets) {
-			super(parent, template, edit, flags, configurator, processor, registry);
+			super(parent, template, edit, flags, configurator, processor, registry,
+					RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
 			this.snippets= snippets;
 		}
 		
@@ -227,7 +229,7 @@
 			final ContextTypeRegistry registry) {
 		return new RSnippetEditDialog(getShell(), template,
 				((command & ButtonGroup.ADD_ANY) != 0), EditTemplateDialog.CUSTOM_TEMPLATE,
-				configurator, processor, registry, this.snippets);
+				configurator, processor, registry, this.snippets );
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java
new file mode 100644
index 0000000..f785d5f
--- /dev/null
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java
@@ -0,0 +1,30 @@
+/*=============================================================================#
+ # Copyright (c) 2017, 2018 Stephan Wahlbrink and others.
+ # 
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
+ # which is available at https://www.apache.org/licenses/LICENSE-2.0.
+ # 
+ # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
+ # 
+ # Contributors:
+ #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
+ #=============================================================================*/
+
+package org.eclipse.statet.r.launching.ui;
+
+import org.eclipse.statet.r.ui.RUI;
+
+
+public class RLaunchingUI {
+	
+	
+	public static final String QUALIFIER= RUI.BUNDLE_ID + "/launching"; //$NON-NLS-1$
+	
+	public static final String LAUNCH_CONFIG_QUALIFIER= QUALIFIER + "config"; //$NON-NLS-1$
+	
+	
+	private RLaunchingUI() {}
+	
+}
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
index 5acac73..7eebad9 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
@@ -31,6 +31,7 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.ecommons.databinding.core.util.UpdateableErrorValidator;
 import org.eclipse.statet.ecommons.resources.core.variables.ResourceVariables;
@@ -47,7 +48,9 @@
 import org.eclipse.statet.docmlet.base.ui.processing.DocProcessingOperationSettings;
 import org.eclipse.statet.internal.redocs.r.Messages;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -57,7 +60,7 @@
 	
 	private IObservableValue<String> snippetValue;
 	
-	private SnippetEditor snippetEditor;
+	private SnippetEditor1 snippetEditor;
 	private VariableText2 snippetVariableResolver;
 	
 	
@@ -106,7 +109,8 @@
 			final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 					RCore.WORKBENCH_ACCESS,
 					templateVariableProcessor );
-			final SnippetEditor editor= new SnippetEditor(configurator, null, null, true) {
+			final SnippetEditor1 editor= new SnippetEditor1(configurator, null,
+					PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER, true ) {
 				@Override
 				protected void fillToolMenu(final Menu menu) {
 					{	final MenuItem item= new MenuItem(menu, SWT.PUSH);
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
index 4df1357..8d20b2b 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
@@ -54,6 +54,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.statushandlers.StatusManager;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
@@ -68,9 +69,10 @@
 import org.eclipse.statet.ecommons.ui.workbench.ResourceInputComposite;
 
 import org.eclipse.statet.internal.redocs.tex.r.RedocsTexRPlugin;
-import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.cmd.ui.launching.RCmdLaunching;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 import org.eclipse.statet.redocs.r.ui.RedocsRUIResources;
@@ -237,7 +239,7 @@
 	private ILaunchConfigurationListener fLaunchConfigurationListener;
 	private Button fSkipSelectControl;
 	private Button fConsoleSelectControl;
-	private SnippetEditor fConsoleCommandEditor;
+	private SnippetEditor1 fConsoleCommandEditor;
 	
 	private Button fConsoleCommandInsertButton;
 	private Button fCmdLaunchSelectControl;
@@ -336,8 +338,9 @@
 		final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 				RCore.WORKBENCH_ACCESS,
 				templateVariableProcessor );
-		this.fConsoleCommandEditor= new SnippetEditor(configurator);
-		this.fConsoleCommandEditor.create(group, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
+		this.fConsoleCommandEditor= new SnippetEditor1(configurator, null,
+				PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
+		this.fConsoleCommandEditor.create(group, SnippetEditor1.DEFAULT_MULTI_LINE_STYLE);
 		gd= new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
 		gd.heightHint= LayoutUtil.hintHeight(this.fConsoleCommandEditor.getSourceViewer().getTextWidget(), 5);
 		gd.horizontalIndent= LayoutUtil.defaultIndent();
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
index d9bb635..153e845 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
@@ -53,6 +53,7 @@
 import org.eclipse.texlipse.builder.Builder;
 import org.eclipse.texlipse.builder.BuilderChooser;
 import org.eclipse.texlipse.builder.BuilderRegistry;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
 
@@ -66,8 +67,9 @@
 import org.eclipse.statet.ecommons.ui.util.VariableFilterUtils;
 import org.eclipse.statet.ecommons.ui.workbench.ResourceInputComposite;
 
-import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 import org.eclipse.statet.redocs.r.ui.RedocsRUIResources;
@@ -155,7 +157,7 @@
 	private Button fBuildTexFileEclipseControl;
 	private BuilderChooser fBuildTexTypeChooser;
 	private Button fBuildTexFileRControl;
-	private SnippetEditor fConsoleCommandEditor;
+	private SnippetEditor1 fConsoleCommandEditor;
 	private Combo fOutputFormatControl;
 	
 	
@@ -305,7 +307,8 @@
 			final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 					RCore.WORKBENCH_ACCESS,
 					templateVariableProcessor );
-			this.fConsoleCommandEditor= new SnippetEditor(configurator, null, null, true) {
+			this.fConsoleCommandEditor= new SnippetEditor1(configurator, null,
+					PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER, true ) {
 				@Override
 				protected void fillToolMenu(final Menu menu) {
 					{	final MenuItem item= new MenuItem(menu, SWT.PUSH);
@@ -352,7 +355,7 @@
 					}
 				}
 			};
-			this.fConsoleCommandEditor.create(composite, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
+			this.fConsoleCommandEditor.create(composite, SnippetEditor1.DEFAULT_MULTI_LINE_STYLE);
 			final GridData gd= new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
 			gd.heightHint= LayoutUtil.hintHeight(this.fConsoleCommandEditor.getSourceViewer().getTextWidget(), 5);
 			gd.horizontalIndent= LayoutUtil.defaultIndent();
