Ejemplo n.º 1
0
    def __init__(self, vim, launcher, config_path):
        def setup_neovim():
            """Set up neovim and execute global commands."""
            self.vim = vim
            self.vim_command("highlight_enerror")
            if not self.vim_eval("exists_enerrorstyle"):
                self.vim_command("set_enerrorstyle")
            self.vim_command("set_updatetime")
            self.vim_command("set_ensime_completion")

        def setup_logger_and_paths():
            """Set up paths and logger."""
            osp = os.path
            self.config_path = osp.abspath(config_path)
            config_dirname = osp.dirname(self.config_path)
            self.ensime_cache = osp.join(config_dirname, ".ensime_cache")
            self.log_dir = self.ensime_cache \
                    if osp.isdir(self.ensime_cache) else "/tmp/"
            self.log_file = os.path.join(self.log_dir, "ensime-vim.log")

        setup_logger_and_paths()
        setup_neovim()
        self.log("__init__: in")

        self.ws = None
        self.ensime = None
        self.launcher = launcher
        self.ensime_server = None

        self.call_id = 0
        self.call_options = {}
        self.refactor_id = 1
        self.refactorings = {}
        self.receive_callbacks = {}

        self.matches = []
        self.errors = []
        self.queue = Queue()
        self.suggestions = None
        self.completion_timeout = 10 #seconds
        self.completion_started = False
        self.en_format_source_id = None
        self.enable_fulltype = False
        self.enable_teardown = True
        self.connection_attempts = 0
        self.tmp_diff_folder = "/tmp/ensime-vim/diffs/"
        Util.mkdir_p(self.tmp_diff_folder)

        self.debug_thread_id = None
        self.running = True
        Thread(target=self.queue_poll, args=()).start()

        self.handlers = {}
        self.register_responses_handlers()

        self.websocket_exists = module_exists("websocket")
        if not self.websocket_exists:
            self.tell_module_missing("websocket-client")
Ejemplo n.º 2
0
    def __init__(self, vim, launcher, config_path):
        def setup_vim():
            """Set up vim and execute global commands."""
            self.vim = vim
            if not int(self.vim_eval("exists_enerrorstyle")):
                self.vim_command("set_enerrorstyle")
            self.vim_command("highlight_enerror")
            self.vim_command("set_updatetime")
            self.vim_command("set_ensime_completion")

        def setup_logger_and_paths():
            """Set up paths and logger."""
            osp = os.path
            self.config_path = osp.abspath(config_path)
            config_dirname = osp.dirname(self.config_path)
            self.ensime_cache = osp.join(config_dirname, ".ensime_cache")
            self.log_dir = self.ensime_cache \
                if osp.isdir(self.ensime_cache) else "/tmp/"
            self.log_file = os.path.join(self.log_dir, "ensime-vim.log")

        def fetch_runtime_paths():
            """Fetch all the runtime paths of ensime-vim plugin."""
            paths = self.vim_eval("runtimepath")
            tag = "ensime-vim"
            ps = [p for p in paths.split(',') if tag in p]
            home = os.environ.get("HOME")
            if home:
                ps = map(lambda s: s.replace(home, "~"), ps)
            return ps

        setup_logger_and_paths()
        setup_vim()
        self.log("__init__: in")

        self.ws = None
        self.ensime = None
        self.launcher = launcher
        self.ensime_server = None

        self.call_id = 0
        self.call_options = {}
        self.refactor_id = 1
        self.refactorings = {}
        self.receive_callbacks = {}

        self.matches = []
        self.errors = []
        self.queue = Queue()
        self.suggestions = None
        self.completion_timeout = 10  # seconds
        self.completion_started = False
        self.en_format_source_id = None
        self.enable_fulltype = False
        self.toggle_teardown = True
        self.connection_attempts = 0
        self.tmp_diff_folder = "/tmp/ensime-vim/diffs/"
        Util.mkdir_p(self.tmp_diff_folder)

        # Set the runtime path here in case we need
        # to disable the plugin. It needs to be done
        # beforehand since vim.eval is not threadsafe
        self.runtime_paths = fetch_runtime_paths()

        # By default, don't connect to server more than once
        self.number_try_connection = 1

        self.debug_thread_id = None
        self.running = True
        Thread(target=self.queue_poll, args=()).start()

        self.handlers = {}
        self.register_responses_handlers()

        self.websocket_exists = module_exists("websocket")
        if not self.websocket_exists:
            self.tell_module_missing("websocket-client")
Ejemplo n.º 3
0
    def __init__(self, vim, launcher, config_path):
        def setup_vim():
            """Set up vim and execute global commands."""
            self.vim = vim
            if not int(self.vim_eval("exists_enerrorstyle")):
                self.vim_command("set_enerrorstyle")
            self.vim_command("highlight_enerror")
            self.vim_command("set_updatetime")
            self.vim_command("set_ensime_completion")
            self.vim.command(
                "autocmd FileType package_info nnoremap <buffer> <Space> :call EnPackageDecl()<CR>"
            )
            self.vim.command(
                "autocmd FileType package_info setlocal splitright")
            super(EnsimeClient, self).__init__()

        def setup_logger_and_paths():
            """Set up paths and logger."""
            osp = os.path
            self.config_path = osp.abspath(config_path)
            config_dirname = osp.dirname(self.config_path)
            self.ensime_cache = osp.join(config_dirname, ".ensime_cache")
            self.log_dir = self.ensime_cache
            if not osp.isdir(self.ensime_cache):
                try:
                    os.mkdir(self.ensime_cache)
                except OSError:
                    self.log_dir = "/tmp/"
            self.log_file = os.path.join(self.log_dir, "ensime-vim.log")
            with open(self.log_file, "w") as f:
                now = datetime.datetime.now()
                tm = now.strftime("%Y-%m-%d %H:%M:%S.%f")
                f.write("{}: {} - {}\n".format(tm, "Initializing project",
                                               config_dirname))

        def fetch_runtime_paths():
            """Fetch all the runtime paths of ensime-vim plugin."""
            paths = self.vim_eval("runtimepath")
            tag = "ensime-vim"
            ps = [p for p in paths.split(',') if tag in p]
            home = os.environ.get("HOME")
            if home:
                ps = map(lambda s: s.replace(home, "~"), ps)
            return ps

        setup_logger_and_paths()
        setup_vim()
        self.log("__init__: in")

        self.ws = None
        self.ensime = None
        self.launcher = launcher
        self.ensime_server = None

        self.call_id = 0
        self.call_options = {}
        self.refactor_id = 1
        self.refactorings = {}
        self.receive_callbacks = {}

        self.matches = []
        self.errors = []
        # Queue for messages received from the ensime server.
        self.queue = Queue()
        self.suggestions = None
        self.completion_timeout = 10  # seconds
        self.completion_started = False
        self.en_format_source_id = None

        self.full_types_enabled = False
        """Whether fully-qualified types are displayed by inspections or not"""

        self.toggle_teardown = True
        self.connection_attempts = 0
        self.tmp_diff_folder = "/tmp/ensime-vim/diffs/"
        Util.mkdir_p(self.tmp_diff_folder)

        # Set the runtime path here in case we need
        # to disable the plugin. It needs to be done
        # beforehand since vim.eval is not threadsafe
        self.runtime_paths = fetch_runtime_paths()

        # By default, don't connect to server more than once
        self.number_try_connection = 1

        self.debug_thread_id = None
        self.running = True

        thread = Thread(target=self.queue_poll, args=())
        thread.daemon = True
        thread.start()

        self.handlers = {}
        self.register_responses_handlers()

        self.websocket_exists = module_exists("websocket")
        if not self.websocket_exists:
            self.tell_module_missing("websocket-client")
        if not module_exists("sexpdata"):
            self.tell_module_missing("sexpdata")
Ejemplo n.º 4
0
    def __init__(self, vim, launcher, config_path):
        def setup_vim():
            """Set up vim and execute global commands."""
            self.vim = vim
            if not int(self.vim_eval("exists_enerrorstyle")):
                self.vim_command("set_enerrorstyle")
            self.vim_command("highlight_enerror")
            self.vim_command("set_updatetime")
            self.vim_command("set_ensime_completion")
            self.vim.command("autocmd FileType package_info nnoremap <buffer> <Space> :call EnPackageDecl()<CR>")
            self.vim.command("autocmd FileType package_info setlocal splitright")
            super(EnsimeClient, self).__init__()

        def setup_logger_and_paths():
            """Set up paths and logger."""
            osp = os.path
            self.config_path = osp.abspath(config_path)
            config_dirname = osp.dirname(self.config_path)
            self.ensime_cache = osp.join(config_dirname, ".ensime_cache")
            self.log_dir = self.ensime_cache
            if not osp.isdir(self.ensime_cache):
                try:
                    os.mkdir(self.ensime_cache)
                except OSError:
                    self.log_dir = "/tmp/"
            self.log_file = os.path.join(self.log_dir, "ensime-vim.log")
            with open(self.log_file, "w") as f:
                now = datetime.datetime.now()
                tm = now.strftime("%Y-%m-%d %H:%M:%S.%f")
                f.write("{}: {} - {}\n".format(tm, "Initializing project", config_dirname))

        def fetch_runtime_paths():
            """Fetch all the runtime paths of ensime-vim plugin."""
            paths = self.vim_eval("runtimepath")
            tag = "ensime-vim"
            ps = [p for p in paths.split(',') if tag in p]
            home = os.environ.get("HOME")
            if home:
                ps = map(lambda s: s.replace(home, "~"), ps)
            return ps

        setup_logger_and_paths()
        setup_vim()
        self.log("__init__: in")

        self.ws = None
        self.ensime = None
        self.launcher = launcher
        self.ensime_server = None

        self.call_id = 0
        self.call_options = {}
        self.refactor_id = 1
        self.refactorings = {}
        self.receive_callbacks = {}

        self.matches = []
        self.errors = []
        # Queue for messages received from the ensime server.
        self.queue = Queue()
        self.suggestions = None
        self.completion_timeout = 10  # seconds
        self.completion_started = False
        self.en_format_source_id = None

        self.full_types_enabled = False
        """Whether fully-qualified types are displayed by inspections or not"""

        self.toggle_teardown = True
        self.connection_attempts = 0
        self.tmp_diff_folder = "/tmp/ensime-vim/diffs/"
        Util.mkdir_p(self.tmp_diff_folder)

        # Set the runtime path here in case we need
        # to disable the plugin. It needs to be done
        # beforehand since vim.eval is not threadsafe
        self.runtime_paths = fetch_runtime_paths()

        # By default, don't connect to server more than once
        self.number_try_connection = 1

        self.debug_thread_id = None
        self.running = True

        thread = Thread(target=self.queue_poll, args=())
        thread.daemon = True
        thread.start()

        self.handlers = {}
        self.register_responses_handlers()

        self.websocket_exists = module_exists("websocket")
        if not self.websocket_exists:
            self.tell_module_missing("websocket-client")
        if not module_exists("sexpdata"):
            self.tell_module_missing("sexpdata")