From a5ec736b4c2cd12b90448074ed7bb52a1bea9c4a Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Thu, 8 Dec 2011 19:23:21 +0100 Subject: [PATCH] improved return key behaviour in lists when on empty item --- static/js/ace2_inner.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index 3fa494f31..b7e8055a4 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -3518,16 +3518,36 @@ function OUTER(gscope) var lineNum = rep.selStart[0]; var listType = getLineListType(lineNum); - performDocumentReplaceSelection('\n'); if (listType) { - if (lineNum + 1 < rep.lines.length()) + var text = rep.lines.atIndex(lineNum).text; + listType = /([a-z]+)([12345678])/.exec(listType); + var type = listType[1]; + var level = Number(listType[2]); + + //detect empty list item; exclude indentation + if(text === '*' && type !== "indent") { - setLineListType(lineNum + 1, listType); + //if not already on the highest level + if(level > 1) + { + setLineListType(lineNum, type+(level-1));//automatically decrease the level + } + else + { + setLineListType(lineNum, '');//remove the list + renumberList(lineNum + 1);//trigger renumbering of list that may be right after + } + } + else if (lineNum + 1 < rep.lines.length()) + { + performDocumentReplaceSelection('\n'); + setLineListType(lineNum + 1, type+level); } } else { + performDocumentReplaceSelection('\n'); handleReturnIndentation(); } }