def run(self): win, view = gs.win_view(None, self.window) if view is None: return mats = {} args = {} vfn = gs.view_fn(view) src = gs.view_src(view) pkg_dir = '' if view.file_name(): pkg_dir = os.path.dirname(view.file_name()) res, err = margo.declarations(vfn, src, pkg_dir) if err: gs.notice(DOMAIN, err) return decls = res.get('file_decls', []) decls.extend(res.get('pkg_decls', [])) for d in decls: name = d['name'] m = TEST_PAT.match(name) if m and d['kind'] == 'func' and d['repr'] == '': mats[m.group(1)] = True args[name] = name names = sorted(args.keys()) ents = ['Run all tests and examples'] for k in ['Test', 'Benchmark', 'Example']: if mats.get(k): s = 'Run %ss Only' % k ents.append(s) if k == 'Benchmark': args[s] = '-test.run=none -test.bench=%s.*' % k else: args[s] = '-test.run=%s.*' % k for k in names: ents.append(k) if k.startswith('Benchmark'): args[k] = '-test.run=none -test.bench=^%s$' % k else: args[k] = '-test.run=^%s$' % k def cb(i): if i >= 0: s = 'go test %s' % args.get(ents[i], '') win.run_command('gs_shell', {'run': s}) win.show_quick_panel(ents, cb)
def run(self): win, view = gs.win_view(None, self.window) if view is None: return mats = {} args = {} vfn = gs.view_fn(view) src = gs.view_src(view) pkg_dir = '' if view.file_name(): pkg_dir = os.path.dirname(view.file_name()) res, err = margo.declarations(vfn, src, pkg_dir) if err: gs.notice(DOMAIN, err) return decls = res.get('file_decls', []) decls.extend(res.get('pkg_decls', [])) for d in decls: name = d['name'] prefix, _ = match_prefix_name(name) if prefix and d['kind'] == 'func' and d['repr'] == '': mats[True] = prefix args[name] = name names = sorted(args.keys()) ents = ['Run all tests and examples'] for k in ['Test', 'Benchmark', 'Example']: if mats.get(k): s = 'Run %ss Only' % k ents.append(s) if k == 'Benchmark': args[s] = '-test.run=none -test.bench=%s.*' % k else: args[s] = '-test.run=%s.*' % k for k in names: ents.append(k) if k.startswith('Benchmark'): args[k] = '-test.run=none -test.bench=^%s$' % k else: args[k] = '-test.run=^%s$' % k def cb(i): if i >= 0: s = 'go test %s' % args.get(ents[i], '') win.run_command('gs_shell', {'run': s}) win.show_quick_panel(ents, cb)
def palette_declarations(self, view, direct=False): indent = '' if direct else ' ' decls, err = margo.declarations( view.file_name(), view.substr(sublime.Region(0, view.size())) ) if err: gs.notice('GsDeclarations', err) decls.sort(key=lambda v: v['line']) for i, v in enumerate(decls): if v['name'] == '_': continue loc = Loc(v['filename'], v['line']-1, v['column']-1) prefix = u'%s%s \u00B7 ' % (indent, gs.CLASS_PREFIXES.get(v['kind'], '')) self.add_item(prefix+v['name'], self.jump_to, (view, loc))