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
Exemple #2
0
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
Exemple #3
0
	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',
		})
Exemple #4
0
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)
Exemple #6
0
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
Exemple #7
0
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
Exemple #8
0
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')
Exemple #9
0
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')