Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java	(revision 1915)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java	(revision 1916)
@@ -872,6 +872,11 @@
 					// update editor corpus
 					System.out.println("Fail to save annotations of the corpus."); //$NON-NLS-1$
 					return false;
+				} else {
+					if (annotationColumn != null && !annotationColumn.isDisposed()) {
+						annotationColumn.setText(annotations.getViewAnnotation().getName());
+					}
+					return true; // something was saved
 				}
 			} else {
 				return false;
@@ -880,7 +885,6 @@
 			ex.printStackTrace();
 			return false;
 		}
-		return true;
 	}
 
 	@Override
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java	(revision 1915)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java	(revision 1916)
@@ -706,6 +706,11 @@
 					// update editor corpus
 					System.out.println("Fail to save annotations of the corpus."); //$NON-NLS-1$
 					return false;
+				} else {
+					if (annotationColumn != null && !annotationColumn.isDisposed()) {
+						annotationColumn.setText(annotations.getViewAnnotation().getName());
+					}
+					return true; // something was saved
 				}
 			} else {
 				return false;
@@ -714,10 +719,6 @@
 			ex.printStackTrace();
 			return false;
 		}
-		if (annotationColumn != null && !annotationColumn.isDisposed()) {
-			annotationColumn.setText(typesList.get(0).getName());
-		}
-		return true;
 	}
 
 	@Override
Index: tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java
===================================================================
--- tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1915)
+++ tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java	(revision 1916)
@@ -661,6 +661,11 @@
 					// update editor corpus
 					System.out.println("Fail to save annotations of the corpus."); //$NON-NLS-1$
 					return false;
+				} else {
+					if (annotationColumn != null && !annotationColumn.isDisposed()) {
+						annotationColumn.setText(annotations.getViewAnnotation().getName());
+					}
+					return true; // something was saved
 				}
 			} else {
 				return false;
@@ -669,7 +674,6 @@
 			ex.printStackTrace();
 			return false;
 		}
-		return true;
 	}
 
 	@Override
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJS.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJS.groovy	(revision 0)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJS.groovy	(revision 1916)
@@ -0,0 +1,47 @@
+import org.txm.edition.rcp.editors.*
+/*
+script = """sheet.insertRule("#w_a01_390 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_470 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_262 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_289 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_421 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_213 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_166 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_342 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_546 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_589 {background-color:rgba(249,208,208,1.0);}", 1);
+sheet.insertRule("#w_a01_504 {background-color:rgba(249,160,160,1.0);}", 1);
+sheet.insertRule("#w_a01_637 {background-color:rgba(249,208,208,1.0);}", 1);
+*/
+script = """
+
+//alert(sheet.cssRules[0].selectorText);
+//alert(sheet.cssRules[0].style.cssText);
+//alert(sheet.cssRules[0].style.length);
+//alert(sheet.cssRules[0].style.parentRule);
+
+for (var i=0; i < document.styleSheets.length; i++){
+	var styleSheet = document.styleSheets[i];
+	alert(styleSheet.cssRules.length)
+/*	for (var j=0; j < styleSheet.cssRules.length; j++){
+		alert(styleSheet.cssRules[j].style.cssText)
+	}
+*/
+}
+//alert("SHEET="+sheet.cssRules.length)
+//document.head.appendChild(style);
+"""
+/*
+
+ */
+if (!(editor.getClass().getName().equals("org.txm.edition.rcp.editors.SynopticEditionEditor"))) {
+	println "Editor is not an edition: "+editor+". Use the F12 key binding to run the macro."
+	return
+}
+monitor.syncExec(new Runnable() {
+	public void run() {
+		panel = editor.editionPanels["default"]
+		
+		println "Execute result: "+panel.execute(script)
+}});
+
Index: tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJSLine.groovy
===================================================================
--- tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJSLine.groovy	(revision 0)
+++ tmp/org.txm.groovy.core/src/groovy/org/txm/macro/debug/ExecJSLine.groovy	(revision 1916)
@@ -0,0 +1,17 @@
+import org.txm.edition.rcp.editors.*
+
+@Field @Option(name="script", usage="an example string", widget="Text", required=false, def="alert('hello world!');")
+script
+
+
+if (!(editor.getClass().getName().equals("org.txm.edition.rcp.editors.SynopticEditionEditor"))) {
+	println "Editor is not an edition: "+editor+". Use the F12 key binding to run the macro."
+	return
+}
+monitor.syncExec(new Runnable() {
+	public void run() {
+		panel = editor.editionPanels["default"]
+		
+		println "Execute result: "+panel.execute(script)
+}});
+
Index: tmp/org.txm.edition.rcp/res/js/functions.js
===================================================================
--- tmp/org.txm.edition.rcp/res/js/functions.js	(revision 1915)
+++ tmp/org.txm.edition.rcp/res/js/functions.js	(revision 1916)
@@ -130,7 +130,6 @@
 	return detailedObject;
 }
 
-var sheet = null;
 try {
 	var style = document.createElement("style");
 	try { style.appendChild(document.createTextNode("")); } catch (e) {};
@@ -141,38 +140,38 @@
 }
 
 //try {
-//
-//	if (!Element.prototype.scrollIntoViewIfNeeded) {
-//		Element.prototype.scrollIntoViewIfNeeded = Element.prototype.scrollIntoView;
-////		Element.prototype.scrollIntoViewIfNeeded = function(centerIfNeeded) {
-////			centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;
-////			var parent = this.parentNode, parentComputedStyle = window
-////					.getComputedStyle(parent, null), parentBorderTopWidth = parseInt(parentComputedStyle
-////					.getPropertyValue('border-top-width')), parentBorderLeftWidth = parseInt(parentComputedStyle
-////					.getPropertyValue('border-left-width')), overTop = this.offsetTop
-////					- parent.offsetTop < parent.scrollTop, overBottom = (this.offsetTop
-////					- parent.offsetTop + this.clientHeight - parentBorderTopWidth) > (parent.scrollTop + parent.clientHeight), overLeft = this.offsetLeft
-////					- parent.offsetLeft < parent.scrollLeft, overRight = (this.offsetLeft
-////					- parent.offsetLeft + this.clientWidth - parentBorderLeftWidth) > (parent.scrollLeft + parent.clientWidth), alignWithTop = overTop
-////					&& !overBottom;
-////			if ((overTop || overBottom) && centerIfNeeded) {
-////				parent.scrollTop = this.offsetTop - parent.offsetTop
-////						- parent.clientHeight / 2 - parentBorderTopWidth
-////						+ this.clientHeight / 2;
-////			}
-////			if ((overLeft || overRight) && centerIfNeeded) {
-////				parent.scrollLeft = this.offsetLeft - parent.offsetLeft
-////						- parent.clientWidth / 2 - parentBorderLeftWidth
-////						+ this.clientWidth / 2;
-////			}
-////			if ((overTop || overBottom || overLeft || overRight)
-////					&& !centerIfNeeded) {
-////				this.scrollIntoView(alignWithTop);
-////			}
-////		};
-//	}
+
+//if (!Element.prototype.scrollIntoViewIfNeeded) {
+//Element.prototype.scrollIntoViewIfNeeded = Element.prototype.scrollIntoView;
+////Element.prototype.scrollIntoViewIfNeeded = function(centerIfNeeded) {
+////centerIfNeeded = arguments.length === 0 ? true : !!centerIfNeeded;
+////var parent = this.parentNode, parentComputedStyle = window
+////.getComputedStyle(parent, null), parentBorderTopWidth = parseInt(parentComputedStyle
+////.getPropertyValue('border-top-width')), parentBorderLeftWidth = parseInt(parentComputedStyle
+////.getPropertyValue('border-left-width')), overTop = this.offsetTop
+////- parent.offsetTop < parent.scrollTop, overBottom = (this.offsetTop
+////- parent.offsetTop + this.clientHeight - parentBorderTopWidth) > (parent.scrollTop + parent.clientHeight), overLeft = this.offsetLeft
+////- parent.offsetLeft < parent.scrollLeft, overRight = (this.offsetLeft
+////- parent.offsetLeft + this.clientWidth - parentBorderLeftWidth) > (parent.scrollLeft + parent.clientWidth), alignWithTop = overTop
+////&& !overBottom;
+////if ((overTop || overBottom) && centerIfNeeded) {
+////parent.scrollTop = this.offsetTop - parent.offsetTop
+////- parent.clientHeight / 2 - parentBorderTopWidth
+////+ this.clientHeight / 2;
+////}
+////if ((overLeft || overRight) && centerIfNeeded) {
+////parent.scrollLeft = this.offsetLeft - parent.offsetLeft
+////- parent.clientWidth / 2 - parentBorderLeftWidth
+////+ this.clientWidth / 2;
+////}
+////if ((overTop || overBottom || overLeft || overRight)
+////&& !centerIfNeeded) {
+////this.scrollIntoView(alignWithTop);
+////}
+////};
+//}
 //} catch (e) {
-//	Element.prototype.scrollIntoViewIfNeeded = Element.prototype.scrollIntoView
+//Element.prototype.scrollIntoViewIfNeeded = Element.prototype.scrollIntoView
 //}
 
 function showElementIfNeeded(el) {
@@ -186,11 +185,11 @@
 function isAnyPartOfElementInViewport(el) {
 	try { 
 		const rect = el.getBoundingClientRect();
-    // 	DOMRect { x: 8, y: 8, width: 100, height: 100, top: 8, right: 108, bottom: 108, left: 8 }
+		// 	DOMRect { x: 8, y: 8, width: 100, height: 100, top: 8, right: 108, bottom: 108, left: 8 }
 		const windowHeight = (window.innerHeight || document.documentElement.clientHeight);
 		const windowWidth = (window.innerWidth || document.documentElement.clientWidth);
 
-    // http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
+		// http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
 		const vertInView = (rect.top <= windowHeight) && ((rect.top + rect.height) >= 0);
 		const horInView = (rect.left <= windowWidth) && ((rect.left + rect.width) >= 0);
 
Index: tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java
===================================================================
--- tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java	(revision 1915)
+++ tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java	(revision 1916)
@@ -61,7 +61,7 @@
 	/**
 	 * use this to save the annotations. Save must end when the files are updated
 	 * 
-	 * @return
+	 * @return true if something was saved
 	 */
 	public abstract boolean save();
 	
Index: tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java
===================================================================
--- tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java	(revision 1915)
+++ tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java	(revision 1916)
@@ -134,18 +134,17 @@
 
 			@Override
 			public void widgetSelected(SelectionEvent e) {
-				boolean saveSuccessful = true;
 				boolean needToUpdateIndexes = false;
 				//System.out.println("Saving annotations...");
 				if (annotationAreas != null && annotationAreas.size() > 0) {
 					for (AnnotationArea aa : annotationAreas) {
-						saveSuccessful = saveSuccessful && aa.save();
-						needToUpdateIndexes = needToUpdateIndexes || aa.needToUpdateIndexes();
+						needToUpdateIndexes = needToUpdateIndexes || (aa.save() &&  aa.needToUpdateIndexes());
 					}
 					CorporaView.refresh();
 				}
 
-				if (saveSuccessful && needToUpdateIndexes) {
+				// there is something to save AND
+				if (needToUpdateIndexes) {
 					JobHandler job = new JobHandler("Updating corpus editions and indexes", true) {
 
 						@Override
