Beispiel #1
0
 def start_new_backend(self, backend_name):
     with Common.status_message_process(
             'Changing backend to \'{0}\''.format(backend_name),
             priority=2):
         BackendManager.BackendManager().change_current_backend(
             backend_name)
         cabal_project_status(self.window.active_view(),
                              BackendManager.BackendManager())
 def do_shutdown(self):
     backend_mgr = BackendManager.BackendManager()
     with Common.status_message_process('Shutting down {0} backend'.format(backend_mgr.current_backend_name), priority=1):
         try:
             self.busy = True
             backend_mgr.shutdown_backend()
         finally:
             self.busy = False
             cabal_project_status(self.window.active_view(), BackendManager.BackendManager())
 def do_startup(self):
     backend_mgr = BackendManager.BackendManager()
     with Common.status_message_process('Starting up {0} backend'.format(backend_mgr.current_backend_name), priority=1):
         try:
             self.busy = True
             backend_mgr.set_state(BackendManager.BackendManager.INITIAL)
             backend_mgr.initialize()
         finally:
             self.busy = False
             cabal_project_status(self.window.active_view(), BackendManager.BackendManager())
Beispiel #4
0
    def run(self):
        backend_mgr = BackendManager.BackendManager()

        # Rescan for backends to ensure we have the most up-to-date list...
        backend_mgr.possible_backends = backend_mgr.filter_possible(
            Settings.PLUGIN.backends)
        if len(backend_mgr.possible_backends) > 0:
            print('plugin \'backends\' {0}'.format(
                [name for name in Settings.PLUGIN.backends]))
            print('Possible/usable \'backends\': {0}'.format(
                [name for name in backend_mgr.possible_backends]))

            if len(backend_mgr.possible_backends) > 1:
                self.backend_names = [
                    name for name in backend_mgr.possible_backends
                ]
                self.backend_names.sort()
                self.window.show_quick_panel(self.backend_names,
                                             self.change_backend)
            elif len(backend_mgr.possible_backends) == 1:
                backend_name = list(backend_mgr.possible_backends)[0]
                sublime.message_dialog(
                    'Only one backend, \'{0}\', available -- starting it.'.
                    format(backend_name))
                self.start_new_backend(backend_name)
        else:
            backend_mgr.no_backends_available()
 def do_restart(self):
     self.restart_ev.set()
     try:
         SublimeHaskellStopBackend(self.window).do_shutdown()
         SublimeHaskellStartBackend(self.window).do_startup()
     finally:
         self.restart_ev.clear()
         cabal_project_status(self.window.active_view(), BackendManager.BackendManager())
Beispiel #6
0
 def __init__(self):
     super().__init__()
     self.autocompleter = Autocomplete.AutoCompleter()
     self.backend_mgr = BackendManager.BackendManager()
     self.type_cache = Types.SourceHaskellTypeCache()
     # I get two calls of `on_post_save` after saving file
     # To prevent extra calls to check/infer etc., we store here last updated time
     # view => (view.update_count(), time.clock())
     self.update_cache = {}
Beispiel #7
0
 def __init__(self):
     super().__init__()
     self.backend_mgr = BackendManager.BackendManager()
     self.type_cache = Types.SourceHaskellTypeCache()
     self.autocompleter = Autocomplete.AutoCompleter()
     # Fly mode state:
     self.fly_view = LockedObject.LockedObject({'view': None, 'mtime': None})
     self.fly_event = threading.Event()
     self.fly_agent = threading.Thread(target='fly_check')
Beispiel #8
0
def plugin_loaded():
    '''All of the good stuff that happens when SublimeHaskell is loaded.
    '''
    cache_path = Common.sublime_haskell_cache_path()
    backend_mgr = BackendManager.BackendManager()

    if not os.path.exists(cache_path):
        os.makedirs(cache_path)

    # Probably already loaded... doesn't hurt to reload. Refresh the backend manager's list of backends, while we're at it.
    Settings.load_settings()
    backend_mgr.get_backends()

    # Register change detection:
    Settings.PLUGIN.add_change_callback('add_to_PATH', ProcHelper.ProcHelper.update_environment)
    Settings.PLUGIN.add_change_callback('add_standard_dirs', ProcHelper.ProcHelper.update_environment)
    Settings.PLUGIN.add_change_callback('backends', backend_mgr.updated_settings)
Beispiel #9
0
def plugin_unloaded():
    '''Finalization actions when SublimeHaskell is unloaded.
    '''
    BackendManager.BackendManager().shutdown_backend()
Beispiel #10
0
 def __init__(self, view):
     super().__init__(view)
     self.candidates = None
     self.backend = Backend.NullHaskellBackend(BackendManager.BackendManager())
Beispiel #11
0
def plugin_unloaded():
    '''Finalization actions when SublimeHaskell is unloaded.
    '''
    ParseOutput.MARKER_MANAGER.clear_error_marks()
    BackendManager.BackendManager().shutdown_backend()
Beispiel #12
0
 def __init__(self, view):
     super().__init__(view)
     self.autocompleter = Autocomplete.AutoCompleter()
     self.backend_mgr = BackendManager.BackendManager()
     self.type_cache = Types.SourceHaskellTypeCache()
 def is_enabled(self):
     return not (self.restart_ev.is_set() or BackendManager.BackendManager().is_inactive_state())
 def is_enabled(self):
     return not (self.busy or BackendManager.BackendManager().is_inactive_state())