Beispiel #1
0
 def change_state(self, new_state, payload, *handlers):
     handlers = list(handlers)
     handlers.append(self)
     send(self.session_handler, self.url, handlers, payload)
     self.current_state = new_state
     self.current_handler_fn = getattr(self, 'handle_{}'.format(new_state),
                                       lambda *args, **kwargs: None)
Beispiel #2
0
    def eval(self, data, *handlers):
        address = localhost(self.nvim)

        if address is None:
            self.nvim.command('echom "No repl open"')
            return

        handlers = [self.get_handler(i) for i in handlers]

        if not 'op' in data:
            data.update({'op': 'eval'})

        if not 'ns' in data:
            data.update({'ns': get_acid_ns(self.nvim)})

        send(self.sessions, address, handlers, data)
Beispiel #3
0
    def command(self, data, handlers, url):
        acid_session = self.nvim.vars.get('acid_current_session')

        if get_customization_variable(self.nvim, 'acid_log_messages', 0):
            handlers = (i
                        for i in (*handlers, self.get_handler('Log').configure(
                            **self.context())))

        if not 'op' in data:
            data.update({'op': 'eval'})

        if acid_session:
            data.update({'session': acid_session})

        if url not in self.sessions.sessions and url not in self.fired_urls:
            self.nvim.command("doautocmd User AcidPreConnectNrepl")
            self.fired_urls.add(url)

        send(self.sessions, url, handlers, data)
Beispiel #4
0
    def acid_eval(self, data):
        nvim = self.nvim
        payload = data[0]
        fn = data[1]  # fn name
        addr = get(data, 2)
        addr_managed_by_acid = addr != None
        addr = addr or repl_host_address(nvim)
        url = format_addr(*addr)
        backend = get(data, 3) or "lua"

        handler_impl = handlers[backend](nvim, fn)
        handler = partial_handler(nvim, handler_impl)

        success, msg = send(self.session_handler, url, [handler], payload)

        if not success and addr_managed_by_acid:
            nvim.api.err_writeln(
                "Dropping connection on {} due to error when sending: {}".
                format(addr[1], msg))
            nvim.funcs.luaeval("require('acid.connections'):remove(_A)", addr)