public void SetCursor(int index, int line, int column, List <UnsavedFile> unsavedFiles)
        {
            if (!intellisenseControl.IsVisible)
            {
                _requestingData = true;
                intellisenseQueryRunner.InvokeAsync(() =>
                {
                    CodeCompletionResults result = null;
                    intellisenseJobRunner.InvokeAsync(() =>
                    {
                        var task = languageService.CodeCompleteAtAsync(file, index, line, column, unsavedFiles);
                        task.Wait();

                        result = task.Result;
                    }).Wait();

                    Dispatcher.UIThread.InvokeAsync(() =>
                    {
                        SetCompletionData(result);

                        _requestingData = false;

                        UpdateFilter(editor.CaretOffset, false);

                        intellisenseControl.IsVisible = !_hidden;
                    });
                });
            }
        }
Exemplo n.º 2
0
        public void SetCursor(int index, int line, int column, List<UnsavedFile> unsavedFiles, bool invokeOnRunner = true)
        {
            var action = new Action(() =>
            {
                if (!isProcessingKey)
                {
                    if (intellisenseControl.IsVisible)
                    {
                        CloseIntellisense();
                    }

                    var codeCompleteTask = languageService.CodeCompleteAtAsync(file, line, column, unsavedFiles);
                    codeCompleteTask.Wait();
                    SetCompletionData(codeCompleteTask.Result);
                }
            });

            if (invokeOnRunner)
            {
                intellisenseJobRunner.InvokeAsync(action);
            }
            else
            {
                action();
            }
        }
Exemplo n.º 3
0
        public void SetCursor(int index, int line, int column, List <UnsavedFile> unsavedFiles, bool canUpdateSignature = true)
        {
            if (_lastIndex != index)
            {
                _lastIndex = index;

                if (canUpdateSignature)
                {
                    UpdateActiveParameterAndVisibility();
                }

                if (!intellisenseControl.IsVisible)
                {
                    unfilteredCompletions.Clear();

                    if (_shell.DebugMode)
                    {
                        _console.WriteLine("Set Cursor");
                    }

                    _requestingData = true;

                    char previousChar = '\0';

                    if (index >= 1)
                    {
                        previousChar = editor.Document.GetCharAt(index - 1);
                    }

                    intellisenseQueryRunner.InvokeAsync(() =>
                    {
                        CodeCompletionResults result = null;
                        intellisenseJobRunner.InvokeAsync(() =>
                        {
                            if (_shell.DebugMode)
                            {
                                _console.WriteLine($"Query Language Service {index}, {line}, {column}");
                            }

                            var task = languageService.CodeCompleteAtAsync(editor, index, line, column, unsavedFiles, previousChar);
                            task.Wait();

                            result = task.Result;
                        }).Wait();

                        if (result != null)
                        {
                            Dispatcher.UIThread.InvokeAsync(() =>
                            {
                                if (_shell.DebugMode)
                                {
                                    _console.WriteLine($"Set Completion Data {_hidden}");
                                }

                                SetCompletionData(result);

                                _requestingData = false;

                                if (unfilteredCompletions.Count > 0)
                                {
                                    UpdateFilter(editor.CaretOffset, false);
                                    intellisenseControl.IsVisible = !_hidden;
                                }
                                else
                                {
                                    _hidden = true;
                                }
                            });
                        }
                    });
                }
                else
                {
                    UpdateFilter(editor.CaretOffset, false);
                }
            }
        }