aboutsummaryrefslogtreecommitdiff
path: root/editor/editor.ts
diff options
context:
space:
mode:
Diffstat (limited to 'editor/editor.ts')
-rw-r--r--editor/editor.ts41
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()