diff options
| -rw-r--r-- | editor/editor.ts | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/editor/editor.ts b/editor/editor.ts index fe90066..919b425 100644 --- a/editor/editor.ts +++ b/editor/editor.ts @@ -102,7 +102,6 @@ export class WuiEditor { case "ArrowUp": case "CapsLock": case "ContextMenu": - case "Delete": case "End": case "Home": case "Insert": @@ -226,6 +225,46 @@ export class WuiEditor { this.is_key_control = true break + case "Delete": + ev.preventDefault() + + let is_join_line_after = false + let el_text_current = this.lines[x].el_text + + off = this.sel.focusOffset + text_before = el_text_current.innerText + text_after = "" + + if (text_before.length === 0 || off === text_before.length) { + // Current line is empty, join the next line to current + // line; or + // Current offset is at the end of text, join the next + // line to current line. + is_join_line_after = true + } + + if (is_join_line_after) { + if (x+1 < this.lines.length) { + let el_text_after = this.lines[x+1].el_text + text_after = el_text_after.innerText + el_text_after.innerText = "" + + this.unre.DoJoin(x, text_before, text_after) + + this.deleteLine(x+1) + text_after = text_before + text_after + } + } else { + text_after = text_before.slice(0, off) + text_before.slice(off+1, text_before.length) + + this.unre.DoUpdate(x, text_before, text_after) + } + + this.lines[x].el_text.innerText = text_after + this.raw_lines[x] = text_after + this.setCaret(el_text_current, off) + break + case "Enter": ev.preventDefault() |
