提交 6d7eee0b 编写于 作者: M Manish Jayaswal

Merge pull request #4403 from ManishJayaswal/alwaysTrimHistory

Ensures that history always contains what user has typed
......@@ -345,8 +345,10 @@ public void AddInput(string command)
_window.SetActiveCode(command);
}
FinishCurrentSubmissionInput();
// Add command to history before calling FinishCurrentSubmissionInput as it adds newline
// to the end of the command.
_window._history.Add(_window._currentLanguageBuffer.CurrentSnapshot.GetExtent());
FinishCurrentSubmissionInput();
}
private void AppendUncommittedInput(string text)
......@@ -489,6 +491,9 @@ public Task SubmitAsync()
return Task.FromResult<object>(null);
}
// get command to save to history before calling FinishCurrentSubmissionInput
// as it adds newline at the end
var historySpan = _window._currentLanguageBuffer.CurrentSnapshot.GetExtent();
FinishCurrentSubmissionInput();
_window._history.UncommittedInput = null;
......@@ -504,7 +509,7 @@ public Task SubmitAsync()
}
else
{
_window._history.Add(trimmedSpan);
_window._history.Add(historySpan);
State = State.ExecutingInput;
StartCursorTimer();
......
......@@ -55,6 +55,14 @@ public static ITextSnapshot MockSnapshot(string content)
return snapshotMock.Object;
}
public string GetTextFromCurrentLanguageBuffer
{
get
{
return Window.CurrentLanguageBuffer.CurrentSnapshot.GetText();
}
}
#endregion
[Fact]
......@@ -608,6 +616,25 @@ private void AssertCaretVirtualPosition(int expectedLine, int expectedColumn)
Window.TextView.Caret.Position.VirtualBufferPosition.GetLineAndColumn(out actualLine, out actualColumn);
Assert.Equal(expectedLine, actualLine.LineNumber);
Assert.Equal(expectedColumn, actualColumn);
}
[Fact]
public void CheckHistoryPrevious()
{
const string V = "1 ";
Window.InsertCode(V);
Assert.Equal(V, GetTextFromCurrentLanguageBuffer);
Task.Run(() => Window.Operations.ExecuteInput()).PumpingWait();
Window.Operations.HistoryPrevious();
Assert.Equal(V, GetTextFromCurrentLanguageBuffer);
}
[Fact(Skip = "https://github.com/dotnet/roslyn/issues/4121")]
public void CheckHistoryAfterResetButtonClick()
{
Task.Run(() => Window.Operations.ResetAsync(initialize: true)).PumpingWait();
Task.Run(() => Window.Operations.HistoryPrevious()).PumpingWait();
Assert.Equal("#reset", GetTextFromCurrentLanguageBuffer);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册