diff --git a/docmlet/org.eclipse.statet.docmlet.base.ui/META-INF/MANIFEST.MF b/docmlet/org.eclipse.statet.docmlet.base.ui/META-INF/MANIFEST.MF
index 33340cd..ae3b5c8 100644
--- a/docmlet/org.eclipse.statet.docmlet.base.ui/META-INF/MANIFEST.MF
+++ b/docmlet/org.eclipse.statet.docmlet.base.ui/META-INF/MANIFEST.MF
@@ -40,6 +40,7 @@
  org.eclipse.statet.ecommons.variables.core,
  org.eclipse.statet.jcommons.collections;version="4.4.0",
  org.eclipse.statet.jcommons.lang;version="4.4.0",
+ org.eclipse.statet.jcommons.runtime;version="4.4.0",
  org.eclipse.statet.jcommons.status;version="4.4.0",
  org.eclipse.statet.jcommons.text.core;version="4.4.0"
 Export-Package: org.eclipse.statet.docmlet.base.ui,
diff --git a/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/docmlet/base/ui/processing/DocProcessingToolProcess.java b/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/docmlet/base/ui/processing/DocProcessingToolProcess.java
index e71858f..eab8cb7 100644
--- a/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/docmlet/base/ui/processing/DocProcessingToolProcess.java
+++ b/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/docmlet/base/ui/processing/DocProcessingToolProcess.java
@@ -15,6 +15,7 @@
 package org.eclipse.statet.docmlet.base.ui.processing;
 
 import static org.eclipse.statet.jcommons.lang.ObjectUtils.nonNullAssert;
+import static org.eclipse.statet.jcommons.status.Status.CANCEL_STATUS;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +40,6 @@
 
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
-import org.eclipse.statet.jcommons.status.Statuses;
 
 import org.eclipse.statet.ecommons.debug.core.model.AbstractProcess;
 import org.eclipse.statet.ecommons.runtime.core.util.EnrichProgressMonitor;
@@ -183,9 +183,9 @@
 	
 	public void log(final org.eclipse.statet.jcommons.status.Status status) {
 		synchronized (this.status) {
-			if (status.getSeverity() == Status.CANCEL
+			if (status.getSeverity() == org.eclipse.statet.jcommons.status.Status.CANCEL
 					&& (this.status.getSeverity() == IStatus.ERROR
-					|| (this.status.getSeverity() == IStatus.CANCEL && status == Statuses.CANCEL_STATUS) )) {
+					|| (this.status.getSeverity() == IStatus.CANCEL && status == CANCEL_STATUS) )) {
 				return;
 			}
 			this.status.add(StatusUtils.convert(status));
diff --git a/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/internal/docmlet/base/ui/viewer/DocViewerLaunchDelegate.java b/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/internal/docmlet/base/ui/viewer/DocViewerLaunchDelegate.java
index 5556586..39819e0 100644
--- a/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/internal/docmlet/base/ui/viewer/DocViewerLaunchDelegate.java
+++ b/docmlet/org.eclipse.statet.docmlet.base.ui/src/org/eclipse/statet/internal/docmlet/base/ui/viewer/DocViewerLaunchDelegate.java
@@ -29,6 +29,8 @@
 import org.eclipse.debug.core.model.IProcess;
 import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
 
+import org.eclipse.statet.jcommons.runtime.ProcessUtils;
+
 import org.eclipse.statet.ecommons.debug.core.util.LaunchUtils;
 import org.eclipse.statet.ecommons.io.win.DDE;
 import org.eclipse.statet.ecommons.io.win.DDEClient;
@@ -118,7 +120,7 @@
 				
 				final IProcess process= DebugPlugin.newProcess(launch, runtimeProcess, processName);
 				
-				process.setAttribute(IProcess.ATTR_CMDLINE, LaunchUtils.generateCommandLine(
+				process.setAttribute(IProcess.ATTR_CMDLINE, ProcessUtils.generateCommandLine(
 						processBuilder.command() ));
 			}
 			
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.ui/META-INF/MANIFEST.MF b/docmlet/org.eclipse.statet.docmlet.tex.ui/META-INF/MANIFEST.MF
index 52c5c48..0c68f3e 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.ui/META-INF/MANIFEST.MF
+++ b/docmlet/org.eclipse.statet.docmlet.tex.ui/META-INF/MANIFEST.MF
@@ -30,7 +30,8 @@
  org.eclipse.statet.jcommons.lang;version="4.4.0",
  org.eclipse.statet.jcommons.string;version="4.4.0",
  org.eclipse.statet.jcommons.text.core;version="4.4.0",
- org.eclipse.statet.jcommons.text.core.input;version="4.4.0"
+ org.eclipse.statet.jcommons.text.core.input;version="4.4.0",
+ org.eclipse.statet.jcommons.util;version="4.4.0"
 Export-Package: org.eclipse.statet.docmlet.tex.ui,
  org.eclipse.statet.docmlet.tex.ui.actions,
  org.eclipse.statet.docmlet.tex.ui.editors,
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleFoldingHandler.java b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleFoldingHandler.java
index 7db4813..7a493b9 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleFoldingHandler.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleFoldingHandler.java
@@ -16,7 +16,9 @@
 
 import org.eclipse.ui.editors.text.IFoldingCommandIds;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.docmlet.tex.ui.sourceediting.TexEditingSettings;
 
@@ -24,7 +26,8 @@
 /**
  * Toggles enablement of code folding in Tex editors.
  */
-public class TexToggleFoldingHandler extends TogglePreferenceEnablementHandler {
+@NonNullByDefault
+public class TexToggleFoldingHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public TexToggleFoldingHandler() {
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleMarkOccurrencesHandler.java b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleMarkOccurrencesHandler.java
index 191ed59..c693a74 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleMarkOccurrencesHandler.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/docmlet/tex/ui/actions/TexToggleMarkOccurrencesHandler.java
@@ -14,7 +14,9 @@
 
 package org.eclipse.statet.docmlet.tex.ui.actions;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.docmlet.tex.ui.sourceediting.TexEditingSettings;
 
@@ -22,7 +24,8 @@
 /**
  * Toggles enablement of mark occurrences in Tex editors.
  */
-public class TexToggleMarkOccurrencesHandler extends TogglePreferenceEnablementHandler {
+@NonNullByDefault
+public class TexToggleMarkOccurrencesHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public TexToggleMarkOccurrencesHandler() {
diff --git a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/HardLineWrap.java b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/HardLineWrap.java
index 320049d..35ec382 100644
--- a/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/HardLineWrap.java
+++ b/docmlet/org.eclipse.statet.docmlet.tex.ui/src/org/eclipse/statet/internal/docmlet/tex/ui/editors/HardLineWrap.java
@@ -25,6 +25,8 @@
 import org.eclipse.jface.text.TextUtilities;
 import org.eclipse.ui.statushandlers.StatusManager;
 
+import org.eclipse.statet.jcommons.util.StringUtils;
+
 import org.eclipse.statet.docmlet.tex.ui.TexUI;
 
 
@@ -112,17 +114,11 @@
 	 * @return
 	 */
 	private static boolean isSingleLine(final String line) {
-		if (line.length() == 0) {
-			return true;
-		}
-		if (line.startsWith("%")) {
-			return true;
-		}
-		if ((line.startsWith("\\") && line.length() == 2))
-		 {
-			return true; // e.g. \\ or \[
-		}
-		if (line.startsWith("\\item")) {
+		if (line.isEmpty()
+				|| line.startsWith("%")
+				|| line.startsWith("\\") && line.length() == 2 // e.g. \\ or \[
+				|| line.startsWith("\\item")
+				) {
 			return true;
 		}
 		final Matcher m= simpleCommandPattern.matcher(line);
@@ -422,7 +418,7 @@
 	 * 				<code>false</code> otherwise
 	 */
 	public static boolean isLineCommentLine(final String text) {
-		return text.trim().startsWith("%");
+		return text.startsWith("%", StringUtils.firstIndexOfNonTrim(text));
 	}
 	
 	/**
diff --git a/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleFoldingHandler.java b/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleFoldingHandler.java
index 2a2ba16..8f869f6 100644
--- a/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleFoldingHandler.java
+++ b/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleFoldingHandler.java
@@ -16,7 +16,7 @@
 
 import org.eclipse.ui.editors.text.IFoldingCommandIds;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.docmlet.wikitext.ui.sourceediting.WikitextEditingSettings;
 
@@ -24,7 +24,7 @@
 /**
  * Toggles enablement of code folding in Wikitext editors.
  */
-public class WikitextToggleFoldingHandler extends TogglePreferenceEnablementHandler {
+public class WikitextToggleFoldingHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public WikitextToggleFoldingHandler() {
diff --git a/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleMarkOccurrencesHandler.java b/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleMarkOccurrencesHandler.java
index b8f114d..0d78f64 100644
--- a/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleMarkOccurrencesHandler.java
+++ b/docmlet/org.eclipse.statet.docmlet.wikitext.ui/src/org/eclipse/statet/docmlet/wikitext/ui/actions/WikitextToggleMarkOccurrencesHandler.java
@@ -14,7 +14,7 @@
 
 package org.eclipse.statet.docmlet.wikitext.ui.actions;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.docmlet.wikitext.ui.sourceediting.WikitextEditingSettings;
 
@@ -22,7 +22,7 @@
 /**
  * Toggles enablement of mark occurrences in Wikitext editors.
  */
-public class WikitextToggleMarkOccurrencesHandler extends TogglePreferenceEnablementHandler {
+public class WikitextToggleMarkOccurrencesHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public WikitextToggleMarkOccurrencesHandler() {
diff --git a/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleFoldingHandler.java b/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleFoldingHandler.java
index 99926e4..bbc04bc 100644
--- a/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleFoldingHandler.java
+++ b/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleFoldingHandler.java
@@ -16,7 +16,9 @@
 
 import org.eclipse.ui.editors.text.IFoldingCommandIds;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.yaml.ui.sourceediting.YamlEditingSettings;
 
@@ -24,7 +26,8 @@
 /**
  * Toggles enablement of code folding in YAML editors.
  */
-public class YamlToggleFoldingHandler extends TogglePreferenceEnablementHandler {
+@NonNullByDefault
+public class YamlToggleFoldingHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public YamlToggleFoldingHandler() {
diff --git a/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleMarkOccurrencesHandler.java b/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleMarkOccurrencesHandler.java
index 7ffe19d..e439684 100644
--- a/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleMarkOccurrencesHandler.java
+++ b/yaml/org.eclipse.statet.yaml.ui/src/org/eclipse/statet/yaml/ui/actions/YamlToggleMarkOccurrencesHandler.java
@@ -14,7 +14,9 @@
 
 package org.eclipse.statet.yaml.ui.actions;
 
-import org.eclipse.statet.ecommons.ui.actions.TogglePreferenceEnablementHandler;
+import org.eclipse.statet.jcommons.lang.NonNullByDefault;
+
+import org.eclipse.statet.ecommons.ui.actions.ToggleBooleanPreferenceHandler;
 
 import org.eclipse.statet.yaml.ui.sourceediting.YamlEditingSettings;
 
@@ -22,7 +24,8 @@
 /**
  * Toggles enablement of mark occurrences in YAML editors.
  */
-public class YamlToggleMarkOccurrencesHandler extends TogglePreferenceEnablementHandler {
+@NonNullByDefault
+public class YamlToggleMarkOccurrencesHandler extends ToggleBooleanPreferenceHandler {
 	
 	
 	public YamlToggleMarkOccurrencesHandler() {
