#! /usr/bin/env python3 # -*- coding: utf-8 -*- #====================================================================== # # leaderf_snippet.py - # # Created by skywind on 2021/02/01 # Last Modified: 2021/02/01 17:48:09 # #====================================================================== from __future__ import unicode_literals, print_function import sys import time import re import vim def init(): # print('init2') return 0 def usnip_query(): source = [] vim.eval('UltiSnips#SnippetsInCurrentScope()') items = vim.eval('items(g:current_ulti_dict_info)') from UltiSnips import UltiSnips_Manager import UltiSnips manager = UltiSnips.UltiSnips_Manager snippets = UltiSnips.UltiSnips_Manager._snips('', True) snippets_values = {} for snippet in snippets: key = snippet.trigger desc = snippet._description snippets_values[key] = snippet._value size = 4 for item in items: key = item[0] info = item[1] desc = info.get('description', '') value = snippets_values.get(key, '') desc = desc.strip() size = max(size, len(key)) if not desc: desc = usnip_simplify(value) # desc = '' source.append([key, desc, '', usnip_clear(value)]) source.sort() for item in source: item[2] = item[0] + (' ' * (size - len(item[0]))) return source def usnip_clear(text): t = re.sub('`[^`]*`', '', text) if t.strip() == '': t = text return t def usnip_simplify(text): t = re.sub('`[^`]*`', '', text) if t.strip() == '': t = text text = '\n'.join(t.split("\n")[:5]) text = re.sub('\${[^{}]*}', '...', text) text = re.sub('\${[^{}]*}', '...', text) text = text.replace("\n", ' ; ') text = re.sub('\s+', ' ', text) return text[:100] def usnip_digest(text): return 0 def test(): source = usnip_query() for item in source: key = item[0] if key == 'def' or 0: value = item[3] print(key, value) print('---') print(usnip_clear(value)) print('---') print(usnip_simplify(value)) return 0