diff --git a/packages/slate/src/changes/at-range.js b/packages/slate/src/changes/at-range.js
index b98c5e7c1..1255cfaee 100644
--- a/packages/slate/src/changes/at-range.js
+++ b/packages/slate/src/changes/at-range.js
@@ -334,6 +334,7 @@ Changes.deleteWordBackwardAtRange = (change, range, options) => {
*/
Changes.deleteBackwardAtRange = (change, range, n = 1, options = {}) => {
+ if (n === 0) return
const normalize = change.getFlag('normalize', options)
const { value } = change
const { document } = value
@@ -467,7 +468,7 @@ Changes.deleteLineForwardAtRange = (change, range, options) => {
const startBlock = document.getClosestBlock(startKey)
const offset = startBlock.getOffset(startKey)
const o = offset + startOffset
- change.deleteForwardAtRange(range, o, options)
+ change.deleteForwardAtRange(range, startBlock.text.length - o, options)
}
/**
@@ -502,6 +503,7 @@ Changes.deleteWordForwardAtRange = (change, range, options) => {
*/
Changes.deleteForwardAtRange = (change, range, n = 1, options = {}) => {
+ if (n === 0) return
const normalize = change.getFlag('normalize', options)
const { value } = change
const { document } = value
diff --git a/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js b/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js
new file mode 100644
index 000000000..982542398
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js
@@ -0,0 +1,20 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineBackward()
+}
+
+export const input = (
+
+
+
+
+ one two three
+
+
+
+)
+
+export const output = input
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js
new file mode 100644
index 000000000..150c1b1ff
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js
@@ -0,0 +1,28 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+
+ one wo📛rd
+
+
+
+)
+
+export const output = (
+
+
+
+
+
+
+
+)
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js
new file mode 100644
index 000000000..81f2c883d
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js
@@ -0,0 +1,33 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+
+ one
+ 😊
+ two
+ 😊
+ three
+ 😀
+
+
+
+)
+
+export const output = (
+
+
+
+
+
+
+
+)
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js
new file mode 100644
index 000000000..24c03bcdc
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js
@@ -0,0 +1,28 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+
+ one two three😊
+
+
+
+)
+
+export const output = (
+
+
+
+
+
+
+
+)
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js b/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js
new file mode 100644
index 000000000..8d15e5d78
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js
@@ -0,0 +1,20 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+ one two three
+
+
+
+
+)
+
+export const output = input
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js b/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js
new file mode 100644
index 000000000..726cae8c0
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js
@@ -0,0 +1,28 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+
+ one two three
+
+
+
+)
+
+export const output = (
+
+
+
+
+
+
+
+)
diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js b/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js
new file mode 100644
index 000000000..5fcd63ef7
--- /dev/null
+++ b/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js
@@ -0,0 +1,27 @@
+/** @jsx h */
+
+import h from '../../../helpers/h'
+
+export default function(change) {
+ change.deleteLineForward()
+}
+
+export const input = (
+
+
+
+ one two three
+
+
+
+)
+
+export const output = (
+
+
+
+ one two thr
+
+
+
+)