def run(self): v = self.window.active_view() v.settings().erase("vintage") _init_vintageous(v) DotFile.from_user().run() print("Package.Vintageous: State reset.") sublime.status_message("Vintageous: State reset")
def run(self): v = self.window.active_view() v.settings().erase('vintage') _init_vintageous(v) DotFile.from_user().run() print("Package.Vintageous: State reset.") sublime.status_message("Vintageous: State reset")
def _init_vintageous(view, new_session=False): """ Initializes global data. Runs at startup and every time a view gets activated, loaded, etc. @new_session Whether we're starting up Sublime Text. If so, volatile data must be wiped. """ if not is_view(view): # Abort if we got a widget, panel... _logger().info( '[_init_vintageous] ignoring view: {0}'.format( view.name() or view.file_name() or '<???>')) try: # XXX: All this seems to be necessary here. if not is_ignored_but_command_mode(view): view.settings().set('command_mode', False) view.settings().set('inverse_caret_state', False) view.settings().erase('vintage') if is_ignored(view): # Someone has intentionally disabled Vintageous, so let the user know. sublime.status_message( 'Vintageous: Vim emulation disabled for the current view') except AttributeError: _logger().info( '[_init_vintageous] probably received the console view') except Exception: _logger().error('[_init_vintageous] error initializing view') finally: return state = State(view) if not state.reset_during_init: # Probably exiting from an input panel, like when using '/'. Don't # reset the global state, as it may contain data needed to complete # the command that's being built. state.reset_during_init = True return # Non-standard user setting. reset = state.settings.view['vintageous_reset_mode_when_switching_tabs'] # XXX: If the view was already in normal mode, we still need to run the # init code. I believe this is due to Sublime Text (intentionally) not # serializing the inverted caret state and the command_mode setting when # first loading a file. # If the mode is unknown, it might be a new file. Let normal mode setup # continue. if not reset and (state.mode not in (modes.NORMAL, modes.UNKNOWN)): return # If we have no selections, add one. if len(state.view.sel()) == 0: state.view.sel().add(sublime.Region(0)) state.logger.info('[_init_vintageous] running init') if state.mode in (modes.VISUAL, modes.VISUAL_LINE): # TODO: Don't we need to pass a mode here? view.window().run_command('_enter_normal_mode', {'from_init': True}) elif state.mode in (modes.INSERT, modes.REPLACE): # TODO: Don't we need to pass a mode here? view.window().run_command('_enter_normal_mode', {'from_init': True}) elif (view.has_non_empty_selection_region() and state.mode != modes.VISUAL): # Runs, for example, when we've performed a search via ST3 search # panel and we've pressed 'Find All'. In this case, we want to # ensure a consistent state for multiple selections. # TODO: We could end up with multiple selections in other ways # that bypass _init_vintageous. state.mode = modes.VISUAL else: # This may be run when we're coming from cmdline mode. pseudo_visual = view.has_non_empty_selection_region() mode = modes.VISUAL if pseudo_visual else state.mode # TODO: Maybe the above should be handled by State? state.enter_normal_mode() view.window().run_command('_enter_normal_mode', {'mode': mode, 'from_init': True}) state.reset_command_data() if new_session: state.reset_volatile_data() # Load settings. DotFile.from_user().run()
def _init_vintageous(view, new_session=False): """ Initializes global data. Runs at startup and every time a view gets activated, loaded, etc. @new_session Whether we're starting up Sublime Text. If so, volatile data must be wiped. """ if not is_view(view): # Abort if we got a widget, panel... _logger().info('[_init_vintageous] ignoring view: {0}'.format( view.name() or view.file_name() or '<???>')) try: # XXX: All this seems to be necessary here. if not is_ignored_but_command_mode(view): view.settings().set('command_mode', False) view.settings().set('inverse_caret_state', False) view.settings().erase('vintage') if is_ignored(view): # Someone has intentionally disabled Vintageous, so let the user know. sublime.status_message( 'Vintageous: Vim emulation disabled for the current view') except AttributeError: _logger().info( '[_init_vintageous] probably received the console view') except Exception: _logger().error('[_init_vintageous] error initializing view') finally: return state = State(view) if not state.reset_during_init: # Probably exiting from an input panel, like when using '/'. Don't # reset the global state, as it may contain data needed to complete # the command that's being built. state.reset_during_init = True return # Non-standard user setting. reset = state.settings.view['vintageous_reset_mode_when_switching_tabs'] # XXX: If the view was already in normal mode, we still need to run the # init code. I believe this is due to Sublime Text (intentionally) not # serializing the inverted caret state and the command_mode setting when # first loading a file. # If the mode is unknown, it might be a new file. Let normal mode setup # continue. if not reset and (state.mode not in (modes.NORMAL, modes.UNKNOWN)): return # If we have no selections, add one. if len(state.view.sel()) == 0: state.view.sel().add(sublime.Region(0)) state.logger.info('[_init_vintageous] running init') if state.mode in (modes.VISUAL, modes.VISUAL_LINE): # TODO: Don't we need to pass a mode here? view.window().run_command('_enter_normal_mode', {'from_init': True}) elif state.mode in (modes.INSERT, modes.REPLACE): # TODO: Don't we need to pass a mode here? view.window().run_command('_enter_normal_mode', {'from_init': True}) elif (view.has_non_empty_selection_region() and state.mode != modes.VISUAL): # Runs, for example, when we've performed a search via ST3 search # panel and we've pressed 'Find All'. In this case, we want to # ensure a consistent state for multiple selections. # TODO: We could end up with multiple selections in other ways # that bypass _init_vintageous. state.mode = modes.VISUAL else: # This may be run when we're coming from cmdline mode. pseudo_visual = view.has_non_empty_selection_region() mode = modes.VISUAL if pseudo_visual else state.mode # TODO: Maybe the above should be handled by State? state.enter_normal_mode() view.window().run_command('_enter_normal_mode', { 'mode': mode, 'from_init': True }) state.reset_command_data() if new_session: state.reset_volatile_data() # Load settings. DotFile.from_user().run()
def run(self, edit): DotFile.from_user().run()