Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
5a8f8287
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,发现更多精彩内容 >>
提交
5a8f8287
编写于
8月 29, 2019
作者:
D
David Barbet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make only typescript handlers and run code actions switch to main thread.
上级
cd4841c6
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
90 addition
and
84 deletion
+90
-84
src/VisualStudio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
...udio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
+23
-6
src/VisualStudio/LiveShare/Impl/Shims/FindImplementationsHandlerShim.cs
...io/LiveShare/Impl/Shims/FindImplementationsHandlerShim.cs
+14
-17
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentHandlerShim.cs
...lStudio/LiveShare/Impl/Shims/FormatDocumentHandlerShim.cs
+21
-19
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentOnTypeHandlerShim.cs
...o/LiveShare/Impl/Shims/FormatDocumentOnTypeHandlerShim.cs
+14
-17
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentRangeHandlerShim.cs
...io/LiveShare/Impl/Shims/FormatDocumentRangeHandlerShim.cs
+14
-17
src/VisualStudio/LiveShare/Impl/Shims/RunCodeActionsHandlerShim.cs
...lStudio/LiveShare/Impl/Shims/RunCodeActionsHandlerShim.cs
+4
-8
未找到文件。
src/VisualStudio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -6,6 +6,7 @@
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Shared.Utilities
;
using
Microsoft.CodeAnalysis.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
using
Microsoft.VisualStudio.LiveShare.LanguageServices
;
...
...
@@ -29,18 +30,34 @@ public virtual Task<ResponseType> HandleAsync(RequestType param, RequestContext<
return
((
IRequestHandler
<
RequestType
,
ResponseType
>)
LazyRequestHandler
.
Value
).
HandleRequestAsync
(
requestContext
.
Context
,
param
,
requestContext
.
ClientCapabilities
?.
ToObject
<
VSClientCapabilities
>(),
cancellationToken
);
}
protected
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>
GetRequestHandler
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
)
{
return
requestHandlers
.
First
(
handler
=>
handler
.
Metadata
.
MethodName
==
methodName
);
}
}
internal
abstract
class
AbstractLiveShareHandlerOnMainThreadShim
<
RequestType
,
ResponseType
>
:
AbstractLiveShareHandlerShim
<
RequestType
,
ResponseType
>
{
private
readonly
IThreadingContext
_threadingContext
;
public
AbstractLiveShareHandlerOnMainThreadShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
methodName
)
{
_threadingContext
=
threadingContext
;
}
public
override
async
Task
<
ResponseType
>
HandleAsync
(
RequestType
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
{
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
HandleAsyncPreserveThreadContext
(
param
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
/// <summary>
/// Certain implementations require that the processing be done on the UI thread.
/// So allow the handler to specifiy that the thread context should be preserved.
/// </summary>
pr
otected
Task
<
ResponseType
>
HandleAsyncPreserveThreadContext
(
RequestType
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
pr
ivate
Task
<
ResponseType
>
HandleAsyncPreserveThreadContext
(
RequestType
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
{
return
((
IRequestHandler
<
RequestType
,
ResponseType
>)
LazyRequestHandler
.
Value
).
HandleRequestAsync
(
requestContext
.
Context
,
param
,
requestContext
.
ClientCapabilities
?.
ToObject
<
ClientCapabilities
>(),
cancellationToken
,
keepThreadContext
:
true
);
}
protected
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>
GetRequestHandler
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
)
{
return
requestHandlers
.
First
(
handler
=>
handler
.
Metadata
.
MethodName
==
methodName
);
}
}
}
src/VisualStudio/LiveShare/Impl/Shims/FindImplementationsHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -3,9 +3,6 @@
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.Composition
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Shared.Utilities
;
using
Microsoft.CodeAnalysis.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
...
...
@@ -13,27 +10,27 @@
namespace
Microsoft.VisualStudio.LanguageServices.LiveShare
{
internal
class
FindImplementationsHandlerShim
:
AbstractLiveShareHandlerShim
<
TextDocumentPositionParams
,
object
>
/// <summary>
/// Typescript format expects to be called from the main thread.
/// </summary>
internal
class
FindImplementationsHandlerOnMainThreadShim
:
AbstractLiveShareHandlerOnMainThreadShim
<
TextDocumentPositionParams
,
object
>
{
private
readonly
IThreadingContext
_threadingContext
;
public
FindImplementationsHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentImplementationName
)
public
FindImplementationsHandlerOnMainThreadShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentImplementationName
,
threadingContext
)
{
_threadingContext
=
threadingContext
;
}
}
public
override
async
Task
<
object
>
HandleAsync
(
TextDocumentPositionParams
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
internal
class
FindImplementationsHandlerShim
:
AbstractLiveShareHandlerShim
<
TextDocumentPositionParams
,
object
>
{
public
FindImplementationsHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentImplementationName
)
{
// TypeScript requires this call to be on the UI thread.
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
base
.
HandleAsyncPreserveThreadContext
(
param
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
RoslynContractName
,
Methods
.
TextDocumentImplementationName
)]
[
Obsolete
(
"Used for backwards compatibility with old liveshare clients."
)]
internal
class
RoslynFindImplementationsHandlerShim
:
FindImplementationsHandlerShim
internal
class
RoslynFindImplementationsHandlerShim
:
FindImplementationsHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
RoslynFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
@@ -45,7 +42,7 @@ public RoslynFindImplementationsHandlerShim([ImportMany] IEnumerable<Lazy<IReque
internal
class
CSharpFindImplementationsHandlerShim
:
FindImplementationsHandlerShim
{
[
ImportingConstructor
]
public
CSharpFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
CSharpFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
...
...
@@ -54,13 +51,13 @@ public CSharpFindImplementationsHandlerShim([ImportMany] IEnumerable<Lazy<IReque
internal
class
VisualBasicFindImplementationsHandlerShim
:
FindImplementationsHandlerShim
{
[
ImportingConstructor
]
public
VisualBasicFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
VisualBasicFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
TypeScriptContractName
,
Methods
.
TextDocumentImplementationName
)]
internal
class
TypeScriptFindImplementationsHandlerShim
:
FindImplementationsHandlerShim
internal
class
TypeScriptFindImplementationsHandlerShim
:
FindImplementationsHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
TypeScriptFindImplementationsHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -3,9 +3,6 @@
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.Composition
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Shared.Utilities
;
using
Microsoft.CodeAnalysis.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
...
...
@@ -13,30 +10,34 @@
namespace
Microsoft.VisualStudio.LanguageServices.LiveShare
{
internal
class
FormatDocumentHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentFormattingParams
,
TextEdit
[
]>
/// <summary>
/// Typescript format expects to be called from the main thread.
/// </summary>
internal
class
FormatDocumentHandlerOnMainThreadShim
:
AbstractLiveShareHandlerOnMainThreadShim
<
DocumentFormattingParams
,
TextEdit
[
]>
{
private
readonly
IThreadingContext
_threadingContext
;
public
FormatDocumentHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentFormattingName
)
public
FormatDocumentHandlerOnMainThreadShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentFormattingName
,
threadingContext
)
{
_threadingContext
=
threadingContext
;
}
}
public
override
async
Task
<
TextEdit
[
]>
HandleAsync
(
DocumentFormattingParams
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
internal
class
FormatDocumentHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentFormattingParams
,
TextEdit
[
]>
{
public
FormatDocumentHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentFormattingName
)
{
// To get the formatting options, TypeScript expects to be called on the UI thread.
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
base
.
HandleAsyncPreserveThreadContext
(
param
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
RoslynContractName
,
Methods
.
TextDocumentFormattingName
)]
[
Obsolete
(
"Used for backwards compatibility with old liveshare clients."
)]
internal
class
RoslynFormatDocumentHandlerShim
:
FormatDocumentHandlerShim
internal
class
RoslynFormatDocumentHandlerShim
:
FormatDocumentHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
RoslynFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
RoslynFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
{
}
}
...
...
@@ -45,7 +46,7 @@ public RoslynFormatDocumentHandlerShim([ImportMany] IEnumerable<Lazy<IRequestHan
internal
class
CSharpFormatDocumentHandlerShim
:
FormatDocumentHandlerShim
{
[
ImportingConstructor
]
public
CSharpFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
CSharpFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
...
...
@@ -54,16 +55,17 @@ public CSharpFormatDocumentHandlerShim([ImportMany] IEnumerable<Lazy<IRequestHan
internal
class
VisualBasicFormatDocumentHandlerShim
:
FormatDocumentHandlerShim
{
[
ImportingConstructor
]
public
VisualBasicFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
VisualBasicFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
TypeScriptContractName
,
Methods
.
TextDocumentFormattingName
)]
internal
class
TypeScriptFormatDocumentHandlerShim
:
FormatDocumentHandlerShim
internal
class
TypeScriptFormatDocumentHandlerShim
:
FormatDocumentHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
TypeScriptFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
TypeScriptFormatDocumentHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
{
}
}
...
...
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentOnTypeHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -3,9 +3,6 @@
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.Composition
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Shared.Utilities
;
using
Microsoft.CodeAnalysis.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
...
...
@@ -13,27 +10,27 @@
namespace
Microsoft.VisualStudio.LanguageServices.LiveShare
{
internal
class
FormatDocumentOnTypeHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentOnTypeFormattingParams
,
TextEdit
[
]>
/// <summary>
/// Typescript format expects to be called from the main thread.
/// </summary>
internal
class
FormatDocumentOnTypeHandlerOnMainThreadShim
:
AbstractLiveShareHandlerOnMainThreadShim
<
DocumentOnTypeFormattingParams
,
TextEdit
[
]>
{
private
readonly
IThreadingContext
_threadingContext
;
public
FormatDocumentOnTypeHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentOnTypeFormattingName
)
public
FormatDocumentOnTypeHandlerOnMainThreadShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentOnTypeFormattingName
,
threadingContext
)
{
_threadingContext
=
threadingContext
;
}
}
public
override
async
Task
<
TextEdit
[
]>
HandleAsync
(
DocumentOnTypeFormattingParams
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
internal
class
FormatDocumentOnTypeHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentOnTypeFormattingParams
,
TextEdit
[
]>
{
public
FormatDocumentOnTypeHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentOnTypeFormattingName
)
{
// To get the formatting options, TypeScript expects to be called on the UI thread.
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
base
.
HandleAsyncPreserveThreadContext
(
param
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
RoslynContractName
,
Methods
.
TextDocumentOnTypeFormattingName
)]
[
Obsolete
(
"Used for backwards compatibility with old liveshare clients."
)]
internal
class
RoslynFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandlerShim
internal
class
RoslynFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
RoslynFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
@@ -45,7 +42,7 @@ public RoslynFormatDocumentOnTypeHandlerShim([ImportMany] IEnumerable<Lazy<IRequ
internal
class
CSharpFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandlerShim
{
[
ImportingConstructor
]
public
CSharpFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
CSharpFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
...
...
@@ -54,13 +51,13 @@ public CSharpFormatDocumentOnTypeHandlerShim([ImportMany] IEnumerable<Lazy<IRequ
internal
class
VisualBasicFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandlerShim
{
[
ImportingConstructor
]
public
VisualBasicFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
VisualBasicFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
TypeScriptContractName
,
Methods
.
TextDocumentOnTypeFormattingName
)]
internal
class
TypeScriptFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandlerShim
internal
class
TypeScriptFormatDocumentOnTypeHandlerShim
:
FormatDocumentOnTypeHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
TypeScriptFormatDocumentOnTypeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
src/VisualStudio/LiveShare/Impl/Shims/FormatDocumentRangeHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -3,9 +3,6 @@
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel.Composition
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Shared.Utilities
;
using
Microsoft.CodeAnalysis.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
...
...
@@ -13,27 +10,27 @@
namespace
Microsoft.VisualStudio.LanguageServices.LiveShare
{
internal
class
FormatDocumentRangeHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentRangeFormattingParams
,
TextEdit
[
]>
/// <summary>
/// Typescript format expects to be called from the main thread.
/// </summary>
internal
class
FormatDocumentRangeHandlerOnMainThreadShim
:
AbstractLiveShareHandlerOnMainThreadShim
<
DocumentRangeFormattingParams
,
TextEdit
[
]>
{
private
readonly
IThreadingContext
_threadingContext
;
public
FormatDocumentRangeHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentRangeFormattingName
)
public
FormatDocumentRangeHandlerOnMainThreadShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentRangeFormattingName
,
threadingContext
)
{
_threadingContext
=
threadingContext
;
}
}
public
override
async
Task
<
TextEdit
[
]>
HandleAsync
(
DocumentRangeFormattingParams
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
internal
class
FormatDocumentRangeHandlerShim
:
AbstractLiveShareHandlerShim
<
DocumentRangeFormattingParams
,
TextEdit
[
]>
{
public
FormatDocumentRangeHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
,
Methods
.
TextDocumentRangeFormattingName
)
{
// To get the formatting options, TypeScript expects to be called on the UI thread.
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
base
.
HandleAsyncPreserveThreadContext
(
param
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
RoslynContractName
,
Methods
.
TextDocumentRangeFormattingName
)]
[
Obsolete
(
"Used for backwards compatibility with old liveshare clients."
)]
internal
class
RoslynFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandlerShim
internal
class
RoslynFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
RoslynFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
@@ -45,7 +42,7 @@ public RoslynFormatDocumentRangeHandlerShim([ImportMany] IEnumerable<Lazy<IReque
internal
class
CSharpFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandlerShim
{
[
ImportingConstructor
]
public
CSharpFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
CSharpFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
...
...
@@ -54,13 +51,13 @@ public CSharpFormatDocumentRangeHandlerShim([ImportMany] IEnumerable<Lazy<IReque
internal
class
VisualBasicFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandlerShim
{
[
ImportingConstructor
]
public
VisualBasicFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
public
VisualBasicFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
:
base
(
requestHandlers
)
{
}
}
[
ExportLspRequestHandler
(
LiveShareConstants
.
TypeScriptContractName
,
Methods
.
TextDocumentRangeFormattingName
)]
internal
class
TypeScriptFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandlerShim
internal
class
TypeScriptFormatDocumentRangeHandlerShim
:
FormatDocumentRangeHandler
OnMainThread
Shim
{
[
ImportingConstructor
]
public
TypeScriptFormatDocumentRangeHandlerShim
([
ImportMany
]
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
threadingContext
)
...
...
src/VisualStudio/LiveShare/Impl/Shims/RunCodeActionsHandlerShim.cs
浏览文件 @
5a8f8287
...
...
@@ -18,15 +18,13 @@ namespace Microsoft.VisualStudio.LanguageServices.LiveShare
{
/// <summary>
/// Run code actions handler. Called when lightbulb invoked.
/// Code actions must be applied from the UI thread in VS.
/// </summary>
internal
class
RunCodeActionsHandlerShim
:
AbstractLiveShareHandlerShim
<
LSP
.
ExecuteCommandParams
,
object
>
internal
class
RunCodeActionsHandlerShim
:
AbstractLiveShareHandler
OnMainThread
Shim
<
LSP
.
ExecuteCommandParams
,
object
>
{
private
readonly
IThreadingContext
_threadingContext
;
public
RunCodeActionsHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
IThreadingContext
threadingContext
)
:
base
(
requestHandlers
,
LSP
.
Methods
.
WorkspaceExecuteCommandName
)
:
base
(
requestHandlers
,
LSP
.
Methods
.
WorkspaceExecuteCommandName
,
threadingContext
)
{
_threadingContext
=
threadingContext
;
}
/// <summary>
...
...
@@ -47,9 +45,7 @@ public async override Task<object> HandleAsync(LSP.ExecuteCommandParams request,
try
{
// Code actions must be applied from the UI thread in the VS context.
await
_threadingContext
.
JoinableTaskFactory
.
SwitchToMainThreadAsync
(
cancellationToken
);
return
await
base
.
HandleAsyncPreserveThreadContext
(
request
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
return
await
base
.
HandleAsync
(
request
,
requestContext
,
cancellationToken
).
ConfigureAwait
(
false
);
}
catch
(
ArgumentException
ex
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录