def load_options_definitions(self, force=False):
"""
Load vim option descriptions from a mpack file
"""
r = g.bindtextdomain('nvim', locale_dir)
fields = ["full_name", "short_desc", "abbreviation", "scope"]
# we embed the mpack file to deal with old nvim
folders = [
self.nvim.eval('$VIMRUNTIME').strip(),
os.path.join(os.path.dirname(os.path.abspath(__file__)), '../..')
]
fname = None
# TODO let the user be able to override default paths
try:
fname = self.nvim.vars['palette_descriptions_file']
logger.info("using configured g:palette_descriptions_file value")
except Exception as e:
logger.debug("Looking for descriptions files")
# NvimDevLintToggle
if fname is None:
for folder in folders:
fname = os.path.join(folder, 'data', 'options.mpack')
logger.debug("Checking path '%s'" % fname)
if os.path.isfile(fname):
break
# fname = '/home/teto/neovim2/build/runtime/data/options.mpack'
# fname = os.path.join(filedir, "options.mpack"),
logger.info("Loading descriptions from file %s" % fname)
try:
fd = open(fname, 'rb')
res = msgpack.loads(fd.read())
except Exception as e:
logger.error('Could not load definitions')
self.nvim.command("echomsg 'Could not load definitions'")
raise e
df = pd.DataFrame([], columns=fields)
for entry in res:
temp = {k.decode(): v.decode() if isinstance(v, bytes) else v for k, v in entry.items()}
# unpacker = msgpack.Unpacker(fd, use_list=False)
# for unpacked in unpacker:
# print(unpacked)
df = df.append(temp, ignore_index=True)
# df = pd.DataFrame(res, columns=fields)
# df.from_records(res)
# logger.debug(df["scope"].head())
df["scope"] = df["scope"].apply(lambda x: [e.decode() for e in x])
# print(df)
return df
# @neovim.function('PaletteGetMenu', sync=True)
# def get_menus(self, args):
# entries = self.retrieve_menus()
# keys = list(entries.keys())
# res = self.nvim.call('PaletteFzf', keys)
评论列表
文章目录