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
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, {}))
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)
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)
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
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
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')
def completion_options(m={}): res, err = bcall('gocode_options', {}) res = gs.dval(res.get('options'), {}) return res, err
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')
def completion_options(m={}): res, err = bcall("gocode_options", {}) res = gs.dval(res.get("options"), {}) return res, err