Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
5e2bd9e5
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,发现更多精彩内容 >>
未验证
提交
5e2bd9e5
编写于
3月 02, 2020
作者:
J
Joey Robichaud
提交者:
GitHub
3月 02, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #40513 from JoeRobich/workspace-registers-optionsprovider
Always try to register the EditorConfigDocumentOptionsProvider
上级
43df70ab
48bf4d9a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
25 addition
and
30 deletion
+25
-30
src/VisualStudio/Core/Def/Implementation/TaskList/CommentTaskTokenSerializer.cs
...Def/Implementation/TaskList/CommentTaskTokenSerializer.cs
+5
-6
src/VisualStudio/Core/Def/RoslynPackage.cs
src/VisualStudio/Core/Def/RoslynPackage.cs
+3
-3
src/Workspaces/Core/Portable/Options/EditorConfig/EditorConfigDocumentOptionsProviderFactory.cs
...ditorConfig/EditorConfigDocumentOptionsProviderFactory.cs
+13
-21
src/Workspaces/Core/Portable/Workspace/Workspace.cs
src/Workspaces/Core/Portable/Workspace/Workspace.cs
+4
-0
未找到文件。
src/VisualStudio/Core/Def/Implementation/TaskList/CommentTaskTokenSerializer.cs
浏览文件 @
5e2bd9e5
...
...
@@ -16,17 +16,17 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.TaskList
[
Export
(
typeof
(
IOptionPersister
))]
internal
class
CommentTaskTokenSerializer
:
IOptionPersister
{
private
readonly
VisualStudioWorkspace
_workspace
;
private
readonly
ITaskList
_taskList
;
private
readonly
IGlobalOptionService
_globalOptionService
;
private
string
_lastCommentTokenCache
=
null
;
[
ImportingConstructor
]
public
CommentTaskTokenSerializer
(
VisualStudioWorkspace
workspa
ce
,
IGlobalOptionService
globalOptionServi
ce
,
[
Import
(
typeof
(
SVsServiceProvider
))]
IServiceProvider
serviceProvider
)
{
_
workspace
=
workspa
ce
;
_
globalOptionService
=
globalOptionServi
ce
;
// The SVsTaskList may not be available or doesn't actually implement ITaskList
// in the "devenv /build" scenario
...
...
@@ -68,8 +68,7 @@ private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
var
commentString
=
GetTaskTokenList
(
_taskList
);
var
optionSet
=
_workspace
.
Options
;
var
optionValue
=
optionSet
.
GetOption
(
TodoCommentOptions
.
TokenList
);
var
optionValue
=
_globalOptionService
.
GetOption
(
TodoCommentOptions
.
TokenList
);
if
(
optionValue
==
commentString
)
{
return
;
...
...
@@ -79,7 +78,7 @@ private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
_lastCommentTokenCache
=
commentString
;
// let people to know that comment string has changed
_
workspace
.
SetOptions
(
optionSet
.
WithChangedOption
(
TodoCommentOptions
.
TokenList
,
_lastCommentTokenCache
)
);
_
globalOptionService
.
RefreshOption
(
TodoCommentOptions
.
TokenList
,
_lastCommentTokenCache
);
}
private
static
string
GetTaskTokenList
(
ITaskList
taskList
)
...
...
src/VisualStudio/Core/Def/RoslynPackage.cs
浏览文件 @
5e2bd9e5
...
...
@@ -75,12 +75,12 @@ protected override async Task InitializeAsync(CancellationToken cancellationToke
var
method
=
compilerFailFast
.
GetMethod
(
nameof
(
FailFast
.
OnFatalException
),
BindingFlags
.
Static
|
BindingFlags
.
NonPublic
);
property
.
SetValue
(
null
,
Delegate
.
CreateDelegate
(
property
.
PropertyType
,
method
));
_workspace
=
_componentModel
.
GetService
<
VisualStudioWorkspace
>();
_workspace
.
Services
.
GetService
<
IExperimentationService
>();
// Ensure the options persisters are loaded since we have to fetch options from the shell
_componentModel
.
GetExtensions
<
IOptionPersister
>();
_workspace
=
_componentModel
.
GetService
<
VisualStudioWorkspace
>();
_workspace
.
Services
.
GetService
<
IExperimentationService
>();
RoslynTelemetrySetup
.
Initialize
(
this
);
InitializeColors
();
...
...
src/Workspaces/Core/Portable/Options/EditorConfig/EditorConfigDocumentOptionsProviderFactory.cs
浏览文件 @
5e2bd9e5
...
...
@@ -6,7 +6,6 @@
using
System
;
using
System.Collections.Immutable
;
using
System.Composition
;
using
System.Linq
;
using
System.Threading
;
using
System.Threading.Tasks
;
...
...
@@ -15,24 +14,11 @@
namespace
Microsoft.CodeAnalysis.Options.EditorConfig
{
[
Export
(
typeof
(
IDocumentOptionsProviderFactory
)),
Shared
]
[
ExportMetadata
(
"Name"
,
PredefinedDocumentOptionsProviderNames
.
EditorConfig
)]
internal
sealed
class
EditorConfigDocumentOptionsProviderFactory
:
IDocumentOptionsProviderFactory
internal
static
class
EditorConfigDocumentOptionsProviderFactory
{
[
ImportingConstructor
]
public
EditorConfigDocumentOptionsProviderFactory
()
public
static
IDocumentOptionsProvider
Create
(
Workspace
workspace
)
{
}
public
IDocumentOptionsProvider
?
TryCreate
(
Workspace
workspace
)
{
if
(!
ShouldUseNativeEditorConfigSupport
(
workspace
))
{
// Simply disable if the feature isn't on
return
null
;
}
return
new
EditorConfigDocumentOptionsProvider
(
workspace
.
Services
.
GetRequiredService
<
IErrorLoggerService
>());
return
new
EditorConfigDocumentOptionsProvider
(
workspace
.
Services
.
GetService
<
IErrorLoggerService
>());
}
private
const
string
LocalRegistryPath
=
@"Roslyn\Internal\OnOff\Features\"
;
...
...
@@ -48,15 +34,21 @@ public static bool ShouldUseNativeEditorConfigSupport(Workspace workspace)
private
class
EditorConfigDocumentOptionsProvider
:
IDocumentOptionsProvider
{
private
readonly
IErrorLoggerService
_errorLogger
;
private
readonly
IErrorLoggerService
?
_errorLogger
;
public
EditorConfigDocumentOptionsProvider
(
IErrorLoggerService
errorLogger
)
public
EditorConfigDocumentOptionsProvider
(
IErrorLoggerService
?
errorLogger
)
{
_errorLogger
=
errorLogger
;
}
public
async
Task
<
IDocumentOptions
?>
GetOptionsForDocumentAsync
(
Document
document
,
CancellationToken
cancellationToken
)
{
if
(!
ShouldUseNativeEditorConfigSupport
(
document
.
Project
.
Solution
.
Workspace
))
{
// Simply disable if the feature isn't on
return
null
;
}
var
options
=
await
document
.
GetAnalyzerOptionsAsync
(
cancellationToken
).
ConfigureAwait
(
false
);
return
new
DocumentOptions
(
options
,
_errorLogger
);
...
...
@@ -65,9 +57,9 @@ public EditorConfigDocumentOptionsProvider(IErrorLoggerService errorLogger)
private
class
DocumentOptions
:
IDocumentOptions
{
private
readonly
ImmutableDictionary
<
string
,
string
>
_options
;
private
readonly
IErrorLoggerService
_errorLogger
;
private
readonly
IErrorLoggerService
?
_errorLogger
;
public
DocumentOptions
(
ImmutableDictionary
<
string
,
string
>
options
,
IErrorLoggerService
errorLogger
)
public
DocumentOptions
(
ImmutableDictionary
<
string
,
string
>
options
,
IErrorLoggerService
?
errorLogger
)
{
_options
=
options
;
_errorLogger
=
errorLogger
;
...
...
src/Workspaces/Core/Portable/Workspace/Workspace.cs
浏览文件 @
5e2bd9e5
...
...
@@ -14,9 +14,11 @@
using
System.Threading.Tasks
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Diagnostics
;
using
Microsoft.CodeAnalysis.ErrorLogger
;
using
Microsoft.CodeAnalysis.Host
;
using
Microsoft.CodeAnalysis.Internal.Log
;
using
Microsoft.CodeAnalysis.Options
;
using
Microsoft.CodeAnalysis.Options.EditorConfig
;
using
Microsoft.CodeAnalysis.Shared.Extensions
;
using
Microsoft.CodeAnalysis.Shared.Utilities
;
using
Microsoft.CodeAnalysis.Text
;
...
...
@@ -87,6 +89,8 @@ protected Workspace(HostServices host, string? workspaceKind)
var
info
=
SolutionInfo
.
Create
(
SolutionId
.
CreateNewId
(),
VersionStamp
.
Create
());
var
emptyOptions
=
new
SerializableOptionSet
(
languages
:
ImmutableHashSet
<
string
>.
Empty
,
_optionService
,
serializableOptions
:
ImmutableHashSet
<
IOption
>.
Empty
,
values
:
ImmutableDictionary
<
OptionKey
,
object
?>.
Empty
);
_latestSolution
=
CreateSolution
(
info
,
emptyOptions
);
_optionService
.
RegisterDocumentOptionsProvider
(
EditorConfigDocumentOptionsProviderFactory
.
Create
(
this
));
}
internal
void
LogTestMessage
(
string
message
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录