Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8ea71dd

Browse files
majochaKevinRansom
authored andcommitted
Refactor IDE options into a MEF part (dotnet#5478)
* export editor options as MEF part* lazy* fix merge* fix fix* fixmerge, missed this
1 parent2236bbe commit8ea71dd

File tree

28 files changed

+284
-305
lines changed

28 files changed

+284
-305
lines changed

‎vsintegration/src/FSharp.Editor/CodeFix/AddOpenCodeFixProvider.fs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ type internal FSharpAddOpenCodeFixProvider
9898
letdocument= context.Document
9999
let!parsingOptions,projectOptions= projectInfoManager.TryGetOptionsForEditingDocumentOrProject document
100100
let!sourceText= context.Document.GetTextAsync(context.CancellationToken)
101-
let!_,parsedInput,checkResults= checker.ParseAndCheckDocument(document, projectOptions,allowStaleResults= Settings.LanguageServicePerformance.AllowStaleCompletionResults,sourceText= sourceText, userOpName= userOpName)
101+
let!_,parsedInput,checkResults= checker.ParseAndCheckDocument(document, projectOptions, sourceText= sourceText, userOpName= userOpName)
102102
letline= sourceText.Lines.GetLineFromPosition(context.Span.End)
103103
letlinePos= sourceText.Lines.GetLinePosition(context.Span.End)
104104
letdefines= CompilerEnvironment.GetCompilationDefinesForEditing parsingOptions
@@ -146,7 +146,7 @@ type internal FSharpAddOpenCodeFixProvider
146146
|> List.toArray)
147147

148148
letinsertionPoint=
149-
ifSettings.CodeFixes.AlwaysPlaceOpensAtTopLevelthen OpenStatementInsertionPoint.TopLevel
149+
ifdocument.FSharpOptions.CodeFixes.AlwaysPlaceOpensAtTopLevelthen OpenStatementInsertionPoint.TopLevel
150150
else OpenStatementInsertionPoint.Nearest
151151

152152
letcreateEntity= ParsedInput.tryFindInsertionContext unresolvedIdentRange.StartLine parsedInput maybeUnresolvedIdents insertionPoint

‎vsintegration/src/FSharp.Editor/CodeFix/ImplementInterfaceCodeFixProvider.fs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ type internal FSharpImplementInterfaceCodeFixProvider
141141
let!parsingOptions,projectOptions= projectInfoManager.TryGetOptionsForEditingDocumentOrProject context.Document
142142
letcancellationToken= context.CancellationToken
143143
let!sourceText= context.Document.GetTextAsync(cancellationToken)
144-
let!_,parsedInput,checkFileResults= checker.ParseAndCheckDocument(context.Document, projectOptions, sourceText= sourceText,allowStaleResults= Settings.LanguageServicePerformance.AllowStaleCompletionResults,userOpName= userOpName)
144+
let!_,parsedInput,checkFileResults= checker.ParseAndCheckDocument(context.Document, projectOptions, sourceText= sourceText, userOpName= userOpName)
145145
lettextLine= sourceText.Lines.GetLineFromPosition context.Span.Start
146146
letdefines= CompilerEnvironment.GetCompilationDefinesForEditing parsingOptions
147147
// Notice that context.Span doesn't return reliable ranges to find tokens at exact positions.

‎vsintegration/src/FSharp.Editor/CodeFix/RenameUnusedValue.fs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ type internal FSharpRenameUnusedValueCodeFixProvider
4848
override__.RegisterCodeFixesAsync context:Task=
4949
asyncMaybe{
5050
// Don't show code fixes for unused values, even if they are compiler-generated.
51-
do! Option.guardSettings.CodeFixes.UnusedDeclarations
51+
do! Option.guardcontext.Document.FSharpOptions.CodeFixes.UnusedDeclarations
5252

5353
letdocument= context.Document
5454
let!sourceText= document.GetTextAsync()
@@ -58,7 +58,7 @@ type internal FSharpRenameUnusedValueCodeFixProvider
5858
// where backtickes are replaced with parens.
5959
ifnot(PrettyNaming.IsOperatorOrBacktickedName ident)&&not(ident.StartsWith"``")then
6060
let!parsingOptions,projectOptions= projectInfoManager.TryGetOptionsForEditingDocumentOrProject document
61-
let!_,_,checkResults= checker.ParseAndCheckDocument(document, projectOptions,allowStaleResults= Settings.LanguageServicePerformance.AllowStaleCompletionResults,sourceText= sourceText, userOpName=userOpName)
61+
let!_,_,checkResults= checker.ParseAndCheckDocument(document, projectOptions, sourceText= sourceText, userOpName=userOpName)
6262
letm= RoslynHelpers.TextSpanToFSharpRange(document.FilePath, context.Span, sourceText)
6363
letdefines= CompilerEnvironment.GetCompilationDefinesForEditing parsingOptions
6464
let!lexerSymbol= Tokenizer.getSymbolAtPosition(document.Id, sourceText, context.Span.Start, document.FilePath, defines, SymbolLookupKind.Greedy,false)

‎vsintegration/src/FSharp.Editor/CodeLens/CodeLensProvider.fs‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ type internal CodeLensProvider
3232
textDocumentFactory: ITextDocumentFactoryService,
3333
checkerProvider: FSharpCheckerProvider,
3434
projectInfoManager: FSharpProjectOptionsManager,
35-
typeMap: ClassificationTypeMap Lazy
35+
typeMap: ClassificationTypeMap Lazy,
36+
settings: EditorOptions
3637
)=
3738

3839
letlineLensProvider= ResizeArray()
@@ -56,7 +57,7 @@ type internal CodeLensProvider
5657
)
5758

5859
lettagger= CodeLensGeneralTagger(wpfView, buffer)
59-
letservice= FSharpCodeLensService(serviceProvider, workspace, documentId, buffer, checkerProvider.Checker, projectInfoManager, componentModel.GetService(), typeMap, tagger)
60+
letservice= FSharpCodeLensService(serviceProvider, workspace, documentId, buffer, checkerProvider.Checker, projectInfoManager, componentModel.GetService(), typeMap, tagger, settings)
6061
letprovider=(wpfView,(tagger, service))
6162
wpfView.Closed.Add(fun _-> taggers.Remove provider|> ignore)
6263
taggers.Add((wpfView,(tagger, service)))
@@ -75,7 +76,7 @@ type internal CodeLensProvider
7576
|_-> None
7677
|> Option.get
7778
)
78-
letservice= FSharpCodeLensService(serviceProvider, workspace, documentId, buffer, checkerProvider.Checker, projectInfoManager, componentModel.GetService(), typeMap, LineLensDisplayService(wpfView, buffer))
79+
letservice= FSharpCodeLensService(serviceProvider, workspace, documentId, buffer, checkerProvider.Checker, projectInfoManager, componentModel.GetService(), typeMap, LineLensDisplayService(wpfView, buffer), settings)
7980
letprovider=(wpfView, service)
8081
wpfView.Closed.Add(fun _-> lineLensProvider.Remove provider|> ignore)
8182
lineLensProvider.Add(provider)
@@ -93,7 +94,7 @@ type internal CodeLensProvider
9394

9495
interface IViewTaggerProviderwith
9596
override__.CreateTagger(view,buffer)=
96-
ifSettings.CodeLens.Enabled&&notSettings.CodeLens.ReplaceWithLineLensthen
97+
ifsettings.CodeLens.Enabled&&notsettings.CodeLens.ReplaceWithLineLensthen
9798
letwpfView=
9899
match viewwith
99100
|:? IWpfTextViewas view-> view
@@ -105,5 +106,5 @@ type internal CodeLensProvider
105106

106107
interface IWpfTextViewCreationListenerwith
107108
override__.TextViewCreated view=
108-
ifSettings.CodeLens.Enabled&&Settings.CodeLens.ReplaceWithLineLensthen
109+
ifsettings.CodeLens.Enabled&&settings.CodeLens.ReplaceWithLineLensthen
109110
addLineLensProviderOnce view(view.TextBuffer)|> ignore

‎vsintegration/src/FSharp.Editor/CodeLens/FSharpCodeLensService.fs‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ type internal FSharpCodeLensService
4747
projectInfoManager: FSharpProjectOptionsManager,
4848
classificationFormatMapService: IClassificationFormatMapService,
4949
typeMap: Lazy<ClassificationTypeMap>,
50-
codeLens: CodeLensDisplayService
50+
codeLens: CodeLensDisplayService,
51+
settings: EditorOptions
5152
)as self=
5253

5354
letlineLens= codeLens
@@ -91,15 +92,15 @@ type internal FSharpCodeLensService
9192
lettextBlock=new TextBlock(Background= Brushes.AliceBlue, Opacity=0.0, TextTrimming= TextTrimming.None)
9293
DependencyObjectExtensions.SetDefaultTextProperties(textBlock, formatMap.Value)
9394

94-
letprefix= Documents.RunSettings.CodeLens.Prefix
95+
letprefix= Documents.Runsettings.CodeLens.Prefix
9596
prefix.Foreground<- SolidColorBrush(Color.FromRgb(153uy,153uy,153uy))
9697
textBlock.Inlines.Add prefix
9798

9899
for textin taggedTextdo
99100

100101
letcoloredProperties= layoutTagToFormatting text.Tag
101102
letactualProperties=
102-
ifSettings.CodeLens.UseColors
103+
ifsettings.CodeLens.UseColors
103104
then
104105
// If color is gray (R=G=B), change to correct gray color.
105106
// Otherwise, use the provided color.
@@ -142,7 +143,7 @@ type internal FSharpCodeLensService
142143
logInfof"Rechecking code due to buffer edit!"
143144
let!document= workspace.CurrentSolution.GetDocument(documentId.Value)|> Option.ofObj
144145
let!_,options= projectInfoManager.TryGetOptionsForEditingDocumentOrProject(document)
145-
let!_,parsedInput,checkFileResults= checker.ParseAndCheckDocument(document, options,true,"LineLens")
146+
let!_,parsedInput,checkFileResults= checker.ParseAndCheckDocument(document, options,"LineLens", allowStaleResults=true)
146147
logInfof"Getting uses of all symbols!"
147148
let!symbolUses= checkFileResults.GetAllUsesOfAllSymbolsInFile()|> liftAsync
148149
lettextSnapshot= buffer.CurrentSnapshot

‎vsintegration/src/FSharp.Editor/Commands/HelpContextService.fs‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ type internal FSharpHelpContextService
2323
)=
2424

2525
static letuserOpName="ImplementInterfaceCodeFix"
26-
static memberGetHelpTerm(checker:FSharpChecker,sourceText:SourceText,fileName,options,span:TextSpan,tokens:List<ClassifiedSpan>,textVersion):Async<stringoption>=
26+
static memberGetHelpTerm(checker:FSharpChecker,sourceText:SourceText,fileName,options,span:TextSpan,tokens:List<ClassifiedSpan>,textVersion,perfOptions):Async<stringoption>=
2727
asyncMaybe{
28-
let!_,_,check= checker.ParseAndCheckDocument(fileName, textVersion, sourceText.ToString(), options,allowStaleResults= Settings.LanguageServicePerformance.AllowStaleCompletionResults, userOpName= userOpName)
28+
let!_,_,check= checker.ParseAndCheckDocument(fileName, textVersion, sourceText.ToString(), options,perfOptions, userOpName= userOpName)
2929
lettextLines= sourceText.Lines
3030
letlineInfo= textLines.GetLineFromPosition(span.Start)
3131
letline= lineInfo.LineNumber
@@ -105,7 +105,8 @@ type internal FSharpHelpContextService
105105
letdefines= projectInfoManager.GetCompilationDefinesForEditingDocument(document)
106106
lettextLine= sourceText.Lines.GetLineFromPosition(textSpan.Start)
107107
letclassifiedSpans= Tokenizer.getClassifiedSpans(document.Id, sourceText, textLine.Span, Some document.Name, defines, cancellationToken)
108-
return! FSharpHelpContextService.GetHelpTerm(checkerProvider.Checker, sourceText, document.FilePath, projectOptions, textSpan, classifiedSpans, textVersion.GetHashCode())
108+
letperfOptions= document.FSharpOptions.LanguageServicePerformance
109+
return! FSharpHelpContextService.GetHelpTerm(checkerProvider.Checker, sourceText, document.FilePath, projectOptions, textSpan, classifiedSpans, textVersion.GetHashCode(), perfOptions)
109110
}
110111
|> Async.map(Option.defaultValue"")
111112
|> RoslynHelpers.StartAsyncAsTask cancellationToken

‎vsintegration/src/FSharp.Editor/Completion/CompletionProvider.fs‎

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ type internal FSharpCompletionProvider
5757
.AddProperty(IsKeywordPropName,""))
5858

5959
letchecker= checkerProvider.Checker
60+
61+
letsettings:EditorOptions= workspace.Services.GetService()
6062

6163
letdocumentationBuilder= XmlDocumentation.CreateDocumentationBuilder(serviceProvider.XMLMemberIndexService)
6264

@@ -77,11 +79,11 @@ type internal FSharpCompletionProvider
7779

7880
CompletionItemRules.Default.WithCommitCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, noCommitChars))
7981

80-
static letgetRules()=ifSettings.IntelliSense.ShowAfterCharIsTypedthen noCommitOnSpaceRuleselse CompletionItemRules.Default
82+
static letgetRules showAfterCharIsTyped=ifshowAfterCharIsTypedthen noCommitOnSpaceRuleselse CompletionItemRules.Default
8183

8284
static letmruItems= Dictionary<(* Item.FullName*) string,(* hints*) int>()
8385

84-
static memberShouldTriggerCompletionAux(sourceText:SourceText,caretPosition:int,trigger:CompletionTriggerKind,getInfo:(unit-> DocumentId* string* string list))=
86+
static memberShouldTriggerCompletionAux(sourceText:SourceText,caretPosition:int,trigger:CompletionTriggerKind,getInfo:(unit-> DocumentId* string* string list),intelliSenseOptions:IntelliSenseOptions)=
8587
// Skip if we are at the start of a document
8688
if caretPosition=0thenfalse
8789
// Skip if it was triggered by an operation other than insertion
@@ -92,18 +94,18 @@ type internal FSharpCompletionProvider
9294
lettriggerChar= sourceText.[triggerPosition]
9395

9496
// do not trigger completion if it's not single dot, i.e. range expression
95-
ifnotSettings.IntelliSense.ShowAfterCharIsTyped&& triggerPosition>0&& sourceText.[triggerPosition-1]='.'then
97+
ifnotintelliSenseOptions.ShowAfterCharIsTyped&& triggerPosition>0&& sourceText.[triggerPosition-1]='.'then
9698
false
9799
else
98100
letdocumentId,filePath,defines= getInfo()
99101
CompletionUtils.shouldProvideCompletion(documentId, filePath, defines, sourceText, triggerPosition)&&
100-
(triggerChar='.'||(Settings.IntelliSense.ShowAfterCharIsTyped&& CompletionUtils.isStartingNewWord(sourceText, triggerPosition)))
102+
(triggerChar='.'||(intelliSenseOptions.ShowAfterCharIsTyped&& CompletionUtils.isStartingNewWord(sourceText, triggerPosition)))
101103

102104

103105
static memberProvideCompletionsAsyncAux(checker:FSharpChecker,sourceText:SourceText,caretPosition:int,options:FSharpProjectOptions,filePath:string,
104-
textVersionHash:int,getAllSymbols:FSharpCheckFileResults->AssemblySymbol list)=
106+
textVersionHash:int,getAllSymbols:FSharpCheckFileResults->AssemblySymbol list,languageServicePerformanceOptions:LanguageServicePerformanceOptions,intellisenseOptions:IntelliSenseOptions)=
105107
asyncMaybe{
106-
let!parseResults,_,checkFileResults= checker.ParseAndCheckDocument(filePath, textVersionHash, sourceText.ToString(), options,allowStaleResults= Settings.LanguageServicePerformance.AllowStaleCompletionResults, userOpName= userOpName)
108+
let!parseResults,_,checkFileResults= checker.ParseAndCheckDocument(filePath, textVersionHash, sourceText.ToString(), options,languageServicePerformanceOptions, userOpName= userOpName)
107109

108110
lettextLines= sourceText.Lines
109111
letcaretLinePos= textLines.GetLinePosition(caretPosition)
@@ -152,7 +154,7 @@ type internal FSharpCompletionProvider
152154
|_, idents-> Array.last idents
153155

154156
letcompletionItem=
155-
CommonCompletionItem.Create(name, glyph= Nullable glyph, rules= getRules(), filterText= filterText)
157+
CommonCompletionItem.Create(name, glyph= Nullable glyph, rules= getRules intellisenseOptions.ShowAfterCharIsTyped, filterText= filterText)
156158
.AddProperty(FullNamePropName, declarationItem.FullName)
157159

158160
letcompletionItem=
@@ -206,7 +208,7 @@ type internal FSharpCompletionProvider
206208
letdefines= projectInfoManager.GetCompilationDefinesForEditingDocument(document)
207209
(documentId, document.FilePath, defines)
208210

209-
FSharpCompletionProvider.ShouldTriggerCompletionAux(sourceText, caretPosition, trigger.Kind, getInfo)
211+
FSharpCompletionProvider.ShouldTriggerCompletionAux(sourceText, caretPosition, trigger.Kind, getInfo, settings.IntelliSense)
210212

211213
overridethis.ProvideCompletionsAsync(context:Completion.CompletionContext)=
212214
asyncMaybe{
@@ -219,12 +221,12 @@ type internal FSharpCompletionProvider
219221
let!_parsingOptions,projectOptions= projectInfoManager.TryGetOptionsForEditingDocumentOrProject(document)
220222
let!textVersion= context.Document.GetTextVersionAsync(context.CancellationToken)
221223
letgetAllSymbols(fileCheckResults:FSharpCheckFileResults)=
222-
ifSettings.IntelliSense.ShowAllSymbols
224+
ifsettings.IntelliSense.ShowAllSymbols
223225
then assemblyContentProvider.GetAllEntitiesInProjectAndReferencedAssemblies(fileCheckResults)
224226
else[]
225227
let!results=
226-
FSharpCompletionProvider.ProvideCompletionsAsyncAux(checker, sourceText, context.Position, projectOptions,
227-
document.FilePath,textVersion.GetHashCode(), getAllSymbols)
228+
FSharpCompletionProvider.ProvideCompletionsAsyncAux(checker, sourceText, context.Position, projectOptions,document.FilePath,
229+
textVersion.GetHashCode(), getAllSymbols, settings.LanguageServicePerformance, settings.IntelliSense)
228230

229231
context.AddItems(results)
230232
}|> Async.Ignore|> RoslynHelpers.StartAsyncUnitAsTask context.CancellationToken
@@ -287,7 +289,7 @@ type internal FSharpCompletionProvider
287289
letfullNameIdents= fullName|> Option.map(fun x-> x.Split'.')|> Option.defaultValue[||]
288290

289291
letinsertionPoint=
290-
ifSettings.CodeFixes.AlwaysPlaceOpensAtTopLevelthen OpenStatementInsertionPoint.TopLevel
292+
ifsettings.CodeFixes.AlwaysPlaceOpensAtTopLevelthen OpenStatementInsertionPoint.TopLevel
291293
else OpenStatementInsertionPoint.Nearest
292294

293295
letctx= ParsedInput.findNearestPointToInsertOpenDeclaration line.LineNumber parsedInput fullNameIdents insertionPoint

‎vsintegration/src/FSharp.Editor/Completion/CompletionService.fs‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ type internal FSharpCompletionService
1818
serviceProvider: SVsServiceProvider,
1919
checkerProvider: FSharpCheckerProvider,
2020
projectInfoManager: FSharpProjectOptionsManager,
21-
assemblyContentProvider: AssemblyContentProvider
21+
assemblyContentProvider: AssemblyContentProvider,
22+
settings: EditorOptions
2223
)=
2324
inherit CompletionServiceWithProviders(workspace)
2425

@@ -34,7 +35,7 @@ type internal FSharpCompletionService
3435
overridethis.GetBuiltInProviders()= builtInProviders
3536
overridethis.GetRules()=
3637
letenterKeyRule=
37-
matchSettings.IntelliSense.EnterKeySettingwith
38+
matchsettings.IntelliSense.EnterKeySettingwith
3839
| NeverNewline-> EnterKeyRule.Never
3940
| NewlineOnCompleteWord-> EnterKeyRule.AfterFullyTypedWord
4041
| AlwaysNewline-> EnterKeyRule.Always
@@ -52,10 +53,11 @@ type internal FSharpCompletionServiceFactory
5253
serviceProvider: SVsServiceProvider,
5354
checkerProvider: FSharpCheckerProvider,
5455
projectInfoManager: FSharpProjectOptionsManager,
55-
assemblyContentProvider: AssemblyContentProvider
56+
assemblyContentProvider: AssemblyContentProvider,
57+
settings: EditorOptions
5658
)=
5759
interface ILanguageServiceFactorywith
5860
memberthis.CreateLanguageService(hostLanguageServices:HostLanguageServices):ILanguageService=
59-
upcastnew FSharpCompletionService(hostLanguageServices.WorkspaceServices.Workspace, serviceProvider, checkerProvider, projectInfoManager, assemblyContentProvider)
61+
upcastnew FSharpCompletionService(hostLanguageServices.WorkspaceServices.Workspace, serviceProvider, checkerProvider, projectInfoManager, assemblyContentProvider, settings)
6062

6163

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp