Exemple #1
0
        private async Task <bool> GotoPositionAsync(Document currentDocument, SnapshotPoint position)
        {
            try
            {
                var newDocument = position.Snapshot.GetOpenDocumentInCurrentContextWithChanges();
                if (newDocument == null)
                {
                    // document was closed => preview window
                    await NavigateBackAsync();

                    return(true);
                }

                if (currentDocument.Id != newDocument.Id)
                {
                    VisualStudioWorkspace.OpenDocument(newDocument.Id, true);
                    //await System.Threading.Tasks.Task.Delay(1000);
                }

                //VisualStudioWorkspace.OpenDocument(newDocument.Id, true);
                var wpfTextViewNew = await GetWpfTextViewAsync();

                wpfTextViewNew.Caret.MoveTo(new SnapshotPoint(position.Snapshot, position.Position));
                wpfTextViewNew.Caret.EnsureVisible();
                EnsureCaretVisible(wpfTextViewNew, true);

                //wpfTextViewNew.Caret.IsHidden = false;

                //wpfTextViewNew.Caret.MoveToPreferredCoordinates();
                //wpfTextViewNew.Caret.MoveToNextCaretPosition();
                //await System.Threading.Tasks.Task.Delay(200);
                //var dte = await GetDTE2Async();
                //var command = "Edit.GoTo";
                //var line = _interfaceNavigation.startPosition.GetContainingLine().LineNumber + 1;
                //dte.ExecuteCommand(command, line.ToString());

                return(true);
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex.Message);
                return(true);
            }
        }