py3 << EOF def f1(): t1 = vim.current.window t2 = t1.width vim.command('vnew') t3 = t2 // 3 vim.command('vertical resize %d' % t3) vim.current.window = t1 def f2(): context = { k : vim.options['splitright'] for k in ['splitright'] } try: current_window = vim.current.window vim.options['splitright'] = True vim.command('vnew') vim.command('r! tmux show-buffer') vim.current.window = current_window finally: for k, v in context.items(): vim.options[k] = v def f5_1(pattern, flags, info): import subprocess import io import re import tempfile import traceback import logging #print([pattern, flags, info]) completed_process = None options = dict( recursive=False, ext=[], ) #print('fuck') if b'r' in flags: while True: ext_m = re.compile('^.([^\,]+),(.*)$').match(pattern) if pattern[:3] in [r'\r,']: options['recursive'] = True pattern = pattern[3:] elif not ext_m is None: options['ext'].append( ext_m[1] ) pattern = ext_m[2] else: break print([flags, pattern, options,]) try: git_cmd = [ 'git', 'grep', '-n', ] if options['recursive']: git_cmd.append('--recurse-submodules') git_cmd.extend(['-P', pattern]) if len(options['ext']) > 0: git_cmd.extend(['--', *[ '**/*%s' % o for o in options['ext'] ]]) completed_process = subprocess.run( git_cmd, capture_output=True, ) assert ( completed_process.returncode == 0 or ( completed_process.stdout == b'' #completed_process.stdout == b'' and #completed_process.stderr == b'' ) ) t1 = completed_process.stdout except: logging.error(''.join([ traceback.format_exc(), getattr(completed_process, 'stdout', b'').decode('utf-8'), getattr(completed_process, 'stderr', b'').decode('utf-8'), ])) t1 = b'' def watch(data): with tempfile.NamedTemporaryFile(suffix='.txt') as f: with io.open(f.name, 'wb') as f2: f2.write(data) vim.command('!less %s' % f.name) #watch(t1) t2 = [] for o in t1.splitlines(): try: #watch(o.encode('utf-8')) t3 = o.decode('utf-8') t4 = re.compile(r'^([^\:\=]+)[\:\=](\d+)[\:\=](.*)$').match(t3) if not t4 is None: t2.append( dict( name=t4[3].strip(), filename=t4[1], cmd=t4[2], ) ) except: pass #print(t2) #return [{'name': 'blah', 'filename': 'docker-compose.yml', 'cmd': '23'}] return t2 EOF function! F5(pattern, flags, info) let res = py3eval( \'f5_1( \vim.bindeval("a:pattern").decode("utf-8"), \vim.bindeval("a:flags"), \vim.bindeval("a:info") \)' \) return res endfunc set tagfunc=F5