Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
eafff87b
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
eafff87b
编写于
5月 15, 2015
作者:
T
Tomáš Matoušek
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2806 from DinoV/master
Fix issue where stdout and input aren't interleaving correctly
上级
449e50ab
32d191f2
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
61 addition
and
3 deletion
+61
-3
src/InteractiveWindow/Editor/IInteractiveWindow.cs
src/InteractiveWindow/Editor/IInteractiveWindow.cs
+26
-0
src/InteractiveWindow/Editor/InteractiveWindow.cs
src/InteractiveWindow/Editor/InteractiveWindow.cs
+27
-3
src/InteractiveWindow/Editor/Output/OutputWriter.cs
src/InteractiveWindow/Editor/Output/OutputWriter.cs
+8
-0
未找到文件。
src/InteractiveWindow/Editor/IInteractiveWindow.cs
浏览文件 @
eafff87b
...
...
@@ -136,6 +136,32 @@ TextWriter ErrorOutputWriter
/// </remarks>
Span
Write
(
string
text
);
/// <summary>
/// Writes string followed by a line break into the error buffer.
/// </summary>
/// <param name="text">Text to write. Might be null.</param>
/// <returns>
/// The offset in the output subject buffer where the text is inserted and the length of the inserted text including the line break.
/// </returns>
/// <remarks>
/// Note that the text might not be written to the editor buffer immediately but be buffered.
/// The returned offsets might thus be beyond the current length of the editor buffer.
/// </remarks>
Span
WriteErrorLine
(
string
text
);
/// <summary>
/// Writes a line into the error buffer.
/// </summary>
/// <param name="text">Text to write. Might be null.</param>
/// <returns>
/// The offset in the output subject buffer where the text is inserted.
/// </returns>
/// <remarks>
/// Note that the text might not be written to the editor buffer immediately but be buffered.
/// The returned offset might thus be beyond the current length of the editor buffer.
/// </remarks>
Span
WriteError
(
string
text
);
/// <summary>
/// Writes a UI object to the REPL window.
/// </summary>
...
...
src/InteractiveWindow/Editor/InteractiveWindow.cs
浏览文件 @
eafff87b
...
...
@@ -117,7 +117,7 @@ internal class InteractiveWindow : IInteractiveWindow
private
readonly
OutputBuffer
_buffer
;
private
readonly
TextWriter
_outputWriter
;
private
readonly
Text
Writer
_errorOutputWriter
;
private
readonly
InteractiveWindow
Writer
_errorOutputWriter
;
private
int
_currentOutputProjectionSpan
;
private
int
_outputTrackingCaretPosition
;
...
...
@@ -1844,20 +1844,25 @@ private Task Submit()
}
}
private
void
FinishCurrentSubmissionInput
()
private
void
FinishCurrentSubmissionInput
()
{
Debug
.
Assert
(
CheckAccess
());
AppendLineNoPromptInjection
(
_currentLanguageBuffer
);
ApplyProtection
(
_currentLanguageBuffer
,
regions
:
null
);
if
(
_adornmentToMinimize
)
if
(
_adornmentToMinimize
)
{
// TODO (tomat): remember the index of the adornment(s) in the current output and minimize those instead of the last one
InlineAdornmentProvider
.
MinimizeLastInlineAdornment
(
TextView
);
_adornmentToMinimize
=
false
;
}
NewOutputBuffer
();
}
private
void
NewOutputBuffer
()
{
// Stop growing the current output projection span.
Debug
.
Assert
(
_projectionSpans
[
_currentOutputProjectionSpan
].
Kind
==
ReplSpanKind
.
Output
);
var
nonGrowingSpan
=
_projectionSpans
[
_currentOutputProjectionSpan
].
WithEndTrackingMode
(
PointTrackingMode
.
Negative
);
...
...
@@ -1950,6 +1955,8 @@ public TextReader ReadStandardInput()
ReplaceProjectionSpan
(
i
,
newSpan
);
ApplyProtection
(
_stdInputBuffer
,
_stdInputProtection
,
allowAppend
:
true
);
NewOutputBuffer
();
if
(
wasRunning
)
{
_isRunning
=
true
;
...
...
@@ -2028,6 +2035,23 @@ public Span WriteLine(string text = null)
return
new
Span
(
result
,
(
text
!=
null
?
text
.
Length
:
0
)
+
LineBreak
.
Length
);
}
public
Span
WriteError
(
string
text
)
{
int
result
=
_buffer
.
Write
(
text
);
var
res
=
new
Span
(
result
,
(
text
!=
null
?
text
.
Length
:
0
));
_errorOutputWriter
.
Spans
.
Add
(
res
);
return
res
;
}
public
Span
WriteErrorLine
(
string
text
=
null
)
{
int
result
=
_buffer
.
Write
(
text
);
_buffer
.
Write
(
LineBreak
);
var
res
=
new
Span
(
result
,
(
text
!=
null
?
text
.
Length
:
0
)
+
LineBreak
.
Length
);
_errorOutputWriter
.
Spans
.
Add
(
res
);
return
res
;
}
public
void
Write
(
UIElement
element
)
{
if
(
element
==
null
)
...
...
src/InteractiveWindow/Editor/Output/OutputWriter.cs
浏览文件 @
eafff87b
...
...
@@ -26,6 +26,14 @@ public IInteractiveWindow Window
get
{
return
_window
;
}
}
public
SortedSpans
Spans
{
get
{
return
_spans
;
}
}
public
override
object
InitializeLifetimeService
()
{
return
null
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录