internal override bool ShouldTriggerCompletion( HostLanguageServices?languageServices, SourceText text, int caretPosition, CompletionTrigger trigger, OptionSet options ) { foreach (var language in GetLanguageProviders(languageServices)) { var completionProvider = ( language as IEmbeddedLanguageFeatures )?.CompletionProvider; if (completionProvider != null) { if ( completionProvider.ShouldTriggerCompletion( text, caretPosition, trigger, options ) ) { return(true); } } } return(false); }
protected ImmutableArray <IEmbeddedLanguage> GetLanguageProviders(HostLanguageServices?languageServices) { if (_languageProviders.IsDefault) { var languagesProvider = languageServices?.GetService <IEmbeddedLanguagesProvider>(); ImmutableInterlocked.InterlockedInitialize(ref _languageProviders, languagesProvider?.Languages ?? ImmutableArray <IEmbeddedLanguage> .Empty); } return(_languageProviders); }
internal TestHostDocument( ExportProvider exportProvider, HostLanguageServices?languageServiceProvider, string code, string name, string filePath, int?cursorPosition, IDictionary <string, ImmutableArray <TextSpan> > spans, SourceCodeKind sourceCodeKind = SourceCodeKind.Regular, IReadOnlyList <string>?folders = null, bool isLinkFile = false, IDocumentServiceProvider?documentServiceProvider = null, ImmutableArray <string> roles = default, ITextBuffer?textBuffer = null, bool isSourceGenerated = false ) { Contract.ThrowIfNull(filePath); _exportProvider = exportProvider; _languageServiceProvider = languageServiceProvider; _initialText = code; Name = name; FilePath = filePath; _folders = folders; this.CursorPosition = cursorPosition; SourceCodeKind = sourceCodeKind; this.IsLinkFile = isLinkFile; IsSourceGenerated = isSourceGenerated; _documentServiceProvider = documentServiceProvider; _roles = roles.IsDefault ? s_defaultRoles : roles; if (spans.ContainsKey(string.Empty)) { this.SelectedSpans = spans[string.Empty]; } foreach (var namedSpanList in spans.Where(s => s.Key != string.Empty)) { this.AnnotatedSpans.Add(namedSpanList); } Loader = new TestDocumentLoader(this, _initialText); if (textBuffer != null) { _textBuffer = textBuffer; _initialTextSnapshot = textBuffer.CurrentSnapshot; } }
internal void SetProject(TestHostProject project) { _project = project; if (_id == null) { _id = DocumentId.CreateNewId(project.Id, this.Name); } else { Contract.ThrowIfFalse(project.Id == this.Id.ProjectId); } if (_languageServiceProvider == null) { _languageServiceProvider = project.LanguageServiceProvider; } }
internal void SetProject(TestHostProject project) { _project = project; // For generated documents, we need to fetch the IDs from the workspace later if (!IsSourceGenerated) { if (_id == null) { _id = DocumentId.CreateNewId(project.Id, this.Name); } else { Contract.ThrowIfFalse(project.Id == this.Id.ProjectId); } } if (_languageServiceProvider == null) { _languageServiceProvider = project.LanguageServiceProvider; } }
public static CodeStyleHostLanguageServices?GetMappedCodeStyleLanguageServices(HostLanguageServices?hostLanguageServices) => hostLanguageServices != null?s_mappedLanguageServices.GetOrAdd(hostLanguageServices, Create) : null;