def snippet_match(ctx, m): try: for k,p in m.get('match', {}).items(): q = ctx.get(k, '') if p and gs.is_a_string(p): if not re.search(p, str(q)): return False elif p != q: return False except: ui.trace(DOMAIN) return True
def snippet_match(ctx, m): try: for k, p in m.get('match', {}).items(): q = ctx.get(k, '') if p and gs.is_a_string(p): if not re.search(p, str(q)): return False elif p != q: return False except: ui.trace(DOMAIN) return True
def run(self): pkg_name = 'main' view = gs.active_valid_go_view() try: basedir = gs.basedir_or_cwd(view and view.file_name()) for fn in os.listdir(basedir): if fn.endswith('.go'): name, _ = mg9.pkg_name(os.path.join(basedir, fn), '') if name: pkg_name = name break except Exception: ui.trace('GsNewGoFile') self.window.new_file().run_command('gs_create_new_go_file', { 'pkg_name': pkg_name, 'file_name': 'main.go', })
def resolve_snippets(ctx): cl = set() types = [''] if ctx.get('local') else ctx.get('types') vars = {} for k, v in ctx.items(): if gs.is_a_string(v): vars[k] = v try: snips = [] snips.extend(cfg.default_snippets) snips.extend(cfg.snippets) for m in snips: try: if snippet_match(ctx, m): for ent in m.get('snippets', []): text = ent.get('text', '') title = ent.get('title', '') value = ent.get('value', '') if text and value: for typename in types: vars['typename'] = typename if typename: if len(typename ) > 1 and typename[0].islower( ) and typename[1].isupper(): vars['typename_abbr'] = typename[ 1].lower() else: vars['typename_abbr'] = typename[ 0].lower() else: vars['typename_abbr'] = '' txt, ttl, val = expand_snippet_vars( vars, text, title, value) s = u'%s\t%s \u0282' % (txt, ttl) cl.add((s, val)) except: ui.trace(DOMAIN) except: ui.trace(DOMAIN) return list(cl)
def resolve_snippets(ctx): cl = set() types = [''] if ctx.get('local') else ctx.get('types') vars = {} for k,v in ctx.items(): if gs.is_a_string(v): vars[k] = v try: snips = [] snips.extend(cfg.default_snippets) snips.extend(cfg.snippets) for m in snips: try: if snippet_match(ctx, m): for ent in m.get('snippets', []): text = ent.get('text', '') title = ent.get('title', '') value = ent.get('value', '') if text and value: for typename in types: vars['typename'] = typename if typename: if len(typename) > 1 and typename[0].islower() and typename[1].isupper(): vars['typename_abbr'] = typename[1].lower() else: vars['typename_abbr'] = typename[0].lower() else: vars['typename_abbr'] = '' txt, ttl, val = expand_snippet_vars(vars, text, title, value) s = u'%s\t%s \u0282' % (txt, ttl) cl.add((s, val)) except: ui.trace(DOMAIN) except: ui.trace(DOMAIN) return list(cl)
def act_on_path(view, path): vv = vu.open(fn=path, win=view.window()) if vv.has_view(): return True if URL_PATH_PAT.match(path): if path.lower().startswith('gs.packages://'): vv = vu.open(fn=os.path.join(gs.packages_dir(), path[14:]), win=view.window()) return vv.has_view() try: if not URL_SCHEME_PAT.match(path): path = 'http://%s' % path ui.note(DOMAIN, 'open url: %s' % path) webbrowser.open_new_tab(path) return True except Exception: ui.trace(DOMAIN) return False ui.note(DOMAIN, "Invalid path `%s'" % path) return False
def _exec(view, edit, save_hist=False): pos = gs.sel(view).begin() line = view.line(pos) wd = view.settings().get('9o.wd') try: os.chdir(wd) except Exception: ui.trace(DOMAIN) ln = view.substr(line).split('#', 1) if len(ln) == 2: cmd = ln[1].strip() if cmd: vs = view.settings() aso = gs.aso() hkey = _hkey(wd) hist = gs.dval(aso.get(hkey), []) m = HIST_EXPAND_PAT.match(cmd) if m: pfx = m.group(1) hl = len(hist) idx = hl - int(m.group(2)) cmd = '' if idx >= 0 and idx < hl: cmd = hist[idx] if pfx == '^' or not cmd: view.replace(edit, line, ('%s# %s' % (ln[0], cmd))) return elif save_hist: try: hist.remove(cmd) except ValueError: pass hist.append(cmd) aso.set(hkey, hist) gs.save_aso() if not cmd: view.run_command('gs9o_init') return line = view.full_line(pos) ctx = '9o.exec.%s' % gs.uid() view.replace(edit, line, ('[`%s`]\n' % cmd)) view.run_command('gs9o_init') ep = view.full_line(line.begin()).end() view.add_regions(ctx, [sublime.Region(ep, ep)], '') hellip = u'[ \u22EF ]' ep += 1 view.insert(edit, ep, hellip+'\n\n') view.add_regions(ctx+'.done', [sublime.Region(ep, ep+len(hellip))], '') cli = cmd.split(' ', 1) if cli[0] == 'sh': a = cli[1].strip() if len(cli) == 2 else '' mk_cmd(view, wd, ctx, sh.cmd(a)).start() return nv = sh.env() a = [_exparg(s, nv) for s in shlex.split(gs.astr(cmd))] f = builtins().get(a[0]) if f: f(view, edit, a[1:], wd, ctx) else: mk_cmd(view, wd, ctx, a).start() else: view.insert(edit, gs.sel(view).begin(), '\n')
def _exec(view, edit, save_hist=False): pos = gs.sel(view).begin() line = view.line(pos) wd = view.settings().get('9o.wd') try: os.chdir(wd) except Exception: ui.trace(DOMAIN) ln = view.substr(line).split('#', 1) if len(ln) == 2: cmd = ln[1].strip() if cmd: vs = view.settings() aso = gs.aso() hkey = _hkey(wd) hist = gs.dval(aso.get(hkey), []) m = HIST_EXPAND_PAT.match(cmd) if m: pfx = m.group(1) hl = len(hist) idx = hl - int(m.group(2)) cmd = '' if idx >= 0 and idx < hl: cmd = hist[idx] if pfx == '^' or not cmd: view.replace(edit, line, ('%s# %s' % (ln[0], cmd))) return elif save_hist: try: hist.remove(cmd) except ValueError: pass hist.append(cmd) aso.set(hkey, hist) gs.save_aso() if not cmd: view.run_command('gs9o_init') return line = view.full_line(pos) ctx = '9o.exec.%s' % gs.uid() view.replace(edit, line, ('[`%s`]\n' % cmd)) view.run_command('gs9o_init') ep = view.full_line(line.begin()).end() view.add_regions(ctx, [sublime.Region(ep, ep)], '') hellip = u'[ \u22EF ]' ep += 1 view.insert(edit, ep, hellip + '\n\n') view.add_regions(ctx + '.done', [sublime.Region(ep, ep + len(hellip))], '') cli = cmd.split(' ', 1) if cli[0] == 'sh': a = cli[1].strip() if len(cli) == 2 else '' mk_cmd(view, wd, ctx, sh.cmd(a)).start() return nv = sh.env() a = [_exparg(s, nv) for s in shlex.split(gs.astr(cmd))] f = builtins().get(a[0]) if f: f(view, edit, a[1:], wd, ctx) else: mk_cmd(view, wd, ctx, a).start() else: view.insert(edit, gs.sel(view).begin(), '\n')