Some checks failed
Detach Plugins / check (FlyGrep.vim) (push) Has been cancelled
Detach Plugins / check (GitHub.vim) (push) Has been cancelled
Detach Plugins / check (JavaUnit.vim) (push) Has been cancelled
Detach Plugins / check (SourceCounter.vim) (push) Has been cancelled
Detach Plugins / check (cpicker.nvim) (push) Has been cancelled
Detach Plugins / check (dein-ui.vim) (push) Has been cancelled
Detach Plugins / check (git.vim) (push) Has been cancelled
Detach Plugins / check (iedit.vim) (push) Has been cancelled
Detach Plugins / check (scrollbar.vim) (push) Has been cancelled
Detach Plugins / check (vim-chat) (push) Has been cancelled
Detach Plugins / check (vim-cheat) (push) Has been cancelled
Detach Plugins / check (vim-todo) (push) Has been cancelled
Detach Plugins / check (xmake.vim) (push) Has been cancelled
test / Linux (nvim, nightly) (push) Has been cancelled
test / Linux (nvim, v0.3.8) (push) Has been cancelled
test / Linux (nvim, v0.4.0) (push) Has been cancelled
test / Linux (nvim, v0.4.2) (push) Has been cancelled
test / Linux (nvim, v0.4.3) (push) Has been cancelled
test / Linux (nvim, v0.4.4) (push) Has been cancelled
test / Linux (nvim, v0.5.0) (push) Has been cancelled
test / Linux (nvim, v0.5.1) (push) Has been cancelled
test / Linux (nvim, v0.6.0) (push) Has been cancelled
test / Linux (nvim, v0.6.1) (push) Has been cancelled
test / Linux (nvim, v0.7.0) (push) Has been cancelled
test / Linux (nvim, v0.7.2) (push) Has been cancelled
test / Linux (nvim, v0.8.0) (push) Has been cancelled
test / Linux (nvim, v0.8.1) (push) Has been cancelled
test / Linux (nvim, v0.8.2) (push) Has been cancelled
test / Linux (nvim, v0.8.3) (push) Has been cancelled
test / Linux (nvim, v0.9.0) (push) Has been cancelled
test / Linux (nvim, v0.9.1) (push) Has been cancelled
test / Linux (true, vim, v7.4.052) (push) Has been cancelled
test / Linux (true, vim, v7.4.1689) (push) Has been cancelled
test / Linux (true, vim, v7.4.629) (push) Has been cancelled
test / Linux (true, vim, v8.0.0027) (push) Has been cancelled
test / Linux (true, vim, v8.0.0183) (push) Has been cancelled
test / Linux (vim, nightly) (push) Has been cancelled
test / Linux (vim, v8.0.0184) (push) Has been cancelled
test / Linux (vim, v8.0.1453) (push) Has been cancelled
test / Linux (vim, v8.1.2269) (push) Has been cancelled
test / Linux (vim, v8.2.2434) (push) Has been cancelled
test / Linux (vim, v8.2.3995) (push) Has been cancelled
test / Windows (nvim, nightly) (push) Has been cancelled
test / Windows (nvim, v0.3.8) (push) Has been cancelled
test / Windows (nvim, v0.4.2) (push) Has been cancelled
test / Windows (nvim, v0.4.3) (push) Has been cancelled
test / Windows (nvim, v0.4.4) (push) Has been cancelled
test / Windows (nvim, v0.5.0) (push) Has been cancelled
test / Windows (nvim, v0.5.1) (push) Has been cancelled
test / Windows (nvim, v0.6.0) (push) Has been cancelled
test / Windows (nvim, v0.6.1) (push) Has been cancelled
test / Windows (nvim, v0.7.0) (push) Has been cancelled
test / Windows (nvim, v0.7.2) (push) Has been cancelled
test / Windows (nvim, v0.8.0) (push) Has been cancelled
test / Windows (nvim, v0.8.1) (push) Has been cancelled
test / Windows (nvim, v0.8.2) (push) Has been cancelled
test / Windows (nvim, v0.8.3) (push) Has been cancelled
test / Windows (nvim, v0.9.0) (push) Has been cancelled
test / Windows (nvim, v0.9.1) (push) Has been cancelled
test / Windows (vim, nightly) (push) Has been cancelled
test / Windows (vim, v7.4.1185) (push) Has been cancelled
test / Windows (vim, v7.4.1689) (push) Has been cancelled
test / Windows (vim, v8.0.0027) (push) Has been cancelled
test / Windows (vim, v8.0.1453) (push) Has been cancelled
test / Windows (vim, v8.1.2269) (push) Has been cancelled
test / Windows (vim, v8.2.2434) (push) Has been cancelled
test / Windows (vim, v8.2.3995) (push) Has been cancelled
docker / docker (push) Has been cancelled
mirror / check (coding) (push) Has been cancelled
mirror / check (gitee) (push) Has been cancelled
mirror / check (gitlab) (push) Has been cancelled
70 lines
2.2 KiB
Python
70 lines
2.2 KiB
Python
import sys
|
|
import vim
|
|
import msgpack
|
|
import neovim_rpc_server_api_info
|
|
|
|
BUFFER_TYPE = type(vim.current.buffer)
|
|
BUFFER_TYPE_ID = neovim_rpc_server_api_info.API_INFO['types']['Buffer']['id']
|
|
WINDOW_TYPE = type(vim.current.window)
|
|
WINDOW_TYPE_ID = neovim_rpc_server_api_info.API_INFO['types']['Window']['id']
|
|
|
|
|
|
def decode_if_bytes(obj):
|
|
if isinstance(obj, bytes):
|
|
return obj.decode("utf-8")
|
|
return obj
|
|
|
|
|
|
def walk(fn, obj):
|
|
if type(obj) in [list, tuple, vim.List]:
|
|
return list(walk(fn, o) for o in obj)
|
|
if type(obj) in [dict, vim.Dictionary]:
|
|
return dict((walk(fn, k), walk(fn, v)) for k, v in
|
|
obj.items())
|
|
return fn(obj)
|
|
|
|
|
|
if vim.eval("has('patch-8.0.1280')"):
|
|
def from_client(msg):
|
|
def handler(obj):
|
|
if type(obj) is msgpack.ExtType:
|
|
if obj.code == BUFFER_TYPE_ID:
|
|
return vim.buffers[msgpack.unpackb(obj.data)]
|
|
if obj.code == WINDOW_TYPE_ID:
|
|
return vim.windows[msgpack.unpackb(obj.data) - 1]
|
|
if sys.version_info.major != 2:
|
|
# python3 needs decode
|
|
obj = decode_if_bytes(obj)
|
|
return obj
|
|
return walk(handler, msg)
|
|
else:
|
|
def from_client(msg):
|
|
def handler(obj):
|
|
if type(obj) is msgpack.ExtType:
|
|
if obj.code == BUFFER_TYPE_ID:
|
|
return vim.buffers[msgpack.unpackb(obj.data)]
|
|
if obj.code == WINDOW_TYPE_ID:
|
|
return vim.windows[msgpack.unpackb(obj.data) - 1]
|
|
elif obj is None:
|
|
return ''
|
|
if sys.version_info.major != 2:
|
|
# python3 needs decode
|
|
obj = decode_if_bytes(obj)
|
|
return obj
|
|
return walk(handler, msg)
|
|
|
|
|
|
def to_client(msg):
|
|
def handler(obj):
|
|
if type(obj) == BUFFER_TYPE:
|
|
return msgpack.ExtType(BUFFER_TYPE_ID, msgpack.packb(obj.number))
|
|
if type(obj) == WINDOW_TYPE:
|
|
return msgpack.ExtType(WINDOW_TYPE_ID, msgpack.packb(obj.number))
|
|
if type(obj) == vim.Function:
|
|
try:
|
|
return obj.name.encode()
|
|
except Exception:
|
|
return ""
|
|
return obj
|
|
return walk(handler, msg)
|