Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e91a566f
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,发现更多精彩内容 >>
提交
e91a566f
编写于
7月 06, 2020
作者:
A
Allison Chou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Code review feedback pt2
上级
3e8ab957
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
18 deletion
+22
-18
src/Features/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHandler.cs
.../Protocol/Handler/CodeActions/CodeActionResolveHandler.cs
+19
-17
src/Features/LanguageServer/Protocol/Handler/CodeActions/RunCodeActionsHandler.cs
...ver/Protocol/Handler/CodeActions/RunCodeActionsHandler.cs
+3
-1
未找到文件。
src/Features/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHandler.cs
浏览文件 @
e91a566f
...
...
@@ -76,6 +76,14 @@ internal class CodeActionResolveHandler : AbstractRequestHandler<LSP.VSCodeActio
return
codeAction
;
}
// If we have all non-ApplyChangesOperations, set up to run as command on the server
// instead of using WorkspaceEdits.
if
(
operations
.
All
(
operation
=>
!(
operation
is
ApplyChangesOperation
)))
{
codeAction
.
Command
=
SetCommand
(
codeAction
.
Title
,
data
);
return
codeAction
;
}
// TO-DO:
// 1) We currently must execute code actions which add new documents on the server as commands,
// since there is no LSP support for adding documents yet. In the future, we should move these actions
...
...
@@ -84,7 +92,6 @@ internal class CodeActionResolveHandler : AbstractRequestHandler<LSP.VSCodeActio
// one where the code action was invoked from do not work. We must temporarily execute these as commands
// as well.
// https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1147293/
var
runAsCommand
=
false
;
// Add workspace edits
var
applyChangesOperations
=
operations
.
OfType
<
ApplyChangesOperation
>();
...
...
@@ -104,8 +111,8 @@ internal class CodeActionResolveHandler : AbstractRequestHandler<LSP.VSCodeActio
pc
=>
pc
.
GetAddedDocuments
().
Concat
(
pc
.
GetAddedAdditionalDocuments
().
Concat
(
pc
.
GetAddedAnalyzerConfigDocuments
())));
if
(
addedDocuments
.
Any
())
{
runAsCommand
=
true
;
break
;
codeAction
.
Command
=
SetCommand
(
codeAction
.
Title
,
data
)
;
return
codeAction
;
}
var
changedDocuments
=
projectChanges
.
SelectMany
(
pc
=>
pc
.
GetChangedDocuments
());
...
...
@@ -120,8 +127,8 @@ internal class CodeActionResolveHandler : AbstractRequestHandler<LSP.VSCodeActio
changedAnalyzerConfigDocuments
.
Any
()
||
changedAdditionalDocuments
.
Any
())
{
runAsCommand
=
true
;
break
;
codeAction
.
Command
=
SetCommand
(
codeAction
.
Title
,
data
)
;
return
codeAction
;
}
// Changed documents
...
...
@@ -150,21 +157,16 @@ internal class CodeActionResolveHandler : AbstractRequestHandler<LSP.VSCodeActio
codeAction
.
Edit
=
new
LSP
.
WorkspaceEdit
{
DocumentChanges
=
textDocumentEdits
.
ToArray
()
};
}
// Set up to run as command on the server instead of using WorkspaceEdits.
var
commandOperations
=
operations
.
All
(
operation
=>
!(
operation
is
ApplyChangesOperation
));
if
(
commandOperations
||
runAsCommand
)
{
codeAction
.
Command
=
new
LSP
.
Command
{
CommandIdentifier
=
CodeActionsHandler
.
RunCodeActionCommandName
,
Title
=
codeAction
.
Title
,
Arguments
=
new
object
[]
{
data
}
};
}
return
codeAction
;
// Local functions
static
LSP
.
Command
SetCommand
(
string
title
,
CodeActionResolveData
data
)
=>
new
LSP
.
Command
{
CommandIdentifier
=
CodeActionsHandler
.
RunCodeActionCommandName
,
Title
=
title
,
Arguments
=
new
object
[]
{
data
}
};
static
async
Task
AddTextDocumentEdits
<
T
>(
ArrayBuilder
<
TextDocumentEdit
>
textDocumentEdits
,
ApplyChangesOperation
applyChangesOperation
,
...
...
src/Features/LanguageServer/Protocol/Handler/CodeActions/RunCodeActionsHandler.cs
浏览文件 @
e91a566f
...
...
@@ -66,11 +66,13 @@ internal class RunCodeActionsHandler : IExecuteWorkspaceCommandHandler
var
actionToRun
=
CodeActionHelpers
.
GetCodeActionToResolve
(
runRequest
.
UniqueIdentifier
,
codeActions
.
ToImmutableArray
());
Contract
.
ThrowIfNull
(
actionToRun
);
var
operations
=
await
actionToRun
.
GetOperationsAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
// TODO - This UI thread dependency should be removed.
// https://github.com/dotnet/roslyn/projects/45#card-20619668
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
foreach
(
var
operation
in
await
actionToRun
.
GetOperationsAsync
(
cancellationToken
).
ConfigureAwait
(
false
)
)
foreach
(
var
operation
in
operations
)
{
operation
.
Apply
(
document
.
Project
.
Solution
.
Workspace
,
cancellationToken
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录