public static CompletionItem CreateSymbolCompletionItem( string displayText, IReadOnlyList <ISymbol> symbols, CompletionItemRules rules, int contextPosition, string?sortText = null, string?insertionText = null, string?filterText = null, SupportedPlatformData?supportedPlatforms = null, ImmutableDictionary <string, string>?properties = null, ImmutableArray <string> tags = default ) => SymbolCompletionItem.CreateWithSymbolId( displayText, displayTextSuffix: null, symbols, rules, contextPosition, sortText, insertionText, filterText, displayTextPrefix: null, inlineDescription: null, glyph: null, supportedPlatforms, properties, tags );
public XmlDocCommentCompletionItem(CompletionListProvider provider, TextSpan filterSpan, string displayText, CompletionItemRules rules) : this(provider, filterSpan, displayText, displayText, string.Empty, rules) { }
// Internal virtual for testing internal virtual IEnumerable <CompletionItem> GetCompletionItems(RazorSyntaxTree syntaxTree) { var directives = syntaxTree.Options.Directives.Concat(DefaultDirectives); var completionItems = new List <CompletionItem>(); foreach (var directive in directives) { var propertyDictionary = new Dictionary <string, string>(StringComparer.Ordinal); if (!string.IsNullOrEmpty(directive.Description)) { propertyDictionary[DescriptionKey] = directive.Description; } var completionItem = CompletionItem.Create( directive.Directive, // This groups all Razor directives together sortText: "_RazorDirective_", rules: CompletionItemRules.Create(formatOnCommit: false), tags: ImmutableArray.Create(CompletionTags.Intrinsic), properties: propertyDictionary.ToImmutableDictionary()); completionItems.Add(completionItem); } return(completionItems); }
public FileSystemCompletionHelper( CompletionProvider completionProvider, TextSpan textChangeSpan, ICurrentWorkingDirectoryDiscoveryService fileSystemDiscoveryService, Glyph folderGlyph, Glyph fileGlyph, ImmutableArray <string> searchPaths, IEnumerable <string> allowableExtensions, Func <string, bool> exclude = null, CompletionItemRules itemRules = null) { Debug.Assert(searchPaths.All(path => PathUtilities.IsAbsolute(path))); _completionProvider = completionProvider; _textChangeSpan = textChangeSpan; _searchPaths = searchPaths; _allowableExtensions = allowableExtensions.Select(e => e.ToLowerInvariant()).ToSet(); _fileSystemDiscoveryService = fileSystemDiscoveryService; _folderGlyph = folderGlyph; _fileGlyph = fileGlyph; _exclude = exclude; _itemRules = itemRules; _lazyGetDrives = new Lazy <string[]>(() => IOUtilities.PerformIO(Directory.GetLogicalDrives, SpecializedCollections.EmptyArray <string>())); }
public static CompletionItem Create( string displayText, TextSpan span, ISymbol symbol, int contextPosition = -1, int descriptionPosition = -1, string sortText = null, string insertionText = null, Glyph? glyph = null, string filterText = null, bool preselect = false, SupportedPlatformData supportedPlatforms = null, bool isArgumentName = false, ImmutableDictionary<string, string> properties = null, CompletionItemRules rules = null) { return Create( displayText: displayText, span: span, symbols: ImmutableArray.Create(symbol), contextPosition: contextPosition, descriptionPosition: descriptionPosition, sortText: sortText, insertionText: insertionText, glyph: glyph, filterText: filterText, preselect: preselect, supportedPlatforms: supportedPlatforms, isArgumentName: isArgumentName, properties: properties, rules: rules); }
public static CompletionItem Create( string displayText, TextSpan span, Glyph? glyph, DeclarationModifiers modifiers, int line, ISymbol symbol, SyntaxToken token, int descriptionPosition, CompletionItemRules rules) { var props = ImmutableDictionary<string, string>.Empty .Add("Line", line.ToString()) .Add("Modifiers", modifiers.ToString()) .Add("TokenSpanEnd", token.Span.End.ToString()); return SymbolCompletionItem.Create( displayText: displayText, span: span, symbol: symbol, glyph: glyph, descriptionPosition: descriptionPosition, properties: props, rules: rules); }
public static CompletionItem CreateCommonCompletionItem( string displayText, string displayTextSuffix, CompletionItemRules rules, PythiaGlyph?glyph, ImmutableArray <SymbolDisplayPart> description, string sortText, string filterText, bool showsWarningIcon = false, ImmutableDictionary <string, string>?properties = null, ImmutableArray <string> tags = default, string?inlineDescription = null ) => CommonCompletionItem.Create( displayText, displayTextSuffix, rules, (Glyph?)glyph, description, sortText, filterText, showsWarningIcon, properties, tags, inlineDescription );
public FileSystemCompletionHelper( CompletionListProvider completionProvider, TextSpan textChangeSpan, ICurrentWorkingDirectoryDiscoveryService fileSystemDiscoveryService, Glyph folderGlyph, Glyph fileGlyph, ImmutableArray<string> searchPaths, IEnumerable<string> allowableExtensions, Func<string, bool> exclude = null, CompletionItemRules itemRules = null) { Debug.Assert(searchPaths.All(path => PathUtilities.IsAbsolute(path))); _completionProvider = completionProvider; _textChangeSpan = textChangeSpan; _searchPaths = searchPaths; _allowableExtensions = allowableExtensions.Select(e => e.ToLowerInvariant()).ToSet(); _fileSystemDiscoveryService = fileSystemDiscoveryService; _folderGlyph = folderGlyph; _fileGlyph = fileGlyph; _exclude = exclude; _itemRules = itemRules; _lazyGetDrives = new Lazy<string[]>(() => IOUtilities.PerformIO(Directory.GetLogicalDrives, SpecializedCollections.EmptyArray<string>())); }
public static CompletionItem Create( string displayText, string displayTextSuffix, CompletionItemRules rules, FSharpGlyph?glyph = null, ImmutableArray <SymbolDisplayPart> description = default, string sortText = null, string filterText = null, bool showsWarningIcon = false, ImmutableDictionary <string, string> properties = null, ImmutableArray <string> tags = default, string inlineDescription = null ) { var roslynGlyph = glyph.HasValue ? FSharpGlyphHelpers.ConvertTo(glyph.Value) : (Glyph?)null; return(CommonCompletionItem.Create( displayText, displayTextSuffix, rules, roslynGlyph, description, sortText, filterText, showsWarningIcon, properties, tags, inlineDescription )); }
protected static FileSystemCompletionHelper GetFileSystemCompletionHelper( Document document, Microsoft.CodeAnalysis.Glyph itemGlyph, ImmutableArray <string> extensions, CompletionItemRules completionRules) { ImmutableArray <string> referenceSearchPaths; string?baseDirectory; if (document.Project.CompilationOptions?.MetadataReferenceResolver is RuntimeMetadataReferenceResolver resolver) { referenceSearchPaths = resolver.PathResolver.SearchPaths; baseDirectory = resolver.PathResolver.BaseDirectory; } else { referenceSearchPaths = ImmutableArray <string> .Empty; baseDirectory = null; } return(new FileSystemCompletionHelper( Microsoft.CodeAnalysis.Glyph.OpenFolder, itemGlyph, referenceSearchPaths, GetBaseDirectory(document, baseDirectory), extensions, completionRules)); }
public static CompletionItem Create( string displayText, TextSpan span, Glyph?glyph, DeclarationModifiers modifiers, int line, ISymbol symbol, SyntaxToken token, int descriptionPosition, CompletionItemRules rules) { var props = ImmutableDictionary <string, string> .Empty .Add("Line", line.ToString()) .Add("Modifiers", modifiers.ToString()) .Add("TokenSpanEnd", token.Span.End.ToString()); return(SymbolCompletionItem.Create( displayText: displayText, span: span, symbol: symbol, glyph: glyph, descriptionPosition: descriptionPosition, properties: props, rules: rules)); }
public static CompletionItem Create( string displayText, ISymbol symbol, int contextPosition = -1, string sortText = null, string insertionText = null, Glyph? glyph = null, string filterText = null, int? matchPriority = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary<string, string> properties = null, CompletionItemRules rules = null) { return Create( displayText: displayText, symbols: ImmutableArray.Create(symbol), contextPosition: contextPosition, sortText: sortText, insertionText: insertionText, glyph: glyph, filterText: filterText, matchPriority: matchPriority.GetValueOrDefault(), supportedPlatforms: supportedPlatforms, properties: properties, rules: rules); }
public SymbolCompletionItem( CompletionListProvider completionProvider, string displayText, string insertionText, string filterText, TextSpan filterSpan, int position, List<ISymbol> symbols, string sortText, AbstractSyntaxContext context, Glyph glyph, bool preselect = false, SupportedPlatformData supportedPlatforms = null, CompletionItemRules rules = null) : base(completionProvider, displayText, filterSpan, descriptionFactory: null, glyph: glyph, sortText: sortText, filterText: filterText, preselect: preselect, showsWarningIcon: supportedPlatforms != null, rules: rules, filters: GetFilters(symbols)) { this.InsertionText = insertionText; this.Position = position; this.Symbols = symbols; this.Context = context; _supportedPlatforms = supportedPlatforms; }
private static CompletionItem CreateWorker( string displayText, ISymbol symbol, Func <IReadOnlyList <ISymbol>, CompletionItem, CompletionItem> symbolEncoder, int contextPosition = -1, string sortText = null, string insertionText = null, Glyph?glyph = null, string filterText = null, int?matchPriority = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary <string, string> properties = null, CompletionItemRules rules = null) { return(CreateWorker( displayText: displayText, symbols: ImmutableArray.Create(symbol), symbolEncoder: symbolEncoder, contextPosition: contextPosition, sortText: sortText, insertionText: insertionText, glyph: glyph, filterText: filterText, matchPriority: matchPriority.GetValueOrDefault(), supportedPlatforms: supportedPlatforms, properties: properties, rules: rules)); }
// COMPAT OVERLOAD: This is used by IntelliCode. public static CompletionItem CreateWithSymbolId( string displayText, IReadOnlyList <ISymbol> symbols, CompletionItemRules rules, int contextPosition, string sortText = null, string insertionText = null, string filterText = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary <string, string> properties = null, ImmutableArray <string> tags = default) { return(CreateWithSymbolId( displayText, displayTextSuffix: null, symbols, rules, contextPosition, sortText, insertionText, filterText, supportedPlatforms, properties, tags)); }
public static CompletionItem Create( string displayText, TextSpan span, ISymbol symbol, int contextPosition = -1, int descriptionPosition = -1, string sortText = null, string insertionText = null, Glyph?glyph = null, string filterText = null, bool preselect = false, SupportedPlatformData supportedPlatforms = null, bool isArgumentName = false, ImmutableDictionary <string, string> properties = null, CompletionItemRules rules = null) { return(Create( displayText: displayText, span: span, symbols: ImmutableArray.Create(symbol), contextPosition: contextPosition, descriptionPosition: descriptionPosition, sortText: sortText, insertionText: insertionText, glyph: glyph, filterText: filterText, preselect: preselect, supportedPlatforms: supportedPlatforms, isArgumentName: isArgumentName, properties: properties, rules: rules)); }
private static CompletionItemRules MakeRule(bool importDirective, bool preselect, bool tupleLiteral) { // '<' should not filter the completion list, even though it's in generic items like IList<> var generalBaseline = CompletionItemRules.Default. WithFilterCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, '<')). WithCommitCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Add, '<')); var importDirectiveBaseline = CompletionItemRules.Create(commitCharacterRules: ImmutableArray.Create(CharacterSetModificationRule.Create(CharacterSetModificationKind.Replace, '.', ';'))); var rule = importDirective ? importDirectiveBaseline : generalBaseline; if (preselect) { rule = rule.WithSelectionBehavior(CompletionItemSelectionBehavior.HardSelection); } if (tupleLiteral) { rule = rule .WithCommitCharacterRule(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, ':')); } return(rule); }
public static CompletionItem Create( string displayText, string displayTextSuffix, DeclarationModifiers modifiers, int line, ISymbol symbol, SyntaxToken token, int descriptionPosition, CompletionItemRules rules ) { var props = ImmutableDictionary <string, string> .Empty .Add("Line", line.ToString()) .Add("Modifiers", modifiers.ToString()) .Add("TokenSpanEnd", token.Span.End.ToString()); return(SymbolCompletionItem.CreateWithSymbolId( displayText: displayText, displayTextSuffix: displayTextSuffix, symbols: ImmutableArray.Create(symbol), contextPosition: descriptionPosition, properties: props, rules: rules, isComplexTextEdit: true )); }
public SymbolCompletionItem( CompletionListProvider completionProvider, string displayText, string insertionText, string filterText, TextSpan filterSpan, int position, List <ISymbol> symbols, string sortText, AbstractSyntaxContext context, Glyph glyph, bool preselect = false, SupportedPlatformData supportedPlatforms = null, CompletionItemRules rules = null) : base(completionProvider, displayText, filterSpan, descriptionFactory : null, glyph : glyph, sortText : sortText, filterText : filterText, preselect : preselect, showsWarningIcon : supportedPlatforms != null, rules : rules, filters : GetFilters(symbols)) { this.InsertionText = insertionText; this.Position = position; this.Symbols = symbols; this.Context = context; _supportedPlatforms = supportedPlatforms; }
private Task AddCompletionItems(CompletionContext context) { if (!_textBufferProvider.TryGetFromDocument(context.Document, out var textBuffer) || _dependencies.Value.AsyncCompletionBroker.IsCompletionSupported(textBuffer.ContentType)) { // Async completion is supported that code path will handle completion. return(Task.CompletedTask); } if (!_codeDocumentProvider.Value.TryGetFromDocument(context.Document, out var codeDocument)) { // A Razor code document has not yet been associated with the document. return(Task.CompletedTask); } var syntaxTree = codeDocument.GetSyntaxTree(); if (syntaxTree == null) { // No syntax tree has been computed for the current document. return(Task.CompletedTask); } if (!TryGetRazorSnapshotPoint(context, out var razorSnapshotPoint)) { // Could not find associated Razor location. return(Task.CompletedTask); } var location = new SourceSpan(razorSnapshotPoint.Position, 0); var razorCompletionItems = _dependencies.Value.CompletionFactsService.GetCompletionItems(syntaxTree, location); foreach (var razorCompletionItem in razorCompletionItems) { if (razorCompletionItem.Kind != RazorCompletionItemKind.Directive) { // Don't support any other types of completion kinds other than directives. continue; } var propertyDictionary = new Dictionary <string, string>(StringComparer.Ordinal); if (!string.IsNullOrEmpty(razorCompletionItem.Description)) { propertyDictionary[DescriptionKey] = razorCompletionItem.Description; } var completionItem = CompletionItem.Create( razorCompletionItem.InsertText, // This groups all Razor directives together sortText: "_RazorDirective_", rules: CompletionItemRules.Create(formatOnCommit: false), tags: ImmutableArray.Create(WellKnownTags.Intrinsic), properties: propertyDictionary.ToImmutableDictionary()); context.AddItem(completionItem); } return(Task.CompletedTask); }
const string InsertionTextKey = "InsertionText/914D9212-A782-45C9-970F-405B732E10B5"; // hopefully unique id public CompletionItem CreateCompletionItem(string insertionText, string descriptionText, string[] tags) => CompletionItem.Create(descriptionText, properties: ImmutableDictionary <string, string> .Empty.Add(InsertionTextKey, insertionText), // add custom insertion text property to be used in GetChangeAsync tags: ImmutableArray.Create(tags), rules: CompletionItemRules.Create( // allow usage of open paren while writing the identifier filterCharacterRules: ImmutableArray <CharacterSetModificationRule> .Empty.Add(CharacterSetModificationRule.Create(CharacterSetModificationKind.Add, '(')), commitCharacterRules: ImmutableArray <CharacterSetModificationRule> .Empty.Add(CharacterSetModificationRule.Create(CharacterSetModificationKind.Remove, '(')) ));
public GlobalAssemblyCacheCompletionHelper( CompletionProvider completionProvider, TextSpan textChangeSpan, CompletionItemRules itemRules = null) { _completionProvider = completionProvider; _textChangeSpan = textChangeSpan; _itemRules = itemRules; }
public CompletionService(CompletionContext context, SyntaxToken token, SemanticModel semanticModel, BaseMockingProvider provider) { _context = context; _token = token; _semanticModel = semanticModel; _preselectCompletions = CompletionItemRules.Default.WithMatchPriority(MatchPriority.Preselect).WithSelectionBehavior(CompletionItemSelectionBehavior.SoftSelection); _defaultCompletions = CompletionItemRules.Default.WithSelectionBehavior(CompletionItemSelectionBehavior.SoftSelection); _provider = provider; }
public XmlDocCommentCompletionItem(CompletionListProvider provider, TextSpan filterSpan, string displayText, string beforeCaretText, string afterCaretText, CompletionItemRules rules) : base(provider, displayText, filterSpan, glyph: CodeAnalysis.Glyph.Keyword, rules: rules) { _beforeCaretText = beforeCaretText; _afterCaretText = afterCaretText; }
private static CompletionItem CreateWorker( string displayText, string displayTextSuffix, IReadOnlyList <ISymbol> symbols, CompletionItemRules rules, int contextPosition, Func <IReadOnlyList <ISymbol>, CompletionItem, CompletionItem> symbolEncoder, string sortText = null, string insertionText = null, string filterText = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary <string, string> properties = null, ImmutableArray <string> tags = default, string displayTextPrefix = null, string inlineDescription = null, Glyph?glyph = null, bool isComplexTextEdit = false ) { var props = properties ?? ImmutableDictionary <string, string> .Empty; if (insertionText != null) { props = props.Add("InsertionText", insertionText); } props = props.Add("ContextPosition", contextPosition.ToString()); var firstSymbol = symbols[0]; var item = CommonCompletionItem.Create( displayText: displayText, displayTextSuffix: displayTextSuffix, displayTextPrefix: displayTextPrefix, inlineDescription: inlineDescription, rules: rules, filterText: filterText ?? ( displayText.Length > 0 && displayText[0] == '@' ? displayText : firstSymbol.Name ), sortText: sortText ?? firstSymbol.Name, glyph: glyph ?? firstSymbol.GetGlyph(), showsWarningIcon: supportedPlatforms != null, properties: props, tags: tags, isComplexTextEdit: isComplexTextEdit ); item = WithSupportedPlatforms(item, supportedPlatforms); return(symbolEncoder(symbols, item)); }
public static CompletionItem Create( string displayText, TextSpan span, IReadOnlyList <ISymbol> symbols, int contextPosition = -1, int descriptionPosition = -1, string sortText = null, string insertionText = null, Glyph?glyph = null, string filterText = null, bool preselect = false, SupportedPlatformData supportedPlatforms = null, bool isArgumentName = false, ImmutableDictionary <string, string> properties = null, ImmutableArray <string> tags = default(ImmutableArray <string>), CompletionItemRules rules = null) { var props = properties ?? ImmutableDictionary <string, string> .Empty; props = props.Add("Symbols", EncodeSymbols(symbols)); if (insertionText != null) { props = props.Add("InsertionText", insertionText); } if (contextPosition >= 0) { props = props.Add("ContextPosition", contextPosition.ToString()); } if (descriptionPosition >= 0) { props = props.Add("DescriptionPosition", descriptionPosition.ToString()); } var item = CommonCompletionItem.Create( displayText: displayText, span: span, filterText: filterText ?? (displayText.Length > 0 && displayText[0] == '@' ? displayText : symbols[0].Name), sortText: sortText ?? symbols[0].Name, glyph: glyph ?? symbols[0].GetGlyph(), preselect: preselect, isArgumentName: isArgumentName, showsWarningIcon: supportedPlatforms != null, properties: props, tags: tags, rules: rules); return(WithSupportedPlatforms(item, supportedPlatforms)); }
public static CompletionItem Create( string displayText, TextSpan span, IReadOnlyList<ISymbol> symbols, int contextPosition = -1, int descriptionPosition = -1, string sortText = null, string insertionText = null, Glyph? glyph = null, string filterText = null, bool preselect = false, SupportedPlatformData supportedPlatforms = null, bool isArgumentName = false, ImmutableDictionary<string, string> properties = null, ImmutableArray<string> tags = default(ImmutableArray<string>), CompletionItemRules rules = null) { var props = properties ?? ImmutableDictionary<string, string>.Empty; props = props.Add("Symbols", EncodeSymbols(symbols)); if (insertionText != null) { props = props.Add("InsertionText", insertionText); } if (contextPosition >= 0) { props = props.Add("ContextPosition", contextPosition.ToString()); } if (descriptionPosition >= 0) { props = props.Add("DescriptionPosition", descriptionPosition.ToString()); } var item = CommonCompletionItem.Create( displayText: displayText, span: span, filterText: filterText ?? (displayText.Length > 0 && displayText[0] == '@' ? displayText : symbols[0].Name), sortText: sortText ?? symbols[0].Name, glyph: glyph ?? symbols[0].GetGlyph(), preselect: preselect, isArgumentName: isArgumentName, showsWarningIcon: supportedPlatforms != null, properties: props, tags: tags, rules: rules); return WithSupportedPlatforms(item, supportedPlatforms); }
public FileSystemCompletionHelper( Glyph folderGlyph, Glyph fileGlyph, ImmutableArray <string> searchPaths, string baseDirectoryOpt, ImmutableArray <string> allowableExtensions, CompletionItemRules itemRules) { _searchPaths = searchPaths; _baseDirectoryOpt = baseDirectoryOpt !; _allowableExtensions = allowableExtensions; _folderGlyph = folderGlyph; _fileGlyph = fileGlyph; _itemRules = itemRules; }
public static CompletionItem CreateWithSymbolId( string displayText, ISymbol symbol, int contextPosition, string sortText = null, string insertionText = null, Glyph?glyph = null, string filterText = null, int?matchPriority = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary <string, string> properties = null, CompletionItemRules rules = null) { return(CreateWorker(displayText, symbol, AddSymbolEncoding, contextPosition, sortText, insertionText, glyph, filterText, matchPriority, supportedPlatforms, properties, rules)); }
public static CompletionItem Create( string displayText, string beforeCaretText, string afterCaretText, CompletionItemRules rules) { var props = ImmutableDictionary<string, string>.Empty .Add("BeforeCaretText", beforeCaretText) .Add("AfterCaretText", afterCaretText); return CommonCompletionItem.Create( displayText: displayText, glyph: Glyph.Keyword, properties: props, rules: rules); }
public static CompletionItem Create( string displayText, string beforeCaretText, string afterCaretText, CompletionItemRules rules) { var props = ImmutableDictionary <string, string> .Empty .Add("BeforeCaretText", beforeCaretText) .Add("AfterCaretText", afterCaretText); return(CommonCompletionItem.Create( displayText: displayText, glyph: Glyph.Keyword, properties: props, rules: rules)); }
public SymbolCompletionItem( CompletionListProvider completionProvider, string displayText, string insertionText, string filterText, TextSpan filterSpan, int position, List <ISymbol> symbols, AbstractSyntaxContext context, bool preselect = false, SupportedPlatformData supportedPlatforms = null, CompletionItemRules rules = null) : this(completionProvider, displayText, insertionText, filterText, filterSpan, position, symbols, sortText : symbols[0].Name, context : context, glyph : symbols[0].GetGlyph(), preselect : preselect, supportedPlatforms : supportedPlatforms, rules : rules) { }
public static CompletionItem CreateWithNameAndKind( string displayText, IReadOnlyList <ISymbol> symbols, int contextPosition, string sortText = null, string insertionText = null, Glyph?glyph = null, string filterText = null, int?matchPriority = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary <string, string> properties = null, ImmutableArray <string> tags = default(ImmutableArray <string>), CompletionItemRules rules = null) { return(CreateWorker(displayText, symbols, AddSymbolNameAndKind, contextPosition, sortText, insertionText, glyph, filterText, matchPriority, supportedPlatforms, properties, tags, rules)); }
public SymbolCompletionItem( CompletionListProvider completionProvider, string displayText, string insertionText, string filterText, TextSpan filterSpan, int position, List<ISymbol> symbols, AbstractSyntaxContext context, bool preselect = false, SupportedPlatformData supportedPlatforms = null, CompletionItemRules rules = null) : this(completionProvider, displayText, insertionText, filterText, filterSpan, position, symbols, sortText: symbols[0].Name, context: context, glyph: symbols[0].GetGlyph(), preselect: preselect, supportedPlatforms: supportedPlatforms, rules: rules) { }
protected FileSystemCompletionHelper GetFileSystemCompletionHelper( Document document, Glyph itemGlyph, ImmutableArray <string> extensions, CompletionItemRules completionRules) { var serviceOpt = document.Project.Solution.Workspace.Services.GetService <IScriptEnvironmentService>(); var searchPaths = serviceOpt?.MetadataReferenceSearchPaths ?? ImmutableArray <string> .Empty; return(new FileSystemCompletionHelper( Glyph.OpenFolder, itemGlyph, searchPaths, GetBaseDirectory(document, serviceOpt), extensions, completionRules)); }
public FSharpFileSystemCompletionHelper( FSharpGlyph folderGlyph, FSharpGlyph fileGlyph, ImmutableArray <string> searchPaths, string baseDirectoryOpt, ImmutableArray <string> allowableExtensions, CompletionItemRules itemRules) { _fileSystemCompletionHelper = new FileSystemCompletionHelper( FSharpGlyphHelpers.ConvertTo(folderGlyph), FSharpGlyphHelpers.ConvertTo(fileGlyph), searchPaths, baseDirectoryOpt, allowableExtensions, itemRules); }
public FileSystemCompletionHelper( Glyph folderGlyph, Glyph fileGlyph, ImmutableArray <string> searchPaths, string baseDirectoryOpt, ImmutableArray <string> allowableExtensions, CompletionItemRules itemRules) { Debug.Assert(searchPaths.All(path => PathUtilities.IsAbsolute(path))); Debug.Assert(baseDirectoryOpt == null || PathUtilities.IsAbsolute(baseDirectoryOpt)); _searchPaths = searchPaths; _baseDirectoryOpt = baseDirectoryOpt !; _allowableExtensions = allowableExtensions; _folderGlyph = folderGlyph; _fileGlyph = fileGlyph; _itemRules = itemRules; }
public FileSystemCompletionHelper(Microsoft.CodeAnalysis.Glyph folderGlyph, Microsoft.CodeAnalysis.Glyph fileGlyph, ImmutableArray <string> searchPaths, IEnumerable <string> allowableExtensions, Func <string, bool> exclude = null, CompletionItemRules itemRules = null) { Debug.Assert(searchPaths.All(path => PathUtilities.IsAbsolute(path))); _searchPaths = searchPaths; _allowableExtensions = allowableExtensions.Select(e => e.ToLowerInvariant()).ToSet(); _folderGlyph = folderGlyph; _fileGlyph = fileGlyph; _exclude = exclude; _itemRules = itemRules; _lazyGetDrives = new Lazy <string[]>(() => IOUtilities.PerformIO(Directory.GetLogicalDrives, Array.Empty <string>())); }
public static CompletionItem Create( string displayText, IReadOnlyList<ISymbol> symbols, int contextPosition = -1, string sortText = null, string insertionText = null, Glyph? glyph = null, string filterText = null, int? matchPriority = null, SupportedPlatformData supportedPlatforms = null, ImmutableDictionary<string, string> properties = null, ImmutableArray<string> tags = default(ImmutableArray<string>), CompletionItemRules rules = null) { var props = properties ?? ImmutableDictionary<string, string>.Empty; props = props.Add("Symbols", EncodeSymbols(symbols)); if (insertionText != null) { props = props.Add("InsertionText", insertionText); } if (contextPosition >= 0) { props = props.Add("ContextPosition", contextPosition.ToString()); } var item = CommonCompletionItem.Create( displayText: displayText, filterText: filterText ?? (displayText.Length > 0 && displayText[0] == '@' ? displayText : symbols[0].Name), sortText: sortText ?? symbols[0].Name, glyph: glyph ?? symbols[0].GetGlyph(), matchPriority: matchPriority.GetValueOrDefault(), showsWarningIcon: supportedPlatforms != null, properties: props, tags: tags, rules: rules); return WithSupportedPlatforms(item, supportedPlatforms); }