Index: tmp/org.txm.tigersearch.rcp/src/org/txm/function/tigersearch/TIGERSearch.java
===================================================================
--- tmp/org.txm.tigersearch.rcp/src/org/txm/function/tigersearch/TIGERSearch.java	(revision 2860)
+++ tmp/org.txm.tigersearch.rcp/src/org/txm/function/tigersearch/TIGERSearch.java	(revision 2861)
@@ -186,8 +186,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
-			String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return tsresult.toXml(outfile);
 	}
 	
Index: tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpI.java
===================================================================
--- tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpI.java	(revision 2860)
+++ tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpI.java	(revision 2861)
@@ -193,7 +193,7 @@
 	 * @return true, if successful
 	 */
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			toTxt(outfile, 0, lines.size(), encoding, colseparator, txtseparator);
 		}
Index: tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ContextSubcorpus.java
===================================================================
--- tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ContextSubcorpus.java	(revision 2860)
+++ tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ContextSubcorpus.java	(revision 2861)
@@ -37,7 +37,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
+	public boolean _toTxt(File outfile, String encoding, String colseparator,
 			String txtseparator) throws Exception {
 		return false;
 	}
Index: tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ValuesOfQuery.java
===================================================================
--- tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ValuesOfQuery.java	(revision 2860)
+++ tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ValuesOfQuery.java	(revision 2861)
@@ -174,8 +174,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
-			String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpII.java
===================================================================
--- tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpII.java	(revision 2860)
+++ tmp/org.txm.cql2lsa.rcp/src/org/txm/functions/cql2lsa/ExpII.java	(revision 2861)
@@ -353,7 +353,7 @@
 	 * @return true, if successful
 	 */
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			toTxt(outfile, 0, lines.size(), encoding, colseparator, txtseparator);
 		}
Index: tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/core/results/TXMResult.java	(revision 2861)
@@ -2023,7 +2023,7 @@
 	public String getValidFileName() {
 		try {
 			// return FILE_NAME_PATTERN.matcher(this.getCurrentName()).replaceAll(UNDERSCORE);
-			return this.getCurrentName().replaceAll("[¤€§µ£°().,;:/?§%\"'*+\\-}\\]\\[{#~&]", "");
+			return this.getCurrentName().replaceAll("[¤€§µ£°().,;:/?§%\"'*+\\-}\\]\\[{#~&@<>]", "");
 		}
 		catch (Exception e) {
 			Log.printStackTrace(e);
@@ -2657,9 +2657,47 @@
 	
 	
 	
-	@Deprecated
+	
+	// 
+	/**
+	 * @Deprecated
+	 * FIXME: SJ: should be moved in an exporter extension
+	 * 
+	 * wrapper to ensure the result is ready to be computed (not computing, computed)
+	 * 
+	 * @param outfile
+	 * @param encoding
+	 * @param colseparator
+	 * @param txtseparator
+	 * @return
+	 * @throws Exception
+	 */
+	public final boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+		if (isComputing()) {
+			Log.warning("The result is currently being computed. Please wait before exporting.");
+			return false;
+		}
+		if (!hasBeenComputedOnce()) {
+			Log.warning("The result was not computed. Please compute the result before exporting.");
+			return false;
+		}
+		return _toTxt(outfile, encoding, colseparator, txtseparator);
+	}
+	
+	/**
+	 * @Deprecated
 	// FIXME: SJ: should be moved in an exporter extension
-	public abstract boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception;
+	 * 
+	 * TXMResults must implement this method to be exported.
+	 * 
+	 * @param outfile
+	 * @param encoding
+	 * @param colseparator
+	 * @param txtseparator
+	 * @return
+	 * @throws Exception
+	 */
+	protected abstract boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception;
 	
 	
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/Workspace.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Workspace.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/objects/Workspace.java	(revision 2861)
@@ -192,7 +192,7 @@
 	
 	@Override
 	@Deprecated
-	public boolean toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
+	public boolean _toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/Project.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/objects/Project.java	(revision 2861)
@@ -965,7 +965,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/Text.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/objects/Text.java	(revision 2861)
@@ -314,7 +314,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/SavedQuery.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/SavedQuery.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/objects/SavedQuery.java	(revision 2861)
@@ -183,7 +183,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.core/src/java/org/txm/objects/Edition.java
===================================================================
--- tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 2860)
+++ tmp/org.txm.core/src/java/org/txm/objects/Edition.java	(revision 2861)
@@ -440,7 +440,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java
===================================================================
--- tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 2860)
+++ tmp/org.txm.concordance.core/src/org/txm/concordance/core/functions/Concordance.java	(revision 2861)
@@ -1553,7 +1553,7 @@
 	@Override
 	@Deprecated
 	// FIXME: should be moved in a exporter RCP extension
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws IOException {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws IOException {
 		
 		// NK: writer declared as class attribute to perform a clean if the operation is interrupted
 		OutputStreamWriter writer = null;
Index: tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java
===================================================================
--- tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java	(revision 2860)
+++ tmp/org.txm.referencer.core/src/org/txm/referencer/core/functions/Referencer.java	(revision 2861)
@@ -518,13 +518,13 @@
 	}
 	
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding) {
+	public boolean toTxt(File outfile, String encoding) throws Exception {
 		return toTxt(outfile, encoding, "\t", ""); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			// NK: writer declared as class attribute to perform a clean if the operation is interrupted
 			this.writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outfile), encoding));
Index: tmp/org.txm.queryindex.rcp/src/org/txm/queryindex/core/functions/QueryIndex.java
===================================================================
--- tmp/org.txm.queryindex.rcp/src/org/txm/queryindex/core/functions/QueryIndex.java	(revision 2860)
+++ tmp/org.txm.queryindex.rcp/src/org/txm/queryindex/core/functions/QueryIndex.java	(revision 2861)
@@ -240,7 +240,7 @@
 	 * @return true, if successful
 	 */
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			toTxt(outfile, 0, lines.size(), encoding, colseparator, txtseparator);
 		}
Index: tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java
===================================================================
--- tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 2860)
+++ tmp/org.txm.ahc.core/src/org/txm/ahc/core/functions/AHC.java	(revision 2861)
@@ -361,7 +361,7 @@
 	// FIXME: SJ: to extract to future exporter extension
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colsep, String txtsep) {
+	public boolean _toTxt(File outfile, String encoding, String colsep, String txtsep) {
 		return toTxt(outfile, encoding);
 	}
 	
Index: tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java
===================================================================
--- tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java	(revision 2860)
+++ tmp/org.txm.internalview.core/src/org/txm/internalview/core/functions/InternalView.java	(revision 2861)
@@ -372,7 +372,7 @@
 	
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		PrintWriter writer = IOUtils.getWriter(outfile, encoding);
 		for (int ipage = 0; ipage < nmatches; ipage++) { // run through all pages
 			LinkedHashMap<Property, List<String>> page = getPageContent(ipage);
Index: tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java
===================================================================
--- tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java	(revision 2860)
+++ tmp/org.txm.textsbalance.core/src/org/txm/textsbalance/core/functions/TextsBalance.java	(revision 2861)
@@ -312,7 +312,7 @@
 
 
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java
===================================================================
--- tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 2860)
+++ tmp/org.txm.partition.core/src/org/txm/partition/core/functions/PartitionDimensions.java	(revision 2861)
@@ -231,7 +231,7 @@
 	
 	
 	@Override
-	public boolean toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
+	public boolean _toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 2860)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/CA.java	(revision 2861)
@@ -915,10 +915,11 @@
 	 * @param outfile the outfile
 	 * @param encoding the encoding
 	 * @return true, if successful
+	 * @throws Exception 
 	 */
 	// FIXME: to move in an exporter extension
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding) {
+	public boolean toTxt(File outfile, String encoding) throws Exception {
 		return toTxt(outfile, encoding, "\t", ""); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
@@ -934,7 +935,7 @@
 	@Override
 	// FIXME: to move in an exporter extension
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		acquireSemaphore();
 		boolean rez = r_ca.toTxt(outfile, encoding, colseparator, txtseparator);
 		releaseSemaphore();
Index: tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java
===================================================================
--- tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 2860)
+++ tmp/org.txm.ca.core/src/org/txm/ca/core/functions/Eigenvalues.java	(revision 2861)
@@ -118,7 +118,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.para.core/src/org/txm/para/core/functions/ParaBrowser.java
===================================================================
--- tmp/org.txm.para.core/src/org/txm/para/core/functions/ParaBrowser.java	(revision 2860)
+++ tmp/org.txm.para.core/src/org/txm/para/core/functions/ParaBrowser.java	(revision 2861)
@@ -255,7 +255,7 @@
 	
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java
===================================================================
--- tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 2860)
+++ tmp/org.txm.wordcloud.core/src/org/txm/wordcloud/core/functions/WordCloud.java	(revision 2861)
@@ -224,7 +224,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java
===================================================================
--- tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 2860)
+++ tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java	(revision 2861)
@@ -686,7 +686,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
+	public boolean _toTxt(File outfile, String encoding, String colseparator,
 			String txtseparator) throws Exception {
 		return toTxt(outfile, encoding);
 	}
Index: tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryAutoCooccurrence.java
===================================================================
--- tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryAutoCooccurrence.java	(revision 2860)
+++ tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryAutoCooccurrence.java	(revision 2861)
@@ -253,8 +253,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
-			String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return toGraphml(outfile);
 	}
 	
Index: tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryCooccurrence.java
===================================================================
--- tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryCooccurrence.java	(revision 2860)
+++ tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryCooccurrence.java	(revision 2861)
@@ -162,8 +162,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator,
-			String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java
===================================================================
--- tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java	(revision 2860)
+++ tmp/org.txm.cooccurrence.chartsengine/src/org/txm/cooccurrence/functions/CooccurrenceGraph.java	(revision 2861)
@@ -154,7 +154,7 @@
 	 * @see org.txm.core.results.TXMResult#toTxt(java.io.File, java.lang.String, java.lang.String, java.lang.String)
 	 */
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 2860)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java	(revision 2861)
@@ -1117,7 +1117,7 @@
 	@Override
 	// FIXME: should be in an exporter extension
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			toTxt(outfile, 0, lines.size(), encoding, colseparator, txtseparator);
 		}
Index: tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java
===================================================================
--- tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java	(revision 2860)
+++ tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java	(revision 2861)
@@ -604,7 +604,7 @@
 	 */
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		// NK: writer declared as class attribute to perform a clean if the operation is interrupted
 		// OutputStreamWriter writer;
 		try {
Index: tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java
===================================================================
--- tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 2860)
+++ tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java	(revision 2861)
@@ -1442,8 +1442,9 @@
 	 * @param outfile the outfile
 	 * @param encoding the encoding
 	 * @return true, if successful
+	 * @throws Exception 
 	 */
-	public boolean toTxt(File outfile, String encoding) {
+	public boolean toTxt(File outfile, String encoding) throws Exception {
 		return toTxt(outfile, encoding, "\t", ""); //$NON-NLS-1$ //$NON-NLS-2$
 	}
 	
@@ -1457,7 +1458,7 @@
 	 * @return true, if successful
 	 */
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		try {
 			// NK: writer declared as class attribute to perform a clean if the operation is interrupted
 			this.writer = new BufferedWriter(new OutputStreamWriter(
Index: tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java
===================================================================
--- tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java	(revision 2860)
+++ tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java	(revision 2861)
@@ -262,7 +262,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return toTxt(outfile, encoding, 100);
 	}
 	
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/summary/Summary.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/summary/Summary.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/summary/Summary.java	(revision 2861)
@@ -295,7 +295,7 @@
 	
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		
 		return false;
 	}
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/preview/Preview.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/preview/Preview.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/preview/Preview.java	(revision 2861)
@@ -124,7 +124,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/selection/Selection.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/selection/Selection.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/functions/selection/Selection.java	(revision 2861)
@@ -523,7 +523,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java	(revision 2861)
@@ -591,7 +591,7 @@
 	
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return false;
 	}
 	
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java	(revision 2861)
@@ -162,7 +162,7 @@
 
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		return this.toTxt(outfile, encoding, colseparator, txtseparator);
 	}
 
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java	(revision 2861)
@@ -612,7 +612,7 @@
 	
 	
 	@Override
-	public boolean toTxt(File output, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File output, String encoding, String colseparator, String txtseparator) throws Exception {
 		IOUtils.write(output, this.dumpPreferences());
 		return output.exists();
 	}
Index: tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java
===================================================================
--- tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java	(revision 2860)
+++ tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java	(revision 2861)
@@ -625,7 +625,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
+	public boolean _toTxt(File arg0, String arg1, String arg2, String arg3) throws Exception {
 		// TODO Auto-generated method stub
 		return true;
 	}
Index: tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java
===================================================================
--- tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 2860)
+++ tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java	(revision 2861)
@@ -710,7 +710,7 @@
 	// }
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
 		return statsData.toTxt(outfile, encoding, colseparator, txtseparator);
 	}
 	
Index: tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResult.java
===================================================================
--- tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResult.java	(revision 2860)
+++ tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResult.java	(revision 2861)
@@ -52,6 +52,7 @@
 import org.txm.rcp.messages.TXMUIMessages;
 import org.txm.rcp.swt.dialog.LastOpened;
 import org.txm.rcp.utils.JobHandler;
+import org.txm.utils.logger.Log;
 
 /**
  * Exports a result by calling the function toTxt(File f) then opens or not the result in the text editor according to the preferences.
@@ -107,14 +108,14 @@
 				outfile.createNewFile();
 			}
 			catch (IOException e1) {
-				System.err.println(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1));
+				Log.warning(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1));
 			}
 			if (!outfile.canWrite()) {
-				System.out.println(NLS.bind(TXMUIMessages.impossibleToReadP0, outfile));
+				Log.warning(NLS.bind(TXMUIMessages.impossibleToReadP0, outfile));
 				return null;
 			}
 			if (!outfile.isFile()) {
-				System.out.println("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$
+				Log.warning("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$
 				return null;
 			}
 			
@@ -140,14 +141,14 @@
 							TXMResult r = (TXMResult) s;
 							
 							// compute the result if needed
-							if (!r.isAltered()) {
+							if (!r.isAltered() && r.isDirty()) {
 								r.compute(this);
 							}
 							
 							r.toTxt(outfile, encoding, colseparator, txtseparator);
 						}
 						else {
-							System.out.println("Exported object is not a TXMResult result");
+							Log.warning("Exported object is not a TXMResult result");
 							return Status.CANCEL_STATUS;
 						}
 						
@@ -162,18 +163,18 @@
 									}
 								});
 							}
-							
-							System.out.println(NLS.bind("", outfile.getAbsolutePath())); //$NON-NLS-1$
 						}
 						else {
-							System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, outfile.getAbsolutePath()));
+							Log.warning(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, outfile.getAbsolutePath()));
 						}
 					}
 					catch (ThreadDeath td) {
+						TXMResult r = (TXMResult) s;
+						r.resetComputingState();
 						return Status.CANCEL_STATUS;
 					}
 					catch (Exception e) {
-						System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e));
+						Log.warning(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e));
 						org.txm.utils.logger.Log.printStackTrace(e);
 						return Status.CANCEL_STATUS;
 					}
Index: tmp/org.txm.specificities.core/src/org/txm/functions/contrasts/Contrast.java
===================================================================
--- tmp/org.txm.specificities.core/src/org/txm/functions/contrasts/Contrast.java	(revision 2860)
+++ tmp/org.txm.specificities.core/src/org/txm/functions/contrasts/Contrast.java	(revision 2861)
@@ -97,7 +97,7 @@
 	 * @throws StatException the stat exception
 	 * @throws IOException 
 	 */
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws StatException, IOException {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws StatException, IOException {
 
 		OutputStreamWriter writer;
 		try {
Index: tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java
===================================================================
--- tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java	(revision 2860)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/SpecificitiesSelection.java	(revision 2861)
@@ -303,7 +303,7 @@
 	
 	@Override
 	@Deprecated
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		// TODO Auto-generated method stub
 		return false;
 	}
Index: tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java
===================================================================
--- tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java	(revision 2860)
+++ tmp/org.txm.specificities.core/src/org/txm/specificities/core/functions/Specificities.java	(revision 2861)
@@ -528,7 +528,7 @@
 	}
 	
 	@Override
-	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
+	public boolean _toTxt(File outfile, String encoding, String colseparator, String txtseparator) throws Exception {
 		
 		// NK: Declared as class attribute to perform a clean if the operation is
 		// interrupted
@@ -558,10 +558,10 @@
 				txt += colseparator + "f_" + colname + colseparator + "score_" + colname; //$NON-NLS-1$ //$NON-NLS-2$
 			}
 			writer.write(txt + "\n"); //$NON-NLS-1$
-			
+			String[] typeNames = getTypeNames();
 			// write data
 			for (int ii = 0; ii < frequencies.length; ii++) {
-				txt = txtseparator + getTypeNames()[ii].replace(txtseparator, txtseparator + txtseparator)
+				txt = txtseparator + typeNames[ii].replace(txtseparator, txtseparator + txtseparator)
 						+ txtseparator;
 				int somme = 0;
 				String txtcols = ""; //$NON-NLS-1$
@@ -577,6 +577,7 @@
 		}
 		catch (IOException e) {
 			org.txm.utils.logger.Log.printStackTrace(e);
+			releaseSemaphore();
 			return false;
 		}
 		finally {
@@ -586,6 +587,14 @@
 		return true;
 	}
 	
+	/**
+	 * release the R semaphore
+	 */
+	public void resetComputingState() {
+		super.resetComputingState();
+		releaseSemaphore();
+	}
+	
 	@Override
 	public void clean() {
 		try {
