Exemplo n.º 1
0
        public IAsyncQuickInfoSource TryCreateQuickInfoSource(ITextBuffer textBuffer)
        {
            // This ensures only one instance per textbuffer is created
            return(textBuffer.Properties.GetOrCreateSingletonProperty(() =>
            {
                ITextStructureNavigator textStructureNavigator = TextStructureNavigatorSelector.GetTextStructureNavigator(textBuffer);

                DTE2 dte = (DTE2)ServiceProvider.GetService(typeof(SDTE));

                Debugger5 debugger = dte?.Debugger as Debugger5;

                return new LuaDataTipsSourceSource(textBuffer, textStructureNavigator, debugger);
            }));
        }
Exemplo n.º 2
0
        /// <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>
        /// <param name="cancellationToken">A cancellation token to monitor for initialization cancellation, which can occur when VS is shutting down.</param>
        /// <param name="progress">A provider for progress updates.</param>
        /// <returns>A task representing the async work of package initialization, or an already completed task if there is none. Do not return null from this method.</returns>
        protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress)
        {
            // When initialized asynchronously, the current thread may be a background thread at this point.
            // Do any initialization that requires the UI thread after switching to the UI thread.
            await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

            try
            {
                SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider);

                configurationSettingsStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);

                configurationSettingsStore.CreateCollection("LuaDkmDebugger");

                attachOnLaunch   = configurationSettingsStore.GetBoolean("LuaDkmDebugger", "AttachOnLaunch", true);
                breakOnError     = configurationSettingsStore.GetBoolean("LuaDkmDebugger", "BreakOnError", true);
                releaseDebugLogs = configurationSettingsStore.GetBoolean("LuaDkmDebugger", "ReleaseDebugLogs", false);
                showHiddenFrames = configurationSettingsStore.GetBoolean("LuaDkmDebugger", "ShowHiddenFrames", false);
                useSchema        = configurationSettingsStore.GetBoolean("LuaDkmDebugger", "UseSchema", false);

                LuaDkmDebuggerComponent.LocalComponent.attachOnLaunch   = attachOnLaunch;
                LuaDkmDebuggerComponent.LocalComponent.breakOnError     = breakOnError;
                LuaDkmDebuggerComponent.LocalComponent.releaseDebugLogs = releaseDebugLogs;
                LuaDkmDebuggerComponent.LocalComponent.showHiddenFrames = showHiddenFrames;
                LuaDkmDebuggerComponent.LocalComponent.useSchema        = useSchema;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Failed to setup setting with " + e.Message);
            }

            OleMenuCommandService commandService = ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;

            if (commandService != null)
            {
                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaInitializeCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Visible = false;
                        }
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Visible = false;
                        }
                    };

                    menuItem.Visible = false;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaAttachOnLaunchCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        HandleToggleMenuItem(sender, args, "AttachOnLaunch", ref LuaDkmDebuggerComponent.LocalComponent.attachOnLaunch, ref attachOnLaunch);
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Checked = attachOnLaunch;
                        }
                    };

                    menuItem.Enabled = true;
                    menuItem.Checked = attachOnLaunch;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaBreakOnErrorCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        HandleToggleMenuItem(sender, args, "BreakOnError", ref LuaDkmDebuggerComponent.LocalComponent.breakOnError, ref breakOnError);
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Checked = breakOnError;
                        }
                    };

                    menuItem.Enabled = true;
                    menuItem.Checked = breakOnError;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LoggingCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        HandleToggleMenuItem(sender, args, "ReleaseDebugLogs", ref LuaDkmDebuggerComponent.LocalComponent.releaseDebugLogs, ref releaseDebugLogs);
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Checked = releaseDebugLogs;
                        }
                    };

                    menuItem.Enabled = true;
                    menuItem.Checked = releaseDebugLogs;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaShowHiddenFramesCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        HandleToggleMenuItem(sender, args, "ShowHiddenFrames", ref LuaDkmDebuggerComponent.LocalComponent.showHiddenFrames, ref showHiddenFrames);
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Checked = showHiddenFrames;
                        }
                    };

                    menuItem.Enabled = true;
                    menuItem.Checked = showHiddenFrames;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaUseSchemaCommandId);

                    OleMenuCommand menuItem = new OleMenuCommand((object sender, EventArgs args) =>
                    {
                        HandleToggleMenuItem(sender, args, "UseSchema", ref LuaDkmDebuggerComponent.LocalComponent.useSchema, ref useSchema);
                    }, menuCommandID);

                    menuItem.BeforeQueryStatus += (object sender, EventArgs args) =>
                    {
                        if (sender is OleMenuCommand command)
                        {
                            command.Checked = useSchema;
                        }
                    };

                    menuItem.Enabled = true;
                    menuItem.Checked = useSchema;

                    commandService.AddCommand(menuItem);
                }

                {
                    CommandID menuCommandID = new CommandID(CommandSet, LuaShowScriptListCommandId);

                    MenuCommand menuItem = new MenuCommand((object sender, EventArgs args) =>
                    {
                        JoinableTaskFactory.RunAsync(async() =>
                        {
                            ToolWindowPane window = await ShowToolWindowAsync(
                                typeof(ScriptListWindow),
                                0,
                                create: true,
                                cancellationToken: DisposalToken);
                        });
                    }, menuCommandID);

                    commandService.AddCommand(menuItem);
                }
            }

            try
            {
                DTE2 dte = (DTE2)ServiceProvider.GetService(typeof(SDTE));

                scriptListWindowState.dte = dte;

                Debugger5 debugger = dte?.Debugger as Debugger5;

                var debuggerEventHandler = new LuaDebuggerEventHandler(this, debugger);

                ServiceContainer.AddService(debuggerEventHandler.GetType(), debuggerEventHandler, promote: true);
            }
            catch (Exception e)
            {
                Debug.WriteLine("Failed to setup debuggerEventHandler with " + e.Message);
            }
        }
Exemplo n.º 3
0
 public LuaDebuggerEventHandler(LuaDkmDebuggerPackage package, Debugger5 debugger)
 {
     this.package  = package;
     this.debugger = debugger;
 }
Exemplo n.º 4
0
 public LuaDataTipsSourceSource(ITextBuffer textBuffer, ITextStructureNavigator textStructureNavigator, Debugger5 debugger)
 {
     this.textBuffer             = textBuffer;
     this.textStructureNavigator = textStructureNavigator;
     this.debugger = debugger;
 }
 public LuaDebuggerEventHandler(IServiceProvider serviceProvider, Debugger5 debugger)
 {
     this.serviceProvider = serviceProvider;
     this.debugger        = debugger;
 }