示例#1
0
def inst(nvim: Nvim) -> Atomic:
    pkgs = {
        path: spec
        for path, spec in ((p_name(spec.git.uri), spec) for spec in pkg_specs)
        if path.exists()
    }

    atomic1 = Atomic()
    keymap = Keymap()

    for spec in pkgs.values():
        for key in spec.keys:
            for lhs, rhs in key.maps.items():
                attrgetter(key.modes)(keymap)(lhs, **asdict(key.opts)) << rhs

        for lhs, rhs in spec.vals.items():
            atomic1.set_var(lhs, rhs)

    atomic2 = rtp_packages(nvim, plugins=pkgs)

    for spec in pkgs.values():
        if spec.lua:
            lua = indent(spec.lua, " " * 2)
            lua_block = f"(function(){linesep}{lua}{linesep}end)()"
            atomic2.call_function("luaeval", (lua_block, ()))
        if spec.viml:
            atomic2.command(spec.viml)

    return atomic1 + keymap.drain(buf=None) + atomic2
示例#2
0
def drain(nvim: Nvim) -> Tuple[Atomic, Sequence[RpcSpec]]:
    _atomic = Atomic()
    _atomic.call_function("setenv", ("PATH", PATH))
    _atomic.call_function("setenv", ("PYTHONPATH", PYTHONPATH))
    _atomic.set_var("mapleader", " ")
    _atomic.set_var("maplocalleader", " ")

    a0 = inst(nvim)
    a1 = settings.drain()
    a2, s0 = rpc.drain(nvim.channel_id)
    a3 = keymap.drain(buf=None)
    a4 = autocmd.drain()
    return _atomic + a0 + a1 + a2 + a3 + a4 + atomic, s0
示例#3
0
文件: rtp.py 项目: cyproterone/nvim2
def inst(nvim: Nvim) -> Atomic:
    pkgs = {
        path: spec
        for path, spec in ((p_name(spec.git.uri), spec) for spec in pkg_specs)
        if path.exists()
    }

    atomic1 = Atomic()
    keymap = Keymap()

    for spec in pkgs.values():
        for key in spec.keys:
            for lhs, rhs in key.maps.items():
                attrgetter(key.modes)(keymap)(lhs, **asdict(key.opts)) << rhs

        for lhs, rhs in spec.vals.items():
            atomic1.set_var(lhs, rhs)

    atomic2 = Atomic()
    atomic2.command("packloadall")

    for spec in pkgs.values():
        if spec.lua:
            body = indent(spec.lua, " " * 2)
            lua = f"""
            (function()
            local _, err = pcall(function()
            {body}
            end)
            if err then
              vim.api.nvim_err_writeln(err)
            end
            end)()
            """
            atomic2.exec_lua(dedent(lua), ())
        if spec.viml:
            lua = f"""
            (function(viml)
            local _, err = pcall(vim.cmd, viml)
            if err then
              vim.api.nvim_err_writeln(err)
            end
            end)(...)
            """
            atomic2.exec_lua(dedent(lua), (spec.viml, ))

    return atomic1 + keymap.drain(buf=None) + atomic2