diff --git a/copyparty/web/md2.js b/copyparty/web/md2.js index 20bd1529..73d2e1ae 100644 --- a/copyparty/web/md2.js +++ b/copyparty/web/md2.js @@ -464,9 +464,14 @@ function md_home(shift) { function md_newline() { var s = linebounds(true), ln = s.md.substring(s.n1, s.n2), - m = /^[ \t>+-]*(\* )?([0-9]+\. +)?/.exec(ln); + m1 = /^( *)([0-9]+)(\. +)/.exec(ln), + m2 = /^[ \t>+-]*(\* )?/.exec(ln); - s.pre = s.md.substring(0, s.car) + '\n' + m[0]; + var pre = m2[0]; + if (m1 !== null) + pre = m1[1] + (parseInt(m1[2]) + 1) + m1[3]; + + s.pre = s.md.substring(0, s.car) + '\n' + pre; s.sel = ''; s.post = s.md.substring(s.car); s.car = s.cdr = s.pre.length; @@ -474,6 +479,25 @@ function md_newline() { } +// backspace +function md_backspace() { + var s = linebounds(true), + ln = s.md.substring(s.n1, s.n2), + m = /^[ \t>+-]*(\* )?([0-9]+\. +)?/.exec(ln); + + var v = m[0].replace(/[^ ]/g, " "); + if (v === m[0] || v.length !== ln.length) + return true; + + s.pre = s.md.substring(0, s.n1) + v; + s.sel = ''; + s.post = s.md.substring(s.car); + s.car = s.cdr = s.pre.length; + setsel(s); + return false; +} + + // hotkeys / toolbar (function () { function keydown(ev) { @@ -514,6 +538,9 @@ function md_newline() { action_stack.redo(); return false; } + if (!ctrl && !ev.shiftKey && kc == 8) { + return md_backspace(); + } } } document.onkeydown = keydown; diff --git a/scripts/deps-docker/marked-ln.patch b/scripts/deps-docker/marked-ln.patch index 0823df41..9e13c917 100644 --- a/scripts/deps-docker/marked-ln.patch +++ b/scripts/deps-docker/marked-ln.patch @@ -180,7 +180,7 @@ diff --git a/src/Parser.js b/src/Parser.js + // similar to tables, writing contents before the