From 403720a46baad36c9c3924310f62641e0672ff4f Mon Sep 17 00:00:00 2001 From: Horace He Date: Thu, 27 Apr 2017 20:48:37 -0400 Subject: [PATCH] Fixes #1017 --- src/actions/actions.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/actions/actions.ts b/src/actions/actions.ts index d1be6c837cf..ea6d960512c 100644 --- a/src/actions/actions.ts +++ b/src/actions/actions.ts @@ -2929,9 +2929,21 @@ class CommandClearLine extends BaseCommand { runsOnceForEachCountPrefix = false; public async exec(position: Position, vimState: VimState): Promise { - let count = vimState.recordedState.count || 1; - let end = position.getDownByCount(Math.max(0, count - 1)).getLineEnd().getLeft(); - return new ChangeOperator().run(vimState, position.getLineBeginRespectingIndent(), end); + let indentLine = position; + do { + indentLine = indentLine.getUp(1); + } while (indentLine.getLineEnd().character === 0 && indentLine.getDocumentBegin().line !== indentLine.line); + let indentLevel = TextEditor.getIndentationLevel(TextEditor.getLineAt(indentLine).text); + vimState.recordedState.transformations.push({ + type: "replaceText", + text: TextEditor.setIndentationLevel("", indentLevel), + start: position.getLineBegin(), + end: position.getLineEnd(), + manuallySetCursorPositions: true + }); + vimState.currentMode = ModeName.Insert; + vimState.cursorPosition = new Position(position.line, indentLevel); + return vimState; } }