changeset 847:a9e147e355fd

Do not file helper when no pattern matches
author HIROSE Yuuji <yuuji@gentei.org>
date Fri, 26 Jun 2020 22:28:59 +0900
parents 9c4e16c173db
children 770f2eed24a1
files s4-main.js
diffstat 1 files changed, 22 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/s4-main.js	Fri Jun 26 19:55:14 2020 +0900
+++ b/s4-main.js	Fri Jun 26 22:28:59 2020 +0900
@@ -75,27 +75,39 @@
     function helpMarkdown(e) {
 	//alert(e.keyCode);
 	if (e.keyCode == 13) {
-	    e.preventDefault();
 	    var area = e.target;
 	    var pos  = area.selectionStart, text = area.value;
+	    if (pos==0) return;
 	    var last = text.lastIndexOf("\n", pos-1);
+	    var rest = text.substring(pos);
 	    var line = last ? text.substring(last+1) : text;
-	    var tail = text.substring(pos-2, pos);
-	    var add  = "", offset = 0;
+	    var tail = text.substring(pos-2, pos), br = (tail=="  ");
+	    var add  = "", offset = 1;
 	    if (line.startsWith("* ")) {
-		add = (tail=="  ") ? "  " : "* ";
+		add =  "* ";
+		offset += add.length;
+		if (br) {
+		    add = "  " + "\n" + add;
+		}
 	    } else if (line.match(/^([1-9][0-9]*)\. /)) {
 		ln = parseInt(RegExp.$1);
-		add = (tail=="  ") ? " ".repeat(RegExp.$1.length+2)
-		    : (ln+1)+". ";
+		add = (ln+1)+". ";
+		offset += add.length;
+		if (br) {
+		    add = " ".repeat(RegExp.$1.length+2) + "\n" + add;
+		}
 	    } else if (line.match(/^\|(  *).+\|/)) {
+		alert("table");
 		add = "|" + RegExp.$1 + " |";
-		offset = -2;
+		offset += add.length-2;
+	    } else {
+		return;
 	    }
-	    area.value = text.substring(0, pos) + "\n" + add;
+	    e.preventDefault();
+	    area.value = text.substring(0, pos) + "\n" + add + rest;
 	    //area.setSelectionRange(pos+length(add));
-	    area.selectionStart=area.selectionEnd
-		= (area.selectionStart + offset);
+	    area.selectionStart=area.selectionEnd = (pos + offset);
+	    
 	}
     }
     /* Init event listeners */

yatex.org