/////////////////////////////////////////////////////////////////////////////
        // Overridden Package Implementation
        #region Package Members

        /// <summary>
        /// Initialization of the package; this method is called right after the package is sited, so this is the place
        /// where you can put all the initialization code that rely on services provided by VisualStudio.
        /// </summary>
        protected override void Initialize()
        {
            Debug.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", ToString()));
            base.Initialize();

            // Add our command handlers for menu (commands must exist in the .vsct file)
            var mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;

            if (null != mcs)
            {
                // Create the command for the menu item.
                var menuCommandID = new CommandID(GuidList.guidGitHubExtensionCmdSet, (int)PkgCmdIDList.cmdidNewIssue);
                var menuItem      = new MenuCommand(MenuItemCallback, menuCommandID);
                mcs.AddCommand(menuItem);
                // Create the commands for the tool windows
                var issueListWndCommandID = new CommandID(GuidList.guidGitHubExtensionCmdSet, (int)PkgCmdIDList.cmdidIssues);
                var menuIssueListWin      = new MenuCommand(ShowIssueListToolWindow, issueListWndCommandID);
                mcs.AddCommand(menuIssueListWin);

                var issueWndCommandID = new CommandID(GuidList.guidGitHubExtensionCmdSet, (int)PkgCmdIDList.cmdidIssueWindow);
                var menuIssueWin      = new MenuCommand(ShowIssueToolWindow, issueWndCommandID);
                mcs.AddCommand(menuIssueWin);
            }

            IComponentModel      componentModel      = (IComponentModel)GetService(typeof(SComponentModel));
            IOutputWindowService outputWindowService = componentModel.DefaultExportProvider.GetExportedValueOrDefault <IOutputWindowService>();
            IOutputWindowPane    gitHubPane          = null;

            // Warn users if dependencies aren't installed.
            vsbaseWarningProvider = new ErrorListProvider(this);
            if (outputWindowService != null)
            {
                gitHubPane = outputWindowService.TryGetPane(View.OutputWriter.GitHubOutputWindowPaneName);
            }
            else
            {
                ErrorTask task = new ErrorTask
                {
                    Category      = TaskCategory.Misc,
                    ErrorCategory = TaskErrorCategory.Error,
                    Text          = "The required VSBase Services debugging support extension is not installed; output window messages will not be shown. Click here for more information."
                };
                task.Navigate += HandleNavigateToVsBaseServicesExtension;
                vsbaseWarningProvider.Tasks.Add(task);
                vsbaseWarningProvider.Show();
            }

            // This code is a bit of a hack to bridge MEF created components and Ninject managed components
            Factory.Rebind <IOutputWindowPane>().ToConstant(gitHubPane);
            Factory.Rebind <ICache>().ToConstant(componentModel.DefaultExportProvider.GetExportedValue <Cache>());
        }
예제 #2
0
        internal InfoSquigglesTagger(
            ITextBuffer buffer,
            ITagAggregator <AsmTokenTag> aggregator,
            AsmSimulator asmSimulator)
        {
            //AsmDudeToolsStatic.Output(string.Format("INFO: LabelErrorTagger: constructor"));
            this._sourceBuffer      = buffer;
            this._aggregator        = aggregator;
            this._errorListProvider = AsmDudeTools.Instance.Error_List_Provider;
            this._asmSimulator      = asmSimulator;
            this._foreground        = AsmDudeToolsStatic.GetFontColor();

            this._asmSimulator.Simulate_Done_Event += this.Handle_Simulate_Done_Event;
        }
예제 #3
0
        protected override void Initialize()
        {
            BuildCommand.Initialize(this);
            FlatBufferCode.Editor.BuildCommand.Initialize(this);

            dte = ServiceProvider.GlobalProvider.GetService(typeof(DTE)) as DTE;
            //dte.Events.BuildEvents.OnBuildBegin += BuildEvents_OnBuildBegin;

            ErrorList = new ErrorListProvider(this);

            outputWindow = ServiceProvider.GlobalProvider.GetService(typeof(IVsOutputWindow)) as IVsOutputWindow;

            base.Initialize();
        }
예제 #4
0
            public ErrorListUpdateSuspensionContext()
            {
                Lock.EnterWriteLock();

                lock (Sync)
                {
                    if (Interlocked.Increment(ref _activeSuspensionRequestCount) < 0)
                    {
                        Interlocked.Exchange(ref _activeSuspensionRequestCount, 1);
                    }
                }

                ErrorListProvider.SuspendRefresh();
            }
예제 #5
0
        public JsHintRunner(string fileName)
        {
            _fileName = fileName;

            if (_providers.ContainsKey(fileName))
            {
                _provider = _providers[fileName];
            }
            else
            {
                _provider = new ErrorListProvider(EditorExtensionsPackage.Instance);
                _providers.Add(fileName, _provider);
            }
        }
예제 #6
0
            public void Dispose()
            {
                Lock.ExitWriteLock();

                lock (Sync)
                {
                    if (Interlocked.Decrement(ref _activeSuspensionRequestCount) > 0)
                    {
                        return;
                    }
                }

                ErrorListProvider.ResumeRefresh();
            }
예제 #7
0
        public OutputConsoleLogger(IServiceProvider serviceProvider)
        {
            ErrorListProvider = new ErrorListProvider(serviceProvider);
            var outputConsoleProvider = ServiceLocator.GetInstance <IOutputConsoleProvider>();

            _dte = ServiceLocator.GetInstance <DTE>();

            _buildEvents = _dte.Events.BuildEvents;
            _buildEvents.OnBuildBegin    += (obj, ev) => { ErrorListProvider.Tasks.Clear(); };
            _solutionEvents               = _dte.Events.SolutionEvents;
            _solutionEvents.AfterClosing += () => { ErrorListProvider.Tasks.Clear(); };

            OutputConsole = outputConsoleProvider.CreateOutputConsole(requirePowerShellHost: false);
        }
예제 #8
0
        public static void AddErrors(string file, IEnumerable <CompilerError> errors)
        {
            CleanErrors(file);

            ErrorListProvider provider = new ErrorListProvider(WebCompilerPackage.Package);

            foreach (var error in errors)
            {
                var task = CreateTask(error, provider);
                provider.Tasks.Add(task);
            }

            _providers.Add(file, provider);
        }
예제 #9
0
 public static void Initialize(IServiceProvider serviceProvider)
 {
     try
     {
         _ivsSolution       = (IVsSolution)Package.GetGlobalService(typeof(IVsSolution));
         _ivsErrorList      = (IVsErrorList)Package.GetGlobalService(typeof(SVsErrorList));
         _errorListProvider = new ErrorListProvider(serviceProvider);
         _initialized       = true;
     }
     catch (Exception exception)
     {
         Log.Error($"Failed to initialize Error List. {exception.Message}");
     }
 }
예제 #10
0
        internal ResolverTagger(ITextBuffer buffer, IServiceProvider serviceProvider, ITextDocumentFactoryService textDocumentFactory)
        {
            _buffer = buffer;
            if (!textDocumentFactory.TryGetTextDocument(_buffer, out _document))
            {
                _document = null;
            }
            Snapshot       = null; // this makes sure the next snapshot will look different
            _errorProvider = new ErrorListProvider(serviceProvider);

            _filename = _document != null ? _document.FilePath : "<program>";
            BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ResolveBuffer);
            this.RunResolver = true;
        }
        public ErrorTagger(ITextBuffer buffer, IBufferTagAggregatorFactoryService aggregatorFactory,
                           IServiceProvider svcp, ITextDocumentFactoryService textDocumentFactory, ITextView view)
        {
            _buffer     = buffer;
            _view       = view;
            _aggregator = aggregatorFactory.CreateTagAggregator <SchemeTag>(buffer);

            textDocumentFactory.TryGetTextDocument(_buffer, out _document);

            _errorProvider = new ErrorListProvider(svcp);


            BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ReparseFile);
        }
예제 #12
0
        public static void Parse(ErrorListProvider errorListProvider, string path)
        {
            lock (errorListProvider)
            {
                // Remove all tasks for the current file, since they're likely out-of-date
                // if the user has just saved
                RemoveStaleErrors(errorListProvider, path);

                // Show a message that we're executing; since this can be slow. Otherwise we'd
                // have to leave known-stale errors, or empty list (which suggests no errors).
                errorListProvider.Tasks.Add(new ErrorTask
                {
                    ErrorCategory = TaskErrorCategory.Message,
                    Document      = path,
                    Text          = "Executing DartAnalyzer, please wait..."
                });
            }


            IEnumerable <ErrorTask> errors;

            try
            {
                errors = new DartAnalyzer().Analyze(path);
            }
            catch (Exception ex)
            {
                // Update the error list eith the new errors
                lock (errorListProvider)
                {
                    RemoveStaleErrors(errorListProvider, path);
                    errorListProvider.Tasks.Add(new ErrorTask(new Exception("Unable to execute DartAnalzyer: " + ex.ToString())));
                    errorListProvider.Show();
                    return;
                }
            }

            // Update the error list eith the new errors
            lock (errorListProvider)
            {
                RemoveStaleErrors(errorListProvider, path);
                foreach (var error in errors)
                {
                    error.Navigate += (s, e) => errorListProvider.Navigate(error, new Guid(EnvDTE.Constants.vsViewKindCode));
                    errorListProvider.Tasks.Add(error);
                }
                errorListProvider.Show();
            }
        }
예제 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="TransformationPreviewLogger"/> class.
        /// </summary>
        /// <param name="errorListProvider">The VS Package</param>
        /// <param name="hierachy">The current project hierarchy</param>
        public TransformationPreviewLogger(ErrorListProvider errorListProvider, IVsHierarchy hierachy)
        {
            if (errorListProvider == null)
            {
                throw new ArgumentNullException(nameof(errorListProvider));
            }

            if (hierachy == null)
            {
                throw new ArgumentNullException(nameof(hierachy));
            }

            this.errorListProvider = errorListProvider;
            this.hierachy          = hierachy;
        }
예제 #14
0
        internal LabelErrorTagger(
            ITextBuffer buffer,
            ITagAggregator<AsmTokenTag> aggregator,
            ILabelGraph labelGraph)
        {
            //AsmDudeToolsStatic.Output(string.Format("INFO: LabelErrorTagger: constructor"));
            this._sourceBuffer = buffer;
            this._aggregator = aggregator;
            this._errorListProvider = AsmDudeTools.Instance.Error_List_Provider;
            this._labelGraph = labelGraph;
            this._foreground = AsmDudeToolsStatic.GetFontColor();

            this._labelGraph.Reset_Done_Event += this.Handle_Label_Graph_Reset_Done_Event;
            this._labelGraph.Reset_Delayed();
        }
예제 #15
0
        public static void Initialize(IServiceProvider provider, DTE _dte)
        {
            dte = _dte;
            if (errorListProvider != null)
            {
                return;
            }

            errorListProvider = new ErrorListProvider(provider);
            errorListProvider.ProviderGuid = Guid.Parse("7C2C89EC-D368-4B15-B93A-E506EEA449E4");
            errorListProvider.ProviderName = "Naggy.DiagnosticsProvider";

            documentEvents = dte.Events.DocumentEvents;
            documentEvents.DocumentClosing += new _dispDocumentEvents_DocumentClosingEventHandler(documentEvents_DocumentClosing);
        }
예제 #16
0
        public static void AddErrors(string file, IEnumerable <MinificationError> errors)
        {
            CleanErrors(file);

            // Ideally we want to remove this dependency down the road
            ErrorListProvider provider = new ErrorListProvider(BundlerMinifierPackage._instance);

            foreach (var error in errors)
            {
                var task = CreateTask(error, provider);
                provider.Tasks.Add(task);
            }

            _providers.Add(file, provider);
        }
예제 #17
0
        public static void GotoBookmark(ConcurrentDictionary <int, Bookmark> dico, int keyNumber)
        {
            if (dico == null)
            {
                dico = _dico;
            }
            Bookmark     bmk;
            ITextBuffer  buffer;
            IWpfTextView wpfView;

            if (dico.TryGetValue(keyNumber, out bmk))
            {
                var dte = NumberedBookmarksPackage.Instance.DTE;
                for (int i = 0; i < dte.Documents.Count; i++)
                {
                    var doc = dte.Documents.Item(i + 1);
                    if (DocumentUtilities.GetTextBufferAndView(dte, doc, out buffer, out wpfView))
                    {
                        if (buffer == bmk.Buffer)
                        {
                            doc.Activate();
                            try
                            {
                                var pos     = bmk.TrackingPoint.GetPosition(buffer.CurrentSnapshot);
                                var newSnap = new SnapshotPoint(buffer.CurrentSnapshot, pos);
                                wpfView.Caret.MoveTo(newSnap);
                                wpfView.DisplayTextLineContainingBufferPosition(newSnap, wpfView.ViewportHeight / 2, ViewRelativePosition.Top);
                            }
                            catch (Exception ex)
                            {
                                //send exception into task list window
                                var errorProvider = new ErrorListProvider(NumberedBookmarksPackage.Instance);
                                var t             = new ErrorTask(ex);
                                t.Line     = bmk.Line;
                                t.Column   = 1;
                                t.Document = doc.Name;
                                t.Text     = string.Format(CultureInfo.InvariantCulture, "Unable to go to bookmark #{0} : {1}", keyNumber, ex);
                                errorProvider.Tasks.Add(t);
                            }
                        }
                    }
                }
            }
            else
            {
                SetStatusText(string.Format("the bookmark '{0}' has no been pinned in document or document has been closed, press ctrl-shift-{0} to assign location", keyNumber));
            }
        }
예제 #18
0
        public void VsTextViewCreated(IVsTextView textViewAdapter)
        {
            IWpfTextView view = AdaptersFactory.GetWpfTextView(textViewAdapter);

            view.TextBuffer.Properties.GetOrCreateSingletonProperty(() => view);
            _errorList = view.TextBuffer.Properties.GetOrCreateSingletonProperty(() => new ErrorListProvider(ServiceProvider));

            if (_errorList == null)
                return;

            CommandFilter filter = new CommandFilter(view, CompletionBroker);
            textViewAdapter.AddCommandFilter(filter, out var next);
            filter.Next = next;

            view.Closed += OnViewClosed;
        }
예제 #19
0
        public TaskList(object application)
        {
            instance = this;

            this.app = application as DTE2;
            var app = application as Microsoft.VisualStudio.OLE.Interop.IServiceProvider;

            if (app != null)
            {
                this.serviceProvider           = new ServiceProvider(app);
                this.listProvider              = new ErrorListProvider(this.serviceProvider);
                this.listProvider.ProviderName = this.GetType().Assembly.FullName;
                this.listProvider.ProviderGuid = new Guid("F1415C4C-5D67-401F-A81C-71F0721BB6F0");
                this.listProvider.Show();
            }
        }
예제 #20
0
        private static ErrorListProvider InitializeErrorListProvider()
        {
            var errorListProvider = new ErrorListProvider(EditorExtensionsPackage.Instance);

            try
            {
                errorListProvider.ProviderName = "Unused CSS Browser Link Extension";
                errorListProvider.ProviderGuid = new Guid("5BA8BB0D-D518-45ae-966C-864C536454F2");
            }
            catch
            {
                errorListProvider.Dispose();
            }

            return(errorListProvider);
        }
예제 #21
0
        protected override void DisposeManagedResources()
        {
            if (this.textView.TextBuffer != null)
            {
                this.textView.TextBuffer.Changed -= this.OnBufferChanged;
            }

            this.ClearErrors();

            Validate.IsNotNull(this.errorListProvider, nameof(this.errorListProvider));

            this.errorListProvider.Dispose();
            this.errorListProvider = null;

            base.DisposeManagedResources();
        }
        public TextViewMonitor(IWpfTextView view, ITextDocument document, DTE app, ErrorListProvider messageList)
        {
            _view            = view;
            _doc             = document;
            _app             = app;
            _settingsManager = new SettingsManager(view, document, messageList);
            _settings        = _settingsManager.Settings;

            if (_settings != null)
            {
                _globalSettings          = new GlobalSettings(view, app, _settings);
                _view.GotAggregateFocus += ViewOnGotAggregateFocus;
            }

            document.FileActionOccurred += FileActionOccurred;
            view.Closed += Closed;
        }
        private TransformProjectFilesCommand(
            Package package, ErrorListProvider errorListProvider,
            IVsOutputWindowPane outputWindowPane, IVsStatusbar statusbar, IOptions options)
        {
            m_package           = package ?? throw new ArgumentNullException(nameof(package));
            m_errorListProvider = errorListProvider ?? throw new ArgumentNullException(nameof(errorListProvider));
            m_outputWindowPane  = outputWindowPane ?? throw new ArgumentNullException(nameof(outputWindowPane));
            m_statusbar         = statusbar ?? throw new ArgumentNullException(nameof(statusbar));
            m_options           = options ?? throw new ArgumentNullException(nameof(options));

            if (ServiceProvider.GetService(typeof(IMenuCommandService)) is OleMenuCommandService commandService)
            {
                var menuCommandID = new CommandID(CommandSet, CommandId);
                var menuItem      = new MenuCommand(async(s, e) => await InvokeRefactoring(s, e), menuCommandID);
                commandService.AddCommand(menuItem);
            }
        }
예제 #24
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NugetPacker"/> class.
        /// Adds our command handlers for menu (commands must exist in the command table file)
        /// </summary>
        /// <param name="package">Owner package, not null.</param>
        private NugetPacker(Package package)
        {
            this.package = package ?? throw new ArgumentNullException("package");

            errorList   = new ErrorListProvider(this.package);
            ivsSolution = (IVsSolution)Package.GetGlobalService(typeof(IVsSolution));

            if (ServiceProvider.GetService(typeof(IMenuCommandService)) is OleMenuCommandService commandService)
            {
                var menuCommandID = new CommandID(CommandSet, CommandId);
                var menuItem      = new MenuCommand(MenuItemCallback, menuCommandID);
                commandService.AddCommand(menuItem);

                NugetPackerLogic.OnCompleted += NugetPackerLogic_OnCompleted;
                NugetPackerLogic.OnException += NugetPackerLogic_OnException;
            }
        }
예제 #25
0
        public TypescriptWatcher(VSPackage package, IVsOutputWindowPane pane)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }
            _vsOutWindow = pane ?? throw new ArgumentNullException(nameof(pane));

            _runningDocumentTable = new RunningDocumentTable(package);
            _runningDocumentTable.Advise(this);

            _errorList = new ErrorListProvider(package)
            {
                ProviderName = $"{Symbol.Name} Error List",
                ProviderGuid = new Guid("e18abe6a-7968-4bd6-9266-0684b1d50e7a")
            };
        }
예제 #26
0
        public MarginBase(string source, string name, string contentType, bool showMargin, ITextDocument document)
        {
            Document     = document;
            _marginName  = name;
            _settingsKey = _marginName + "_width";
            _showMargin  = showMargin;
            _dispatcher  = Dispatcher.CurrentDispatcher;
            _provider    = new ErrorListProvider(EditorExtensionsPackage.Instance);

            Document.FileActionOccurred += Document_FileActionOccurred;

            if (showMargin)
            {
                _dispatcher.BeginInvoke(
                    new Action(() => Initialize(contentType, source)), DispatcherPriority.ApplicationIdle, null);
            }
        }
예제 #27
0
        public SassWatcher(VSPackage package, IVsOutputWindowPane pane)
        {
            if (package == null)
            {
                throw new ArgumentNullException(nameof(package));
            }
            _vsOutWindow = pane ?? throw new ArgumentNullException(nameof(pane));

            _runningDocumentTable = new RunningDocumentTable(package);
            _runningDocumentTable.Advise(this);

            _errorList = new ErrorListProvider(package)
            {
                ProviderName = $"{Metadata.ProductName} Error List",
                ProviderGuid = new Guid("6e63fa03-9f4e-47da-9cf9-5efd22799c28")
            };
        }
예제 #28
0
        internal ErrorTagger(ITextBuffer buffer, IBufferTagAggregatorFactoryService aggregatorFactory, IServiceProvider serviceProvider, ITextDocumentFactoryService textDocumentFactory)
        {
            _buffer = buffer;

            _aggregator = aggregatorFactory.CreateTagAggregator <PkgDefTokenTag>(buffer);

            if (!textDocumentFactory.TryGetTextDocument(_buffer, out _document))
            {
                _document = null;
            }

            _errorProvider = new ErrorListProvider(serviceProvider);

            ReparseFile(null, EventArgs.Empty);

            BufferIdleEventUtil.AddBufferIdleEventListener(_buffer, ReparseFile);
        }
예제 #29
0
        void Remove(ErrorTask task)
        {
            if (ErrorListProvider != null)
            {
                ErrorListProvider.RemoveTask(task);
            }

            Tasks.Remove(task);

            lock (TaskProjects)
            {
                if (TaskProjects.ContainsKey(task))
                {
                    TaskProjects.Remove(task);
                }
            }
        }
예제 #30
0
        public ProjectInfo(
            NemerleProjectNode projectNode,
            IVsHierarchy hierarchy,
            NemerleLanguageService languageService,
            string fileName,
            string location
            )
        {
            ErrorHelper.ThrowIsNull(languageService, "languageService");
            ErrorHelper.ThrowIsNull(projectNode, "projectNode");
            ErrorHelper.ThrowIsNull(hierarchy, "hierarchy");
            Debug.Assert(projectNode.Site != null);

            LanguageService = languageService;
            _errorList      = new ErrorListProvider(languageService.Site);
            ProjectFullPath = Path.GetFullPath(fileName);
            _projectNode    = projectNode;
            _hierarchy      = hierarchy;

            _engine = EngineFactory.Create(this, new TraceWriter(), false);             // it enables parser working.

            Engine.TypedtreeCreated += delegate
            {
                _buildTypedtreeCount++;
                AstToolWindow tool = AstToolWindow.AstTool;
                if (tool != null)
                {
                    tool.BuildTypedtreeCount = _buildTypedtreeCount;
                }
            };

            if (!string.IsNullOrEmpty(location))
            {
                _projectLocation = location;
            }
            else
            {
                _projectLocation = Path.GetDirectoryName(fileName);
            }

            if (!_projectLocation.EndsWith("\\"))
            {
                _projectLocation += "\\";
            }
        }
예제 #31
0
 private ErrorListProvider GetErrorListProvider() {
     if (null == _errorListProvider) {
         _errorListProvider = new ErrorListProvider(_projectNode.ProjectMgr.Site);
     }
     return _errorListProvider;
 }