diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 787aaaf94..44ac275e4 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -5166,6 +5166,16 @@ function Ace2Inner(){ var t = ''; var level = 0; var listType = /([a-z]+)([0-9]+)/.exec(getLineListType(n)); + + var togglineOn = false; + + // Used to outdent if ol is removed + if(allLinesAreList){ + togglingOn = false; + }else{ + togglingOn = true; + } + if (listType) { t = listType[1]; @@ -5173,12 +5183,25 @@ 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; + + if(togglingOn){ + mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); + } + + if(!togglingOn){ + // 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, ''); // remove bullet + let newLevel = level+1; + setLineListType(n, "indent"+level); // outdent + } + } - mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); } _.each(mods, function(mod){