コード例 #1
0
        public static void WriteMessage(string format, params object[] args)
        {
            IVsOutputWindow outputWindow = VsServiceProvider.Get(typeof(SVsOutputWindow)) as IVsOutputWindow;

            Guid guidGeneral = VSConstants.OutputWindowPaneGuid.GeneralPane_guid;

            if (outputWindow == null)
            {
                return;
            }

            IVsOutputWindowPane pane;
            int hr = outputWindow.CreatePane(guidGeneral, "General", 1, 0);

            hr = outputWindow.GetPane(guidGeneral, out pane);

            if (pane == null)
            {
                return;
            }


            if (!format.EndsWith("\r\n"))
            {
                format = format + "\r\n";
            }

            pane.Activate();
            pane.OutputString(string.Format(format, args));
        }
コード例 #2
0
ファイル: OutputPane.cs プロジェクト: ryancrim/SSDT-DevPack
        public static void WriteMessageWithLink(string path, int line, string format, params object[] args)
        {
            IVsOutputWindow outputWindow = VsServiceProvider.Get(typeof(SVsOutputWindow)) as IVsOutputWindow;

            Guid guidGeneral = VSConstants.OutputWindowPaneGuid.GeneralPane_guid;

            if (outputWindow == null)
            {
                return;
            }

            IVsOutputWindowPane pane;
            int hr = outputWindow.CreatePane(guidGeneral, "General", 1, 0);

            hr = outputWindow.GetPane(guidGeneral, out pane);

            if (pane == null)
            {
                return;
            }


            if (!format.EndsWith("\r\n"))
            {
                format = format + "\r\n";
            }

            pane.Activate();

            pane.OutputTaskItemString(string.Format(format, args) + "\r\n",
                                      VSTASKPRIORITY.TP_NORMAL, VSTASKCATEGORY.CAT_BUILDCOMPILE, "MergeUi", 0, path, (uint)line - 1, string.Format(format, args));
        }
コード例 #3
0
        private void Navigate(object sender, MouseButtonEventArgs e)
        {
            if (string.IsNullOrEmpty(_documentPath))
            {
                return;
            }

            var dte = VsServiceProvider.Get(typeof(SDTE)) as DTE;

            dte?.Documents.Open(_documentPath);
        }
コード例 #4
0
        public IList <Project> Get(string projectType)
        {
            var dte = VsServiceProvider.Get(typeof(SDTE)) as DTE;

            var projects = new List <Project>();

            for (var i = 1; i <= dte.Solution.Projects.Count; i++)
            {
                var project = dte.Solution.Projects.Item(i);

                Log.WriteInfo("ProjectEnumerator: Have Project: {0}", project.FullName);
                projects.AddRange(GetChildren(projectType, project));
            }
            return(projects);
        }
コード例 #5
0
        protected override void UpdateWordAdornments()
        {
            try
            {
                var dte = (DTE)VsServiceProvider.Get(typeof(DTE));

                if (dte.ActiveDocument == null)
                {
                    return;
                }

                if (RequestedPoint.Snapshot.ContentType.TypeName != "SQL Server Tools" || !RequestedPoint.Snapshot.ContentType.BaseTypes.Any(p => p.IsOfType("code")))
                {
                    return;
                }



                try
                {
                    var store = CodeCoverageStore.Get;

                    var path = dte.ActiveDocument.FullName;

                    if (store.ObjectsInFile(path) == null)
                    {
                        return;
                    }

                    var yellowWordSpans = new List <SnapshotSpan>();
                    var redWordSpans    = new List <SnapshotSpan>();

                    if (null != store && CodeCoverageTaggerSettings.Enabled)
                    {
                        var documentKey = string.Format("{0}:{1}", RequestedPoint.Snapshot.Length, RequestedPoint.Snapshot.Version.VersionNumber);

                        var script = GetCurrentDocumentText(dte);

                        foreach (var proc in ScriptDom.GetProcedures(script))
                        {
                            var name = proc?.ProcedureReference.Name.ToNameString();

                            if (string.IsNullOrEmpty(name))
                            {
                                continue;
                            }

                            var statements = store.GetCoveredStatements(name, path);

                            if (statements == null)
                            {
                                continue;
                            }

                            if (statements.Any(p => p.TimeStamp < File.GetLastWriteTimeUtc(path)))
                            {
                                continue;
                            }

                            foreach (var statement in statements)
                            {
                                var offset = proc.StartOffset + (int)statement.Offset;
                                if (offset + statement.Length > script.Length)
                                {
                                    continue; //bad things!
                                }
                                if (statement.Length > -1)
                                {
                                    var span = new SnapshotSpan(new SnapshotPoint(RequestedPoint.Snapshot, offset), (int)statement.Length + 1);
                                    yellowWordSpans.Add(span);
                                }
                                else
                                {
                                    var span = new SnapshotSpan(new SnapshotPoint(RequestedPoint.Snapshot, offset), (proc.FragmentLength - offset));
                                    yellowWordSpans.Add(span);
                                }
                            }
                        }

                        foreach (var proc in ScriptDom.GetFunctions(script))
                        {
                            var name = proc?.Name.ToNameString();

                            if (string.IsNullOrEmpty(name))
                            {
                                continue;
                            }

                            var statements = store.GetCoveredStatements(name, path);

                            if (statements == null)
                            {
                                continue;
                            }

                            foreach (var statement in statements)
                            {
                                var offset = proc.StartOffset + (int)statement.Offset;
                                if (offset + statement.Length > script.Length)
                                {
                                    continue; //bad things!
                                }
                                if (statement.Length > -1)
                                {
                                    var span = new SnapshotSpan(new SnapshotPoint(RequestedPoint.Snapshot, offset), (int)statement.Length + 1);
                                    yellowWordSpans.Add(span);
                                }
                                else
                                {
                                    var span = new SnapshotSpan(new SnapshotPoint(RequestedPoint.Snapshot, offset), (proc.FragmentLength - offset) + 1);
                                    yellowWordSpans.Add(span);
                                }
                            }
                        }

                        if (documentKey != string.Format("{0}:{1}", RequestedPoint.Snapshot.Length, RequestedPoint.Snapshot.Version.VersionNumber))
                        {
                            return;
                        }
                    }



                    var currentRequest = RequestedPoint;
                    var word           = TextStructureNavigator.GetExtentOfWord(currentRequest);
                    var currentWord    = word.Span;

                    //If another change hasn't happened, do a real update
                    if (currentRequest == RequestedPoint)
                    {
                        SynchronousUpdate(currentRequest, new NormalizedSnapshotSpanCollection(yellowWordSpans), new NormalizedSnapshotSpanCollection(redWordSpans), currentWord);
                    }
                }

                catch (Exception)
                {
                    // MessageBox.Show("2 - e : " + e.Message + " \r\n " + e.StackTrace);
                }
            }
            catch (Exception)
            {
                // MessageBox.Show("2 - e : " + e.Message + " \r\n " + e.StackTrace);
            }
        }
コード例 #6
0
        IEnumerable <ITagSpan <ClippyTag> > ITagger <ClippyTag> .GetTags(NormalizedSnapshotSpanCollection spans)
        {
            try
            {
                if (spans == null || spans.FirstOrDefault() == null)
                {
                    return(null);
                }

                if (spans.FirstOrDefault().Snapshot.ContentType.TypeName != "SQL Server Tools")
                {
                    return(null);
                }

                var items = new List <ITagSpan <ClippyTag> >();

                if (_lastCallTime.AddMilliseconds(_lastCallDelay) >= DateTime.Now)
                {
                    return(_lastSpans);
                }

                _lastCallTime = DateTime.Now;

                if (!Monitor.TryEnter(_lock))
                {
                    return(_lastSpans);
                }

                var dte = VsServiceProvider.Get(typeof(DTE));


                if (null == dte || !ClippySettings.Enabled)
                {
                    Monitor.Exit(_lock);
                    return(_lastSpans);
                }

                //if (_store == null)
                //{
                //    _store = new TagStore();
                //    Monitor.Exit(_lock);
                //    return _lastSpans;
                //}

                if (_store.Stopped)
                {
                    _store.Stopped = false;
                    Monitor.Exit(_lock);
                    return(_lastSpans);
                }


                var text = spans.FirstOrDefault().Snapshot.GetText();

                var glyphs = new OperationsBuilder(spans.FirstOrDefault().Snapshot, _store).GetStatementOptions(text);

                foreach (var g in glyphs)
                {
                    if (g.Menu.Count == 0)
                    {
                        continue;
                    }

                    var tag = new ClippyTag(g);

                    var tagSpan = new TagSpan <ClippyTag>(new SnapshotSpan(spans.FirstOrDefault().Snapshot, g.StatementOffset, g.StatementLength), tag);
                    tag.Tagger            = this;
                    tagSpan.Tag.ParentTag = tagSpan;
                    g.Tag = tagSpan.Tag;
                    items.Add(tagSpan);
                }

                Monitor.Exit(_lock);
                _lastSpans = items;
                return(items);
            }
            catch (Exception)
            {
                Monitor.Exit(_lock);
                return(null);
            }
        }