diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 787aaaf94..e0b401f40 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -5166,6 +5166,7 @@ function Ace2Inner(){ var t = ''; var level = 0; var listType = /([a-z]+)([0-9]+)/.exec(getLineListType(n)); + var togglingOn = !allLinesAreList; if (listType) { t = listType[1]; @@ -5173,12 +5174,24 @@ function Ace2Inner(){ } var t = getLineListType(n); - // if already a list, deindent - if (allLinesAreList && level != 1) { level = level - 1; } - // if already indented, then add a level of indentation to the list - else if (t && !allLinesAreList) { level = level + 1; } + if(t === listType) togglingOn = false; - mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); + if(togglingOn){ + mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); + } + + if(!togglingOn){ // remove removing because we have + // scrap the entire indentation and list type + if(level === 1){ // if outdending but are the first item in the list then outdent + setLineListType(n, ''); // outdent + } + // else change to indented not bullet + if(level > 1){ + setLineListType(n, ''); // reomve bullet + let newLevel = level+1; + setLineListType(n, "indent"+level); // outdent + } + } } _.each(mods, function(mod){