public async Task <CompletionList> Handle(CompletionParams request, CancellationToken cancellationToken)
        {
            var documentPath = request.TextDocument.Uri.ToUri().LocalPath;
            var buffer       = _bufferManager.GetBuffer(request.TextDocument.Uri);

            if (buffer == null)
            {
                return(new CompletionList());
            }

            var metdata = _metadataProvider.GetMetadataForDocument(documentPath);

            if (metdata == null)
            {
                return(new CompletionList());
            }

            var position         = Utils.PositionToOffset(request.Position, buffer.AsSpan());
            var completionResult = new CompletionEngine().GetCompletions(metdata, buffer.ToString(), position);

            if (completionResult == null)
            {
                return(new CompletionList());
            }

            List <CompletionItem> mappedComlpletions = new List <CompletionItem>();

            for (int i = 0; i < completionResult.Completions.Count; i++)
            {
                var completion = MapCompletion(completionResult.Completions[i], completionResult.StartPosition, request.Position, i.ToString().PadLeft(10, '0'), buffer);
                mappedComlpletions.Add(completion);
            }

            return(new CompletionList(mappedComlpletions));
        }
Ejemplo n.º 2
0
        protected CompletionSet GetCompletionsFor(string xaml)
        {
            xaml = Prologue + xaml;
            var engine = new CompletionEngine();
            var set    = engine.GetCompletions(Metadata, xaml, xaml.Length, Assembly.GetCallingAssembly().GetName().Name);

            return(TransformCompletionSet(set));
        }
Ejemplo n.º 3
0
        public override void RegisterSourceFile(IEditor editor)
        {
            if (engine == null)
            {
                engine = new CompletionEngine();
            }

            CreateMetaDataIfRequired(editor.SourceFile.Project.Solution.StartupProject.Executable);
        }
Ejemplo n.º 4
0
 private void OnTextEntered(object sender, TextInputEventArgs e)
 {
     if (CompletionEngine.ShouldTriggerCompletionListOn(e.Text[0]))
     {
         UpdateCompletionList();
     }
     else
     {
         HideCompletionList();
     }
 }
Ejemplo n.º 5
0
        public override void RegisterSourceFile(IEditor editor)
        {
            if (engine == null)
            {
                engine = new CompletionEngine();
            }

            if (metaData == null)
            {
                metaData = new MetadataReader(new SrmMetadataProvider()).GetForTargetAssembly(editor.SourceFile.Project.Solution.StartupProject.Executable);
            }
        }
Ejemplo n.º 6
0
 private void OnTextInput(object sender, TextCompositionEventArgs e)
 {
     if (e.Text.Length != 1)
     {
         return;
     }
     Dispatcher.BeginInvoke(new Action(() =>
     {
         if (CompletionEngine.ShouldTriggerCompletionListOn(e.Text[0]))
         {
             UpdateCompletionList();
         }
         else
         {
             HideCompletionList();
         }
     }));
 }
Ejemplo n.º 7
0
        protected override IEnumerable <CompletionData> CreateCompletionData(CompletionEngine engine, SemanticModel semanticModel, int position, ITypeSymbol returnType, Accessibility seenAccessibility, SyntaxToken startToken, SyntaxToken tokenBeforeReturnType, bool afterKeyword, CancellationToken cancellationToken)
        {
            var            result = new List <CompletionData> ();
            ISet <ISymbol> overridableMembers;

            if (!TryDetermineOverridableMembers(semanticModel, tokenBeforeReturnType, seenAccessibility, out overridableMembers, cancellationToken))
            {
                return(result);
            }
            if (returnType != null)
            {
                overridableMembers = FilterOverrides(overridableMembers, returnType);
            }
            var curType          = semanticModel.GetEnclosingSymbol <INamedTypeSymbol> (startToken.SpanStart, cancellationToken);
            var declarationBegin = afterKeyword ? startToken.SpanStart : position - 1;

            foreach (var m in overridableMembers)
            {
                var data = new ProtocolCompletionData(this, factory, declarationBegin, curType, m, afterKeyword);
                result.Add(data);
            }
            return(result);
        }