Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
d534f4a8
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,发现更多精彩内容 >>
提交
d534f4a8
编写于
5月 02, 2019
作者:
D
David Barbet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Address feedback + fix liveshare dll load
上级
4037e5f4
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
53 addition
and
101 deletion
+53
-101
src/Features/LanguageServer/Protocol/LanguageServerProtocol.cs
...eatures/LanguageServer/Protocol/LanguageServerProtocol.cs
+36
-84
src/VisualStudio/LiveShare/Impl/ClassificationsHandler.cs
src/VisualStudio/LiveShare/Impl/ClassificationsHandler.cs
+2
-1
src/VisualStudio/LiveShare/Impl/DiagnosticHandler.cs
src/VisualStudio/LiveShare/Impl/DiagnosticHandler.cs
+2
-2
src/VisualStudio/LiveShare/Impl/Microsoft.VisualStudio.LanguageServices.LiveShare.csproj
.../Microsoft.VisualStudio.LanguageServices.LiveShare.csproj
+1
-0
src/VisualStudio/LiveShare/Impl/RunCodeActionsHandler.cs
src/VisualStudio/LiveShare/Impl/RunCodeActionsHandler.cs
+0
-1
src/VisualStudio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
...udio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
+5
-5
src/VisualStudio/LiveShare/Impl/Shims/DocumentSymbolsHandlerShim.cs
...Studio/LiveShare/Impl/Shims/DocumentSymbolsHandlerShim.cs
+0
-8
src/VisualStudio/Setup/AssemblyRedirects.cs
src/VisualStudio/Setup/AssemblyRedirects.cs
+3
-0
src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
+2
-0
src/VisualStudio/Setup/source.extension.vsixmanifest
src/VisualStudio/Setup/source.extension.vsixmanifest
+2
-0
未找到文件。
src/Features/LanguageServer/Protocol/LanguageServerProtocol.cs
浏览文件 @
d534f4a8
...
...
@@ -29,20 +29,20 @@ public LanguageServerProtocol([ImportMany] IEnumerable<Lazy<IRequestHandler, IRe
private
static
ImmutableDictionary
<
string
,
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
CreateMethodToHandlerMap
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
)
{
var
requestHandlerDictionary
=
new
Dictionary
<
string
,
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>();
var
requestHandlerDictionary
=
ImmutableDictionary
.
CreateBuilder
<
string
,
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>();
foreach
(
var
lazyHandler
in
requestHandlers
)
{
requestHandlerDictionary
.
Add
(
lazyHandler
.
Metadata
.
MethodName
,
lazyHandler
);
}
return
requestHandlerDictionary
.
ToImmutable
Dictionary
();
return
requestHandlerDictionary
.
ToImmutable
();
}
private
async
Task
<
ResponseType
>
ExecuteRequestAsync
<
RequestType
,
ResponseType
>(
string
methodName
,
Solution
solution
,
RequestType
request
,
private
Task
<
ResponseType
>
ExecuteRequestAsync
<
RequestType
,
ResponseType
>(
string
methodName
,
Solution
solution
,
RequestType
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
var
handler
=
(
IRequestHandler
<
RequestType
,
ResponseType
>)
_requestHandlers
[
methodName
].
Value
;
return
await
handler
.
HandleRequestAsync
(
solution
,
request
,
clientCapabilities
,
cancellationToken
).
ConfigureAwait
(
false
);
return
handler
.
HandleRequestAsync
(
solution
,
request
,
clientCapabilities
,
cancellationToken
);
}
/// <summary>
...
...
@@ -53,11 +53,8 @@ public LanguageServerProtocol([ImportMany] IEnumerable<Lazy<IRequestHandler, IRe
/// <param name="request">the request document symbol location.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the location(s) of the implementations of the symbol.</returns>
public
async
Task
<
object
>
FindImplementationsAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
object
>(
LSP
.
Methods
.
TextDocumentImplementationName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
object
>
FindImplementationsAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
object
>(
LSP
.
Methods
.
TextDocumentImplementationName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a format document request to format the entire document.
...
...
@@ -67,11 +64,8 @@ public async Task<object> FindImplementationsAsync(Solution solution, LSP.TextDo
/// <param name="request">the request document and formatting options.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the text edits describing the document modifications.</returns>
public
async
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentAsync
(
Solution
solution
,
LSP
.
DocumentFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
DocumentFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentAsync
(
Solution
solution
,
LSP
.
DocumentFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
DocumentFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a format document on type request to format parts of the document during typing.
...
...
@@ -81,11 +75,8 @@ public async Task<LSP.TextEdit[]> FormatDocumentAsync(Solution solution, LSP.Doc
/// <param name="request">the request document, formatting options, and typing information.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the text edits describing the document modifications.</returns>
public
async
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentOnTypeAsync
(
Solution
solution
,
LSP
.
DocumentOnTypeFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
DocumentOnTypeFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentOnTypeFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentOnTypeAsync
(
Solution
solution
,
LSP
.
DocumentOnTypeFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
DocumentOnTypeFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentOnTypeFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a format document range request to format a specific range in the document.
...
...
@@ -95,11 +86,8 @@ public async Task<LSP.TextEdit[]> FormatDocumentOnTypeAsync(Solution solution, L
/// <param name="request">the request document, formatting options, and range to format.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the text edits describing the document modifications.</returns>
public
async
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentRangeAsync
(
Solution
solution
,
LSP
.
DocumentRangeFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
DocumentRangeFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentRangeFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
TextEdit
[
]>
FormatDocumentRangeAsync
(
Solution
solution
,
LSP
.
DocumentRangeFormattingParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
DocumentRangeFormattingParams
,
LSP
.
TextEdit
[
]>
(
LSP
.
Methods
.
TextDocumentRangeFormattingName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a code action request by returning the code actions for the document and range.
...
...
@@ -109,11 +97,8 @@ public async Task<LSP.TextEdit[]> FormatDocumentRangeAsync(Solution solution, LS
/// <param name="request">the document and range to get code actions for.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a list of commands representing code actions.</returns>
public
async
Task
<
LSP
.
Command
[
]>
GetCodeActionsAsync
(
Solution
solution
,
LSP
.
CodeActionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
CodeActionParams
,
LSP
.
Command
[
]>
(
LSP
.
Methods
.
TextDocumentCodeActionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
Command
[
]>
GetCodeActionsAsync
(
Solution
solution
,
LSP
.
CodeActionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
CodeActionParams
,
LSP
.
Command
[
]>
(
LSP
.
Methods
.
TextDocumentCodeActionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a completion request by returning the valid completions at the location.
...
...
@@ -123,11 +108,8 @@ public async Task<LSP.Command[]> GetCodeActionsAsync(Solution solution, LSP.Code
/// <param name="request">the document position and completion context.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a list of completions.</returns>
public
async
Task
<
object
>
GetCompletionsAsync
(
Solution
solution
,
LSP
.
CompletionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
CompletionParams
,
object
>(
LSP
.
Methods
.
TextDocumentCompletionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
object
>
GetCompletionsAsync
(
Solution
solution
,
LSP
.
CompletionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
CompletionParams
,
object
>(
LSP
.
Methods
.
TextDocumentCompletionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a document highlights request by returning the highlights for a given document location.
...
...
@@ -137,11 +119,8 @@ public async Task<object> GetCompletionsAsync(Solution solution, LSP.CompletionP
/// <param name="request">the request document location.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the highlights in the document for the given document location.</returns>
public
async
Task
<
LSP
.
DocumentHighlight
[
]>
GetDocumentHighlightAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
DocumentHighlight
[
]>
(
LSP
.
Methods
.
TextDocumentDocumentHighlightName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
DocumentHighlight
[
]>
GetDocumentHighlightAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
DocumentHighlight
[
]>
(
LSP
.
Methods
.
TextDocumentDocumentHighlightName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a document symbols request by returning a list of symbols in the document.
...
...
@@ -151,11 +130,8 @@ public async Task<LSP.DocumentHighlight[]> GetDocumentHighlightAsync(Solution so
/// <param name="request">the document to get symbols from.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a list of symbols in the document.</returns>
public
async
Task
<
object
[
]>
GetDocumentSymbolsAsync
(
Solution
solution
,
LSP
.
DocumentSymbolParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
DocumentSymbolParams
,
object
[
]>
(
LSP
.
Methods
.
TextDocumentDocumentSymbolName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
object
[
]>
GetDocumentSymbolsAsync
(
Solution
solution
,
LSP
.
DocumentSymbolParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
DocumentSymbolParams
,
object
[
]>
(
LSP
.
Methods
.
TextDocumentDocumentSymbolName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a folding range request by returning all folding ranges in a given document.
...
...
@@ -165,11 +141,8 @@ public async Task<object[]> GetDocumentSymbolsAsync(Solution solution, LSP.Docum
/// <param name="request">the request document.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a list of folding ranges in the document.</returns>
public
async
Task
<
LSP
.
FoldingRange
[
]>
GetFoldingRangeAsync
(
Solution
solution
,
LSP
.
FoldingRangeParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
FoldingRangeParams
,
LSP
.
FoldingRange
[
]>
(
LSP
.
Methods
.
TextDocumentFoldingRangeName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
FoldingRange
[
]>
GetFoldingRangeAsync
(
Solution
solution
,
LSP
.
FoldingRangeParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
FoldingRangeParams
,
LSP
.
FoldingRange
[
]>
(
LSP
.
Methods
.
TextDocumentFoldingRangeName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a Hover request by returning the quick info at the requested location.
...
...
@@ -179,11 +152,8 @@ public async Task<LSP.FoldingRange[]> GetFoldingRangeAsync(Solution solution, LS
/// <param name="request">the hover requesst.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the Hover using MarkupContent.</returns>
public
async
Task
<
LSP
.
Hover
>
GetHoverAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Hover
>(
LSP
.
Methods
.
TextDocumentHoverName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
Hover
>
GetHoverAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Hover
>(
LSP
.
Methods
.
TextDocumentHoverName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a signature help request to get signature information at a given cursor position.
...
...
@@ -193,11 +163,8 @@ public async Task<LSP.Hover> GetHoverAsync(Solution solution, LSP.TextDocumentPo
/// <param name="request">the request document position.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the signature help at a given location.</returns>
public
async
Task
<
LSP
.
SignatureHelp
>
GetSignatureHelpAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
SignatureHelp
>(
LSP
.
Methods
.
TextDocumentSignatureHelpName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
SignatureHelp
>
GetSignatureHelpAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
SignatureHelp
>(
LSP
.
Methods
.
TextDocumentSignatureHelpName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a workspace symbols request by providing a list of symbols found in a given workspace.
...
...
@@ -207,11 +174,8 @@ public async Task<LSP.SignatureHelp> GetSignatureHelpAsync(Solution solution, LS
/// <param name="request">the workspace request with the query to invoke.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a list of symbols in the workspace.</returns>
public
async
Task
<
LSP
.
SymbolInformation
[
]>
GetWorkspaceSymbolsAsync
(
Solution
solution
,
LSP
.
WorkspaceSymbolParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
WorkspaceSymbolParams
,
LSP
.
SymbolInformation
[
]>
(
LSP
.
Methods
.
WorkspaceSymbolName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
SymbolInformation
[
]>
GetWorkspaceSymbolsAsync
(
Solution
solution
,
LSP
.
WorkspaceSymbolParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
WorkspaceSymbolParams
,
LSP
.
SymbolInformation
[
]>
(
LSP
.
Methods
.
WorkspaceSymbolName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a goto definition request by returning the location for a given symbol definition.
...
...
@@ -221,11 +185,8 @@ public async Task<LSP.SymbolInformation[]> GetWorkspaceSymbolsAsync(Solution sol
/// <param name="request">the document position of the symbol to go to.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the location of a given symbol.</returns>
public
async
Task
<
LSP
.
Location
[
]>
GoToDefinitionAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Location
[
]>
(
LSP
.
Methods
.
TextDocumentDefinitionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
Location
[
]>
GoToDefinitionAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Location
[
]>
(
LSP
.
Methods
.
TextDocumentDefinitionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a goto type definition request by returning the location of a given type definition.
...
...
@@ -235,11 +196,8 @@ public async Task<LSP.Location[]> GoToDefinitionAsync(Solution solution, LSP.Tex
/// <param name="request">the document position of the type to go to.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the location of a type definition.</returns>
public
async
Task
<
LSP
.
Location
[
]>
GoToTypeDefinitionAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Location
[
]>
(
LSP
.
Methods
.
TextDocumentTypeDefinitionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
Location
[
]>
GoToTypeDefinitionAsync
(
Solution
solution
,
LSP
.
TextDocumentPositionParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
TextDocumentPositionParams
,
LSP
.
Location
[
]>
(
LSP
.
Methods
.
TextDocumentTypeDefinitionName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers an initialize request by returning the server capabilities.
...
...
@@ -249,11 +207,8 @@ public async Task<LSP.Location[]> GoToTypeDefinitionAsync(Solution solution, LSP
/// <param name="request">the initialize parameters.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>the server cababilities.</returns>
public
async
Task
<
LSP
.
InitializeResult
>
InitializeAsync
(
Solution
solution
,
LSP
.
InitializeParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
InitializeParams
,
LSP
.
InitializeResult
>(
LSP
.
Methods
.
InitializeName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
InitializeResult
>
InitializeAsync
(
Solution
solution
,
LSP
.
InitializeParams
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
InitializeParams
,
LSP
.
InitializeResult
>(
LSP
.
Methods
.
InitializeName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
/// <summary>
/// Answers a request to resolve a completion item.
...
...
@@ -263,10 +218,7 @@ public async Task<LSP.InitializeResult> InitializeAsync(Solution solution, LSP.I
/// <param name="request">the completion item to resolve.</param>
/// <param name="cancellationToken">a cancellation token.</param>
/// <returns>a resolved completion item.</returns>
public
async
Task
<
LSP
.
CompletionItem
>
ResolveCompletionItemAsync
(
Solution
solution
,
LSP
.
CompletionItem
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
{
return
await
ExecuteRequestAsync
<
LSP
.
CompletionItem
,
LSP
.
CompletionItem
>(
LSP
.
Methods
.
TextDocumentCompletionResolveName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
)
.
ConfigureAwait
(
false
);
}
public
Task
<
LSP
.
CompletionItem
>
ResolveCompletionItemAsync
(
Solution
solution
,
LSP
.
CompletionItem
request
,
LSP
.
ClientCapabilities
clientCapabilities
,
CancellationToken
cancellationToken
)
=>
ExecuteRequestAsync
<
LSP
.
CompletionItem
,
LSP
.
CompletionItem
>(
LSP
.
Methods
.
TextDocumentCompletionResolveName
,
solution
,
request
,
clientCapabilities
,
cancellationToken
);
}
}
src/VisualStudio/LiveShare/Impl/ClassificationsHandler.cs
浏览文件 @
d534f4a8
...
...
@@ -23,7 +23,8 @@ internal class ClassificationsHandler : ILspRequestHandler<ClassificationParams,
{
public
async
Task
<
ClassificationSpan
[
]>
HandleAsync
(
ClassificationParams
request
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
{
var
document
=
requestContext
.
Context
.
GetDocumentFromURI
(
request
.
TextDocument
.
Uri
);
var
actualDocumentURI
=
requestContext
.
ProtocolConverter
.
FromProtocolUri
(
request
.
TextDocument
.
Uri
);
var
document
=
requestContext
.
Context
.
GetDocumentFromURI
(
actualDocumentURI
);
var
classificationService
=
document
?.
Project
.
LanguageServices
.
GetService
<
IClassificationService
>();
if
(
document
==
null
||
classificationService
==
null
)
...
...
src/VisualStudio/LiveShare/Impl/DiagnosticHandler.cs
浏览文件 @
d534f4a8
...
...
@@ -7,6 +7,7 @@
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.ErrorReporting
;
using
Microsoft.CodeAnalysis.LanguageServer
;
using
Microsoft.VisualStudio.LanguageServices.LiveShare.CustomProtocol
;
using
Microsoft.VisualStudio.LiveShare.LanguageServices
;
...
...
@@ -54,9 +55,8 @@ private async void DiagnosticService_DiagnosticsUpdated(object sender, Diagnosti
await
(
NotifyAsync
?.
InvokeAsync
(
this
,
eventArgs
)).
ConfigureAwait
(
false
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
when
(
FatalError
.
ReportWithoutCrash
(
ex
))
{
// TODO - Replace trace
}
}
...
...
src/VisualStudio/LiveShare/Impl/Microsoft.VisualStudio.LanguageServices.LiveShare.csproj
浏览文件 @
d534f4a8
...
...
@@ -6,6 +6,7 @@
<RootNamespace>
Microsoft.VisualStudio.LanguageServices.LiveShare
</RootNamespace>
<AssemblyName>
Microsoft.VisualStudio.LanguageServices.LiveShare
</AssemblyName>
<TargetFramework>
net472
</TargetFramework>
<CreateVsixContainer>
false
</CreateVsixContainer>
<IsPackable>
true
</IsPackable>
<PackageDescription>
A private package for the liveshare team to grant access to LSP implementations.
...
...
src/VisualStudio/LiveShare/Impl/RunCodeActionsHandler.cs
浏览文件 @
d534f4a8
...
...
@@ -43,7 +43,6 @@ public async Task<object> HandleAsync(LSP.ExecuteCommandParams request, RequestC
if
(
request
.
Command
==
RunCodeActionCommandName
)
{
var
runRequest
=
((
JToken
)
request
.
Arguments
.
Single
()).
ToObject
<
RunCodeActionParams
>();
var
codeActions
=
await
GetCodeActionsAsync
(
solution
,
runRequest
.
TextDocument
.
Uri
,
runRequest
.
Range
,
...
...
src/VisualStudio/LiveShare/Impl/Shims/AbstractLiveShareHandlerShim.cs
浏览文件 @
d534f4a8
...
...
@@ -16,21 +16,21 @@ namespace Microsoft.VisualStudio.LanguageServices.LiveShare
/// </summary>
internal
abstract
class
AbstractLiveShareHandlerShim
<
RequestType
,
ResponseType
>
:
ILspRequestHandler
<
RequestType
,
ResponseType
,
Solution
>
{
private
readonly
IRequestHandler
<
RequestType
,
ResponseType
>
_r
equestHandler
;
private
readonly
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>
_lazyR
equestHandler
;
public
AbstractLiveShareHandlerShim
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
)
{
_
r
equestHandler
=
GetRequestHandler
(
requestHandlers
,
methodName
);
_
lazyR
equestHandler
=
GetRequestHandler
(
requestHandlers
,
methodName
);
}
public
virtual
Task
<
ResponseType
>
HandleAsync
(
RequestType
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
{
return
_requestHandler
.
HandleRequestAsync
(
requestContext
.
Context
,
param
,
requestContext
.
ClientCapabilities
,
cancellationToken
);
return
((
IRequestHandler
<
RequestType
,
ResponseType
>)
_lazyRequestHandler
.
Value
)
.
HandleRequestAsync
(
requestContext
.
Context
,
param
,
requestContext
.
ClientCapabilities
,
cancellationToken
);
}
protected
IRequestHandler
<
RequestType
,
ResponseType
>
GetRequestHandler
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
)
protected
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>
GetRequestHandler
(
IEnumerable
<
Lazy
<
IRequestHandler
,
IRequestHandlerMetadata
>>
requestHandlers
,
string
methodName
)
{
return
(
IRequestHandler
<
RequestType
,
ResponseType
>)
requestHandlers
.
First
(
handler
=>
handler
.
Metadata
.
MethodName
==
methodName
).
Value
;
return
requestHandlers
.
First
(
handler
=>
handler
.
Metadata
.
MethodName
==
methodName
)
;
}
}
}
src/VisualStudio/LiveShare/Impl/Shims/DocumentSymbolsHandlerShim.cs
浏览文件 @
d534f4a8
...
...
@@ -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.LanguageServer.Handler
;
using
Microsoft.VisualStudio.LanguageServer.Protocol
;
using
Microsoft.VisualStudio.LiveShare.LanguageServices
;
...
...
@@ -20,10 +17,5 @@ public DocumentSymbolsHandlerShim([ImportMany] IEnumerable<Lazy<IRequestHandler,
:
base
(
requestHandlers
,
Methods
.
TextDocumentDocumentSymbolName
)
{
}
public
override
Task
<
object
[
]>
HandleAsync
(
DocumentSymbolParams
param
,
RequestContext
<
Solution
>
requestContext
,
CancellationToken
cancellationToken
)
{
return
base
.
HandleAsync
(
param
,
requestContext
,
cancellationToken
);
}
}
}
src/VisualStudio/Setup/AssemblyRedirects.cs
浏览文件 @
d534f4a8
...
...
@@ -57,6 +57,9 @@
[
assembly
:
ProvideCodeBase
(
CodeBase
=
@"$PackageFolder$\System.Composition.TypedParts.dll"
)]
[
assembly
:
ProvideCodeBase
(
CodeBase
=
@"$PackageFolder$\Humanizer.dll"
)]
[
assembly
:
ProvideRoslynBindingRedirection
(
"Microsoft.VisualStudio.LanguageServer.Protocol.dll"
)]
[
assembly
:
ProvideRoslynBindingRedirection
(
"Microsoft.VisualStudio.LanguageServer.Protocol.Extensions.dll"
)]
[
assembly
:
ProvideCodeBase
(
CodeBase
=
@"$PackageFolder$\ICSharpCode.Decompiler.dll"
)]
[
assembly
:
ProvideBindingRedirection
(
...
...
src/VisualStudio/Setup/Roslyn.VisualStudio.Setup.csproj
浏览文件 @
d534f4a8
...
...
@@ -242,6 +242,8 @@
<NuGetPackageToIncludeInVsix
Include=
"System.Composition.Convention"
/>
<NuGetPackageToIncludeInVsix
Include=
"System.Composition.Hosting"
/>
<NuGetPackageToIncludeInVsix
Include=
"ICSharpCode.Decompiler"
/>
<NuGetPackageToIncludeInVsix
Include=
"Microsoft.VisualStudio.LanguageServer.Protocol"
/>
<NuGetPackageToIncludeInVsix
Include=
"Microsoft.VisualStudio.LanguageServer.Protocol.Extensions"
/>
</ItemGroup>
<ItemGroup>
<VSIXSourceItem
Include=
"$(NuGetPackageRoot)\SQLitePCLRaw.bundle_green\1.1.2\lib\net45\SQLitePCLRaw.batteries_green.dll"
/>
...
...
src/VisualStudio/Setup/source.extension.vsixmanifest
浏览文件 @
d534f4a8
...
...
@@ -60,6 +60,8 @@
<Asset
Type=
"Microsoft.VisualStudio.Analyzer"
d:Source=
"Project"
d:ProjectName=
"XamlVisualStudio"
Path=
"|XamlVisualStudio|"
/>
<Asset
Type=
"Microsoft.VisualStudio.MefComponent"
Path=
"Microsoft.CodeAnalysis.ExternalAccess.Debugger.dll"
/>
<Asset
Type=
"Microsoft.VisualStudio.MefComponent"
Path=
"Microsoft.CodeAnalysis.ExternalAccess.UnitTesting.dll"
/>
<Asset
Type=
"Microsoft.VisualStudio.MefComponent"
Path=
"Microsoft.VisualStudio.LanguageServices.LiveShare.dll"
/>
<Asset
Type=
"Microsoft.VisualStudio.MefComponent"
Path=
"Microsoft.CodeAnalysis.LanguageServer.Protocol.dll"
/>
</Assets>
<Prerequisites>
<Prerequisite
Id=
"Microsoft.VisualStudio.Component.CoreEditor"
Version=
"[15.0,17.0)"
DisplayName=
"Visual Studio core editor"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录