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)); }
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)); }
private void Navigate(object sender, MouseButtonEventArgs e) { if (string.IsNullOrEmpty(_documentPath)) { return; } var dte = VsServiceProvider.Get(typeof(SDTE)) as DTE; dte?.Documents.Open(_documentPath); }
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); }
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); } }
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); } }