From 6b11ae330d735b2af767f8951a78167f373b15fe Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Fri, 25 Nov 2011 09:13:03 +0100 Subject: [PATCH 1/6] added handling of de-indenting when already on higher level --- static/js/ace2_inner.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index 9c647b6df..e606f88dd 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -3560,10 +3560,10 @@ function OUTER(gscope) foundLists = true; var t = listType[1]; var level = Number(listType[2]); - var newLevel = Math.max(1, Math.min(MAX_LIST_LEVEL, level + (isOut ? -1 : 1))); + var newLevel = Math.max(0, Math.min(MAX_LIST_LEVEL, level + (isOut ? -1 : 1))); if (level != newLevel) { - mods.push([n, t + newLevel]); + mods.push([n, (newLevel > 0) ? t + newLevel : '']); } } } From ea2e7d05507086afc0a5a9f35820736c5aa22ee2 Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Fri, 25 Nov 2011 10:29:31 +0100 Subject: [PATCH 2/6] added support for (de)indent of regular text --- static/css/iframe_editor.css | 17 +++++++++++++++++ static/js/ace2_inner.js | 20 ++++++++++---------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/static/css/iframe_editor.css b/static/css/iframe_editor.css index 7be570112..86ca99117 100644 --- a/static/css/iframe_editor.css +++ b/static/css/iframe_editor.css @@ -32,6 +32,23 @@ ul.list-bullet6 { list-style-type: square; } ul.list-bullet7 { list-style-type: disc; } ul.list-bullet8 { list-style-type: circle; } +ul.list-indent1 { margin-left: 1.5em; } +ul.list-indent2 { margin-left: 3em; } +ul.list-indent3 { margin-left: 4.5em; } +ul.list-indent4 { margin-left: 6em; } +ul.list-indent5 { margin-left: 7.5em; } +ul.list-indent6 { margin-left: 9em; } +ul.list-indent7 { margin-left: 10.5em; } +ul.list-indent8 { margin-left: 12em; } + +ul.list-indent1 { list-style-type: none; } +ul.list-indent2 { list-style-type: none; } +ul.list-indent3 { list-style-type: none; } +ul.list-indent4 { list-style-type: none; } +ul.list-indent5 { list-style-type: none; } +ul.list-indent6 { list-style-type: none; } +ul.list-indent7 { list-style-type: none; } +ul.list-indent8 { list-style-type: none; } body { margin: 0; diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index e606f88dd..3da6bf800 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -3548,25 +3548,25 @@ function OUTER(gscope) lastLine = Math.max(firstLine, rep.selEnd[0] - ((rep.selEnd[1] == 0) ? 1 : 0)); var mods = []; - var foundLists = false; for (var n = firstLine; n <= lastLine; n++) { var listType = getLineListType(n); + var t = 'indent'; + var level = 0; if (listType) { listType = /([a-z]+)([12345678])/.exec(listType); if (listType) { - foundLists = true; - var t = listType[1]; - var level = Number(listType[2]); - var newLevel = Math.max(0, Math.min(MAX_LIST_LEVEL, level + (isOut ? -1 : 1))); - if (level != newLevel) - { - mods.push([n, (newLevel > 0) ? t + newLevel : '']); - } + t = listType[1]; + level = Number(listType[2]); } } + var newLevel = Math.max(0, Math.min(MAX_LIST_LEVEL, level + (isOut ? -1 : 1))); + if (level != newLevel) + { + mods.push([n, (newLevel > 0) ? t + newLevel : '']); + } } if (mods.length > 0) @@ -3574,7 +3574,7 @@ function OUTER(gscope) setLineListTypes(mods); } - return foundLists; + return true; } editorInfo.ace_doIndentOutdent = doIndentOutdent; From caf879297461ff94ef9d2a9d0e2e12406a97c722 Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Fri, 25 Nov 2011 11:10:57 +0100 Subject: [PATCH 3/6] applying/removing list now preserves the indentation level --- static/js/ace2_inner.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index 3da6bf800..bd313f52a 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -5235,7 +5235,8 @@ function OUTER(gscope) var allLinesAreList = true; for (var n = firstLine; n <= lastLine; n++) { - if (!getLineListType(n)) + var listType = getLineListType(n); + if (!listType || listType.slice(0, 'bullet'.length) != 'bullet') { allLinesAreList = false; break; @@ -5245,8 +5246,16 @@ function OUTER(gscope) var mods = []; for (var n = firstLine; n <= lastLine; n++) { + var t = ''; + var level = 0; + var listType = /([a-z]+)([12345678])/.exec(getLineListType(n)); + if (listType) + { + t = listType[1]; + level = Number(listType[2]); + } var t = getLineListType(n); - mods.push([n, allLinesAreList ? '' : (t ? t : 'bullet1')]); + mods.push([n, allLinesAreList ? 'indent' + level : (t ? 'bullet' + level : 'bullet1')]); } setLineListTypes(mods); } From 9c14dcd49805628083a16b8890f7e52feebaacea Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Fri, 25 Nov 2011 11:19:22 +0100 Subject: [PATCH 4/6] updated menu bar labels --- static/pad.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/static/pad.html b/static/pad.html index a8ab0dc5b..c84de5b1d 100644 --- a/static/pad.html +++ b/static/pad.html @@ -50,12 +50,12 @@
  • - +
  • - +
  • From 7d184a681ab9d550671109b3eb69dc2565099419 Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Sat, 26 Nov 2011 00:02:25 +0100 Subject: [PATCH 5/6] fix indenting while cursor is in the line --- static/js/ace2_inner.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/static/js/ace2_inner.js b/static/js/ace2_inner.js index bd313f52a..08c8d01b3 100644 --- a/static/js/ace2_inner.js +++ b/static/js/ace2_inner.js @@ -3538,7 +3538,8 @@ function OUTER(gscope) function doIndentOutdent(isOut) { - if (!(rep.selStart && rep.selEnd)) + if (!(rep.selStart && rep.selEnd) || + ((rep.selStart[0] == rep.selEnd[0]) && (rep.selStart[1] == rep.selEnd[1]) && rep.selEnd[1] > 1)) { return false; } From 2cc47211f98899b96b0e592f76da3b67ddc69b82 Mon Sep 17 00:00:00 2001 From: Jean-Tiare Le Bigot Date: Sun, 27 Nov 2011 19:10:22 +0100 Subject: [PATCH 6/6] one more 'one line fix'. Fixes bullet list auto replacing indented text whenever a new char is appended to it. This was caused by 'bullet' being hardcoded in a regular expression :/ --- static/js/contentcollector.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/js/contentcollector.js b/static/js/contentcollector.js index a776affec..577b24c6c 100644 --- a/static/js/contentcollector.js +++ b/static/js/contentcollector.js @@ -473,7 +473,7 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class if (tname == "ul") { var type; - var rr = cls && /(?:^| )list-(bullet[12345678])\b/.exec(cls); + var rr = cls && /(?:^| )list-([a-z]+[12345678])\b/.exec(cls); type = rr && rr[1] || "bullet" + String(Math.min(_MAX_LIST_LEVEL, (state.listNesting || 0) + 1)); oldListTypeOrNull = (_enterList(state, type) || 'none'); }