예제 #1
0
    def run(self):
        while True:
            fn = self.popq()
            fr = ref(fn, False)
            if fr:
                reports = {}
                res, _ = mg9.bcall('lint', {'fn': fn, 'src': fr.src})
                res = gs.dval(res, {})
                for r in gs.dval(res.get('reports'), []):
                    row = r.get('row', 0)
                    col = r.get('col', 0)
                    msg = r.get('message', '')
                    if row >= 0 and msg:
                        reports[row] = Report(row, col, msg)

                fr = ref(fn, False)
                if fr:
                    with sem:
                        fr.state = 1
                        fr.reports = reports
                        file_refs[fn] = fr
예제 #2
0
파일: gslint.py 프로젝트: d3z/GoSublime
	def run(self):
		while True:
			fn = self.popq()
			fr = ref(fn, False)
			if fr:
				reports = {}
				res, _ = mg9.bcall('lint', {'fn': fn, 'src': fr.src})
				res = gs.dval(res, {})
				for r in gs.dval(res.get('reports'), []):
					row = r.get('row', 0)
					col = r.get('col', 0)
					msg = r.get('message', '')
					if row >= 0 and msg:
						reports[row] = Report(row, col, msg)

				fr = ref(fn, False)
				if fr:
					with sem:
						fr.state = 1
						fr.reports = reports
						file_refs[fn] = fr
예제 #3
0
def do_sync_active_view(view):
	fn = view.file_name()
	if fn:
		gs.set_attr('last_active_fn', fn)
		if fn.lower().endswith('.go'):
			gs.set_attr('last_active_go_fn', fn)

	if gs.is_pkg_view(view):
		m = {}
		psettings = view.settings().get('GoSublime')
		if psettings and gs.is_a(psettings, {}):
			m = gs.mirror_settings(psettings)
		gs.set_attr('last_active_project_settings', gs.dval(m, {}))
예제 #4
0
def do_sync_active_view(view):
	fn = view.file_name()
	if fn:
		gs.set_attr('last_active_fn', fn)
		if fn.lower().endswith('.go'):
			gs.set_attr('last_active_go_fn', fn)

	if gs.is_pkg_view(view):
		m = {}
		psettings = view.settings().get('GoSublime')
		if psettings and gs.is_a(psettings, {}):
			m = gs.mirror_settings(psettings)
		gs.set_attr('last_active_project_settings', gs.dval(m, {}))
예제 #5
0
    def on_query_completions(self, view, prefix, locations):
        pos = gs.sel(view).begin()
        if view.score_selector(pos, 'text.9o') == 0:
            return []

        cl = []

        hkey = '9o.hist.%s' % view.settings().get('9o.wd', '')
        for i, cmd in enumerate(reversed(gs.dval(gs.aso().get(hkey), []))):
            if not cmd in cl:
                cl.append(('^%d %s' % (i + 1, cmd), cmd + ' '))

        cl.extend(DEFAULT_CL)

        return (cl, AC_OPTS)
예제 #6
0
	def on_query_completions(self, view, prefix, locations):
		pos = gs.sel(view).begin()
		if view.score_selector(pos, 'text.9o') == 0:
			return []

		cl = []

		hkey = '9o.hist.%s' % view.settings().get('9o.wd', '')
		for i, cmd in enumerate(reversed(gs.dval(gs.aso().get(hkey), []))):
			if not cmd in cl:
				cl.append(('^%d %s' % (i+1, cmd), cmd+' '))

		cl.extend(DEFAULT_CL)

		return (cl, AC_OPTS)
예제 #7
0
파일: mg9.py 프로젝트: timicx/GoSublime
def complete(fn, src, pos):
	home = gs.home_path()
	builtins = (gs.setting('autocomplete_builtins') is True or gs.setting('complete_builtins') is True)
	res, err = bcall('gocode_complete', {
		'Dir': gs.basedir_or_cwd(fn),
		'Builtins': builtins,
		'Fn':  fn or '',
		'Src': src or '',
		'Pos': pos or 0,
		'Home': home,
		'Env': gs.env({
			'XDG_CONFIG_HOME': home,
		}),
	})

	res = gs.dval(res.get('completions'), [])
	return res, err
예제 #8
0
def complete(fn, src, pos):
	home = gs.home_path()
	builtins = (gs.setting('autocomplete_builtins') is True or gs.setting('complete_builtins') is True)
	res, err = bcall('gocode_complete', {
		'Dir': gs.basedir_or_cwd(fn),
		'Builtins': builtins,
		'Fn':  fn or '',
		'Src': src or '',
		'Pos': pos or 0,
		'Home': home,
		'Env': gs.env({
			'XDG_CONFIG_HOME': home,
		}),
	})

	res = gs.dval(res.get('completions'), [])
	return res, err
예제 #9
0
def complete(fn, src, pos):
    home = gs.home_path()
    builtins = gs.setting("autocomplete_builtins") is True or gs.setting("complete_builtins") is True
    res, err = bcall(
        "gocode_complete",
        {
            "Dir": gs.basedir_or_cwd(fn),
            "Builtins": builtins,
            "Fn": fn or "",
            "Src": src or "",
            "Pos": pos or 0,
            "Home": home,
            "Env": gs.env({"XDG_CONFIG_HOME": home}),
        },
    )

    res = gs.dval(res.get("completions"), [])
    return res, err
예제 #10
0
    def run(self, edit, save_hist=False):
        view = self.view
        pos = gs.sel(view).begin()
        line = view.line(pos)
        wd = view.settings().get('9o.wd')

        ln = view.substr(line).split('#', 1)
        if len(ln) == 2:
            cmd = ln[1].strip()
            if cmd:
                vs = view.settings()
                aso = gs.aso()
                hkey = '9o.hist.%s' % 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

            view.replace(edit, line, (u'[ `%s` %s ]' % (cmd, HOURGLASS)))
            rkey = '9o.exec.%s' % uuid.uuid4()
            view.add_regions(rkey, [sublime.Region(line.begin(), view.size())],
                             '')
            view.run_command('gs9o_init')

            cli = cmd.split(' ', 1)

            # todo: move this into margo
            if cli[0] == 'sh':

                def on_done(c):
                    out = gs.ustr('\n'.join(c.consume_outq()))
                    sublime.set_timeout(lambda: push_output(view, rkey, out),
                                        0)

                c = gsshell.Command(cmd=cli[1], shell=True, cwd=wd)
                c.on_done = on_done
                c.start()
                return

            f = globals().get('cmd_%s' % cli[0])
            if f:
                args = shlex.split(gs.astr(cli[1])) if len(cli) == 2 else []
                f(view, edit, args, wd, rkey)
            else:
                push_output(view, rkey, 'Invalid command %s' % cli)
        else:
            view.insert(edit, gs.sel(view).begin(), '\n')
예제 #11
0
파일: mg9.py 프로젝트: timicx/GoSublime
def completion_options(m={}):
	res, err = bcall('gocode_options', {})
	res = gs.dval(res.get('options'), {})
	return res, err
예제 #12
0
	def run(self, edit):
		view = self.view
		pos = gs.sel(view).begin()
		line = view.line(pos)
		wd = view.settings().get('9o.wd')

		ln = view.substr(line).split('#', 1)
		if len(ln) == 2:
			cmd = ln[1].strip()
			if cmd:
				vs = view.settings()
				aso = gs.aso()
				hkey = '9o.hist.%s' % wd
				hist = gs.dval(aso.get(hkey), [])

				m = HIST_EXPAND_PAT.match(cmd)
				if m:
					pfx = m.group(1)
					idx = int(m.group(2))-1
					cmd = hist[-idx] if idx < len(hist) else ''
					if pfx == '^' or not cmd:
						view.replace(edit, line, ('%s# %s' % (ln[0], cmd)))
						return
				else:
					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

			view.replace(edit, line, (u'[ `%s` %s ]' % (cmd, HOURGLASS)))
			rkey = '9o.exec.%s' % uuid.uuid4()
			view.add_regions(rkey, [sublime.Region(line.begin(), view.size())], '')
			view.run_command('gs9o_init')

			cli = cmd.split(' ', 1)

			# todo: move this into margo
			if cli[0] == 'sh':
				def on_done(c):
					out = gs.ustr('\n'.join(c.consume_outq()))
					sublime.set_timeout(lambda: push_output(view, rkey, out), 0)

				c = gsshell.Command(cmd=cli[1], shell=True, cwd=wd)
				c.on_done = on_done
				c.start()
				return

			f = globals().get('cmd_%s' % cli[0])
			if f:
				args = shlex.split(gs.astr(cli[1])) if len(cli) == 2 else []
				f(view, edit, args, wd, rkey)
			else:
				push_output(view, rkey, 'Invalid command %s' % cli)
		else:
			view.insert(edit, gs.sel(view).begin(), '\n')
예제 #13
0
def completion_options(m={}):
    res, err = bcall('gocode_options', {})
    res = gs.dval(res.get('options'), {})
    return res, err
예제 #14
0
def completion_options(m={}):
    res, err = bcall("gocode_options", {})
    res = gs.dval(res.get("options"), {})
    return res, err