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);
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        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;
            }
        }
Ejemplo n.º 5
0
        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;
            }
        }
Ejemplo n.º 6
0
 public static CodeStyleHostLanguageServices?GetMappedCodeStyleLanguageServices(HostLanguageServices?hostLanguageServices)
 => hostLanguageServices != null?s_mappedLanguageServices.GetOrAdd(hostLanguageServices, Create) : null;