Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
09aac2c2
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,发现更多精彩内容 >>
提交
09aac2c2
编写于
6月 03, 2015
作者:
M
Matt Warren
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3229 from mattwar/Bug1089540
Remove tail recursion and enable cancellation
上级
6c384722
2e3e96c5
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
29 addition
and
21 deletion
+29
-21
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.FormatDocument.cs
...ntation/Formatting/FormatCommandHandler.FormatDocument.cs
+1
-1
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.FormatSelection.cs
...tation/Formatting/FormatCommandHandler.FormatSelection.cs
+1
-1
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.Paste.cs
...e/Implementation/Formatting/FormatCommandHandler.Paste.cs
+1
-1
src/Workspaces/Core/Portable/Formatting/Context/FormattingContext.cs
...ces/Core/Portable/Formatting/Context/FormattingContext.cs
+18
-15
src/Workspaces/Core/Portable/Formatting/Engine/AbstractFormatEngine.Partitioner.cs
...ble/Formatting/Engine/AbstractFormatEngine.Partitioner.cs
+5
-2
src/Workspaces/Core/Portable/Formatting/Engine/AbstractFormatEngine.cs
...s/Core/Portable/Formatting/Engine/AbstractFormatEngine.cs
+3
-1
未找到文件。
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.FormatDocument.cs
浏览文件 @
09aac2c2
...
...
@@ -49,7 +49,7 @@ private bool TryExecuteCommand(FormatDocumentCommandArgs args)
_waitIndicator
.
Wait
(
title
:
EditorFeaturesResources
.
FormatDocument
,
message
:
EditorFeaturesResources
.
FormattingDocument
,
allowCancel
:
fals
e
,
allowCancel
:
tru
e
,
action
:
waitContext
=>
{
Format
(
args
.
TextView
,
document
,
null
,
waitContext
.
CancellationToken
);
...
...
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.FormatSelection.cs
浏览文件 @
09aac2c2
...
...
@@ -52,7 +52,7 @@ private bool TryExecuteCommand(FormatSelectionCommandArgs args)
_waitIndicator
.
Wait
(
title
:
EditorFeaturesResources
.
FormatSelection
,
message
:
EditorFeaturesResources
.
FormattingCurrentlySelected
,
allowCancel
:
fals
e
,
allowCancel
:
tru
e
,
action
:
waitContext
=>
{
var
buffer
=
args
.
SubjectBuffer
;
...
...
src/EditorFeatures/Core/Implementation/Formatting/FormatCommandHandler.Paste.cs
浏览文件 @
09aac2c2
...
...
@@ -29,7 +29,7 @@ public void ExecuteCommand(PasteCommandArgs args, Action nextHandler)
_waitIndicator
.
Wait
(
title
:
EditorFeaturesResources
.
FormatPaste
,
message
:
EditorFeaturesResources
.
FormattingPastedText
,
allowCancel
:
fals
e
,
allowCancel
:
tru
e
,
action
:
c
=>
ExecuteCommandWorker
(
args
,
nextHandler
,
c
.
CancellationToken
));
}
...
...
src/Workspaces/Core/Portable/Formatting/Context/FormattingContext.cs
浏览文件 @
09aac2c2
...
...
@@ -409,25 +409,28 @@ public IEnumerable<IndentBlockOperation> GetAllRelativeIndentBlockOperations()
return
_relativeIndentationTree
.
GetIntersectingInOrderIntervals
(
this
.
TreeData
.
StartPosition
,
this
.
TreeData
.
EndPosition
,
this
).
Select
(
i
=>
i
.
Operation
);
}
public
SyntaxToken
GetEndTokenForRelativeIndentationSpan
(
SyntaxToken
token
)
public
SyntaxToken
GetEndTokenForRelativeIndentationSpan
(
SyntaxToken
token
,
CancellationToken
cancellationToken
)
{
var
span
=
token
.
Span
;
var
indentationData
=
_relativeIndentationTree
.
GetSmallestContainingInterval
(
span
.
Start
,
0
);
if
(
indentationData
==
null
)
while
(
true
)
{
// this means the given token is not inside of inseparable regions
return
token
;
}
var
span
=
token
.
Span
;
var
indentationData
=
_relativeIndentationTree
.
GetSmallestContainingInterval
(
span
.
Start
,
0
);
if
(
indentationData
==
null
)
{
// this means the given token is not inside of inseparable regions
return
token
;
}
// recursively find the end token outside of inseparable regions
var
nextT
oken
=
indentationData
.
EndToken
.
GetNextToken
(
includeZeroWidth
:
true
);
if
(
nextT
oken
.
RawKind
==
0
)
{
// reached end of tree
return
default
(
SyntaxToken
);
}
// recursively find the end token outside of inseparable regions
t
oken
=
indentationData
.
EndToken
.
GetNextToken
(
includeZeroWidth
:
true
);
if
(
t
oken
.
RawKind
==
0
)
{
// reached end of tree
return
default
(
SyntaxToken
);
}
return
GetEndTokenForRelativeIndentationSpan
(
nextToken
);
cancellationToken
.
ThrowIfCancellationRequested
();
}
}
private
AnchorData
GetAnchorData
(
SyntaxToken
token
)
...
...
src/Workspaces/Core/Portable/Formatting/Engine/AbstractFormatEngine.Partitioner.cs
浏览文件 @
09aac2c2
...
...
@@ -2,6 +2,7 @@
using
System
;
using
System.Collections.Generic
;
using
System.Threading
;
using
Microsoft.CodeAnalysis.Text
;
using
Roslyn.Utilities
;
...
...
@@ -28,7 +29,7 @@ public Partitioner(FormattingContext context, TokenStream tokenStream, TokenPair
_operationPairs
=
operationPairs
;
}
public
List
<
IEnumerable
<
TokenPairWithOperations
>>
GetPartitions
(
int
partitionCount
)
public
List
<
IEnumerable
<
TokenPairWithOperations
>>
GetPartitions
(
int
partitionCount
,
CancellationToken
cancellationToken
)
{
Contract
.
ThrowIfFalse
(
partitionCount
>
0
);
...
...
@@ -58,7 +59,7 @@ public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCou
break
;
}
var
nextToken
=
_context
.
GetEndTokenForRelativeIndentationSpan
(
_operationPairs
[
nextPartitionStartOperationIndex
].
Token1
);
var
nextToken
=
_context
.
GetEndTokenForRelativeIndentationSpan
(
_operationPairs
[
nextPartitionStartOperationIndex
].
Token1
,
cancellationToken
);
if
(
nextToken
.
RawKind
==
0
)
{
// reached the last token in the tree
...
...
@@ -79,6 +80,8 @@ public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCou
list
.
Add
(
GetOperationPairsFromTo
(
currentOperationIndex
,
nextTokenWithIndex
.
IndexInStream
));
currentOperationIndex
=
nextTokenWithIndex
.
IndexInStream
;
cancellationToken
.
ThrowIfCancellationRequested
();
}
return
list
;
...
...
src/Workspaces/Core/Portable/Formatting/Engine/AbstractFormatEngine.cs
浏览文件 @
09aac2c2
...
...
@@ -441,7 +441,9 @@ private SyntaxToken FindCorrectBaseTokenOfRelativeIndentBlockOperation(IndentBlo
var
partitioner
=
new
Partitioner
(
context
,
tokenStream
,
tokenOperations
);
// always create task 1 more than current processor count
var
partitions
=
partitioner
.
GetPartitions
(
this
.
TaskExecutor
==
TaskExecutor
.
Synchronous
?
1
:
Environment
.
ProcessorCount
+
1
);
var
partitions
=
partitioner
.
GetPartitions
(
this
.
TaskExecutor
==
TaskExecutor
.
Synchronous
?
1
:
Environment
.
ProcessorCount
+
1
,
cancellationToken
);
cancellationToken
.
ThrowIfCancellationRequested
();
var
tasks
=
new
Task
[
partitions
.
Count
];
for
(
int
i
=
0
;
i
<
partitions
.
Count
;
i
++)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录