def show_debugger_layout(self): if not self.debugger_model: self.debugger_model = DebuggerModel(self.debugger) self.debug_views = dict([ (key, None) for key in self.debugger_model.get_data().keys() ]) ViewHelper.init_debug_layout(self.window, self.debug_views)
def start_command_async(self, file_path, use_bundler, *args): if self.debugger: self.debugger.run_command(DebuggerModel.COMMAND_STOP) # Initialize variables self.debugger = RubyDebugger(self, use_bundler) self.debugger_model = DebuggerModel(self.debugger) # Intialize debugger layout self.show_debugger_layout() # Start debugging self.debugger.run_command(DebuggerModel.COMMAND_START, PathHelper.get_pwd(file_path), file_path, *args) # Register all breakpoint self.register_breakpoints()
def run(self, command, **args): # Allow only known commands if command not in DebuggerModel.COMMANDS: sublime.message_dialog("Unknown command: " + command) return # Allow only start command when inactive if not self.debugger and command not in DebuggerModel.STARTERS_COMMANDS: return # Cursor movement commands if command == DebuggerModel.COMMAND_JUMP: current_line = ViewHelper.get_current_cursor( self.window, self.debugger_model.get_current_file()) if current_line: self.clear_cursor() self.debugger.run_command(command, str(current_line + 1)) self.debugger.run_command(DebuggerModel.COMMAND_GET_LOCATION) elif command == DebuggerModel.COMMAND_GO_TO: file_name = self.debugger_model.get_current_file() current_line = ViewHelper.get_current_cursor( self.window, file_name) if current_line: self.clear_cursor() self.debugger.run_command( DebuggerModel.COMMAND_SET_BREAKPOINT, file_name + ":" + str(current_line + 1)) self.debugger.run_command(DebuggerModel.COMMAND_CONTINUTE) self.register_breakpoints() elif command in DebuggerModel.MOVEMENT_COMMANDS: self.clear_cursor() self.debugger.run_command(command, **args) self.debugger.run_command(DebuggerModel.COMMAND_GET_LOCATION) # Input commands elif command == DebuggerModel.COMMAND_DEBUG_LAYOUT: self.show_debugger_layout() elif command == DebuggerModel.COMMAND_RESET_LAYOUT: if not self.debugger_model: self.debugger_model = DebuggerModel(self.debugger) if not self.debug_views: self.debug_views = dict([ (key, None) for key in self.debugger_model.get_data().keys() ]) ViewHelper.reset_debug_layout(self.window, self.debug_views) elif command == DebuggerModel.COMMAND_SEND_INPUT: self.window.show_input_panel( "Enter input", '', lambda input_line: self.on_input_entered(input_line), None, None) elif command == DebuggerModel.COMMAND_GET_EXPRESSION: self.window.show_input_panel( "Enter expression", '', lambda exp: self.on_expression_entered(exp), None, None) elif command == DebuggerModel.COMMAND_ADD_WATCH: self.window.show_input_panel( "Enter watch expression", '', lambda exp: self.on_watch_entered(exp), None, None) # Start command elif command == DebuggerModel.COMMAND_START_RAILS: if PathHelper.file_exists("script/rails", self.window): self.start_command("script/rails s") elif PathHelper.file_exists("bin/rails", self.window): # Rails 4 support self.start_command("bin/rails s") else: sublime.message_dialog( "Cannot find file. Are you sure you're in a rails project?" ) elif command == DebuggerModel.COMMAND_START_CURRENT_FILE: self.start_command(self.window.active_view().file_name()) elif command == DebuggerModel.COMMAND_START: self.window.show_input_panel( "Enter file name", '', lambda file_name: self.start_command(file_name), None, None) # Register breakpoints command elif command == DebuggerModel.COMMAND_SET_BREAKPOINT: self.register_breakpoints() # All othe commands else: self.debugger.run_command(command)