def set_layout(layout): """ Toggle between debug and default window layouts. """ # Get active window and set reference to active view window = sublime.active_window() previous_active = window.active_view() # Do not set layout when disabled if S.get_config_value('disable_layout'): S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) S.RESTORE_INDEX = H.new_dictionary() S.set_window_value('restore_index', S.RESTORE_INDEX) return # Show debug layout if layout == 'debug': debug_layout = S.get_config_value('debug_layout', S.LAYOUT_DEBUG) if window.get_layout() != debug_layout: # Save current layout S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) # Remember view indexes S.RESTORE_INDEX = H.new_dictionary() for view in window.views(): view_id = "%d" % view.id() group, index = window.get_view_index(view) S.RESTORE_INDEX[view_id] = {"group": group, "index": index} S.set_window_value('restore_index', S.RESTORE_INDEX) # Set debug layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(debug_layout) # Show previous (single) layout else: # Get previous layout configuration if S.RESTORE_LAYOUT is None: S.RESTORE_LAYOUT = S.get_window_value('restore_layout', S.LAYOUT_NORMAL) if S.RESTORE_INDEX is None: S.RESTORE_INDEX = S.get_window_value('restore_index', {}) # Restore layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.RESTORE_LAYOUT) for view in window.views(): view_id = "%d" % view.id() # Set view indexes if view_id in H.dictionary_keys(S.RESTORE_INDEX): v = S.RESTORE_INDEX[view_id] window.set_view_index(view, v["group"], v["index"]) # Restore focus to previous active view if not previous_active is None: window.focus_view(previous_active)
def set_layout(layout): """ Toggle between debug and default window layouts. """ # Get active window and set reference to active view window = sublime.active_window() previous_active = window.active_view() # Do not set layout when disabled if S.get_config_value('disable_layout'): S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) S.RESTORE_INDEX = H.new_dictionary() S.set_window_value('restore_index', S.RESTORE_INDEX) return # Show debug layout if layout == 'debug': debug_layout = S.get_config_value('debug_layout', S.LAYOUT_DEBUG) if window.get_layout() != debug_layout: # Save current layout S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) # Remember view indexes S.RESTORE_INDEX = H.new_dictionary() for view in window.views(): view_id = "%d" % view.id() group, index = window.get_view_index(view) S.RESTORE_INDEX[view_id] = { "group": group, "index": index } S.set_window_value('restore_index', S.RESTORE_INDEX) # Set debug layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(debug_layout) # Show previous (single) layout else: # Get previous layout configuration if S.RESTORE_LAYOUT is None: S.RESTORE_LAYOUT = S.get_window_value('restore_layout', S.LAYOUT_NORMAL) if S.RESTORE_INDEX is None: S.RESTORE_INDEX = S.get_window_value('restore_index', {}) # Restore layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.RESTORE_LAYOUT) for view in window.views(): view_id = "%d" % view.id() # Set view indexes if view_id in H.dictionary_keys(S.RESTORE_INDEX): v = S.RESTORE_INDEX[view_id] window.set_view_index(view, v["group"], v["index"]) # Restore focus to previous active view if not previous_active is None: window.focus_view(previous_active)
def set_layout(layout): """ Toggle between debug and default window layouts. """ # Get active window and set reference to active view window = sublime.active_window() previous_active = window.active_view() # Show debug layout if layout == 'debug': if window.get_layout() != S.LAYOUT_DEBUG: # Save current layout S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) # Remember view indexes S.RESTORE_INDEX = H.new_dictionary() for view in window.views(): view_id = "%d" % view.id() group, index = window.get_view_index(view) S.RESTORE_INDEX[view_id] = {"group": group, "index": index} S.set_window_value('restore_index', S.RESTORE_INDEX) # Set debug layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.LAYOUT_DEBUG) # Show previous (single) layout else: # Get previous layout configuration if S.RESTORE_LAYOUT is None: S.RESTORE_LAYOUT = S.get_window_value('restore_layout', S.LAYOUT_NORMAL) if S.RESTORE_INDEX is None: S.RESTORE_INDEX = S.get_window_value('restore_index', {}) # Restore layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.RESTORE_LAYOUT) for view in window.views(): view_id = "%d" % view.id() # Set view indexes if view_id in H.dictionary_keys(S.RESTORE_INDEX): v = S.RESTORE_INDEX[view_id] window.set_view_index(view, v["group"], v["index"]) # Close all debugging related windows if view.name() == TITLE_WINDOW_BREAKPOINT or view.name( ) == TITLE_WINDOW_CONTEXT or view.name( ) == TITLE_WINDOW_STACK or view.name() == TITLE_WINDOW_WATCH: window.focus_view(view) window.run_command('close') window.run_command('hide_panel', {"panel": 'output.xdebug'}) # Restore focus to previous active view if not previous_active is None: window.focus_view(previous_active)
def set_layout(layout): """ Toggle between debug and default window layouts. """ # Get active window and set reference to active view window = sublime.active_window() previous_active = window.active_view() # Show debug layout if layout == 'debug': if window.get_layout() != S.LAYOUT_DEBUG: # Save current layout S.RESTORE_LAYOUT = window.get_layout() S.set_window_value('restore_layout', S.RESTORE_LAYOUT) # Remember view indexes S.RESTORE_INDEX = H.new_dictionary() for view in window.views(): view_id = "%d" % view.id() group, index = window.get_view_index(view) S.RESTORE_INDEX[view_id] = { "group": group, "index": index } S.set_window_value('restore_index', S.RESTORE_INDEX) # Set debug layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.LAYOUT_DEBUG) # Show previous (single) layout else: # Get previous layout configuration if S.RESTORE_LAYOUT is None: S.RESTORE_LAYOUT = S.get_window_value('restore_layout', S.LAYOUT_NORMAL) if S.RESTORE_INDEX is None: S.RESTORE_INDEX = S.get_window_value('restore_index', {}) # Restore layout window.set_layout(S.LAYOUT_NORMAL) window.set_layout(S.RESTORE_LAYOUT) for view in window.views(): view_id = "%d" % view.id() # Set view indexes if view_id in H.dictionary_keys(S.RESTORE_INDEX): v = S.RESTORE_INDEX[view_id] window.set_view_index(view, v["group"], v["index"]) # Close all debugging related windows if view.name() == TITLE_WINDOW_BREAKPOINT or view.name() == TITLE_WINDOW_CONTEXT or view.name() == TITLE_WINDOW_STACK or view.name() == TITLE_WINDOW_WATCH: window.focus_view(view) window.run_command('close') window.run_command('hide_panel', {"panel": 'output.xdebug'}) # Restore focus to previous active view if not previous_active is None: window.focus_view(previous_active)
def xdebug(): # Clear log file clear_output() if not S.PACKAGE_FOLDER: info("Unable to resolve current path for package.") info("==== Loading '%s' package ====" % S.PACKAGE_FOLDER) # Load breakpoint data try: load_breakpoint_data() finally: # Render breakpoint markers render_regions() # Reset debug windows if sublime.active_window().get_layout() == S.LAYOUT_DEBUG: show_content(DATA_WATCH) show_content(DATA_CONTEXT) show_content(DATA_BREAKPOINT) show_content(DATA_STACK) # Check for conflicting packages if S.PACKAGE_FOLDER: # Get package list from Package Control packages = None try: packages = sublime.load_settings('Package Control.sublime-settings').get('installed_packages', []) except: pass # Make sure it is a list if not isinstance(packages, list): packages = [] # Get packages inside Package directory for package_name in os.listdir(sublime.packages_path()): if package_name not in packages: packages.append(package_name) # Strip .sublime-package of package name for comparison package_extension = ".sublime-package" current_package = S.PACKAGE_FOLDER if current_package.endswith(package_extension): current_package = current_package[:-len(package_extension)] # Search for other conflicting packages conflict = [] for package in packages: if package.endswith(package_extension): package = package[:-len(package_extension)] if (package.lower().count("xdebug") or package.lower().count("moai")) and package != current_package: conflict.append(package) # Show message if conficting packages have been found if conflict: info("Conflicting packages detected.") debug(conflict) if not S.get_window_value('hide_conflict', False): sublime.error_message("The following package(s) could cause conflicts with '{package}':\n\n{other}\n\nPlease consider removing the package(s) above when experiencing any complications." \ .format(package=S.PACKAGE_FOLDER, other='\n'.join(conflict))) S.set_window_value('hide_conflict', True) else: S.set_window_value('hide_conflict', False)