def run(self): while True: fn = self.popq() fr = ref(fn, False) if fr: reports = {} res, _ = mg9.bcall('lint', { 'dir': (os.path.dirname(fn) if fn else ''), 'fn': fn, 'src': fr.src, 'filter': gs.setting('lint_filter', []), }) res = gs.dval(res, {}) for r in gs.dval(res.get('reports'), []): if fn and fn != '<stdin>' and r.get('Fn') != fn: continue kind = r.get('Kind', '') row = r.get('Row', 0) col = r.get('Col', 0) msg = r.get('Message', '') msg = '%s: %s' % (kind, msg) 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 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 run(self): while True: fn = self.popq() fr = ref(fn, False) if fr: reports = {} res, _ = mg9.bcall('lint', {'fn': fn, 'src': fr.src, 'filter': gs.setting('lint_filter', [])}) 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 f2(cl, err): c = {} if len(cl) == 1: c = cl[0] if set_status: intel, _ = mg9.bcall('intel', { 'Fn': fn, 'Src': src, 'Pos': pos, }) s = '' if c: pfx = 'func(' typ = c['type'] if typ.startswith(pfx): s = 'func %s(%s' % (c['name'], typ[len(pfx):]) else: s = '%s: %s' % (c['name'], typ) func = intel.get('Func') if func: s = u'%s \u00B7 %s > %s' % (s, intel.get('Pkg'), func) if s: view.set_status(HINT_KEY, s) else: view.erase_status(HINT_KEY) else: if c: s = '%s %s\n%s' % (c['name'], c['class'], c['type']) else: s = '// %s' % (err or 'No calltips found') gs.show_output(HINT_KEY, s, print_output=False, syntax_file='GsDoc')
def on_query_completions(self, view, prefix, locations): pos = locations[0] scopes = view.scope_name(pos).split() self.not_in_scope = ('source.go' not in scopes) or (gs.setting('gscomplete_enabled', False) is not True) if self.not_in_scope: return [] if view.score_selector(pos, 'comment.build-constraint.go') > 0: return (BUILD_CL, AC_OPTS) if not scope_ok(view, pos): return ([], AC_OPTS) try: if basename(view.file_name()) == "main.go": default_pkgname = 'main' else: default_pkgname = basename(dirname(view.file_name())) except Exception: default_pkgname = '' if not REASONABLE_PKGNAME_PAT.match(default_pkgname): default_pkgname = '' offset = pos - len(prefix) vv = vu.V(view) src = vv.src() if not src: return ([], AC_OPTS) intel, _ = mg9.bcall('intel', { 'Fn': vv.vfn(), 'Src': src, 'Pos': pos, }) pkgname = intel.get('Pkg') if not default_pkgname: default_pkgname = pkgname if pkgname else 'main' types = intel.get('Types') or [] ctx = { 'global': intel.get('Global'), 'local': not intel.get('Global'), 'pkgname': pkgname, 'types': types or [''], 'has_types': len(types) > 0, 'default_pkgname': default_pkgname, 'fn': vv.fn(), } if not pkgname: return (resolve_snippets(ctx), AC_OPTS) if cfg.autocomplete_snippets else ([], AC_OPTS) iface_name = view.substr(view.line(sublime.Region(pos -1 , pos)))[:-1] if iface_name.rfind('.') != -1: iface_name = iface_name[iface_name.rfind('.') + 1:] if iface_name != GoSublime.current_interface['name']: GoSublime.current_interface = {'name': iface_name, 'funcs': []} nc = view.substr(sublime.Region(pos, pos+1)) cl = self.complete(vv.fn() or '<stdin>', offset, src, nc.isalpha() or nc == "(") pc = view.substr(sublime.Region(pos-1, pos)) if cfg.autocomplete_snippets and (pc.isspace() or pc.isalpha()): if scopes[-1] == 'source.go': cl.extend(resolve_snippets(ctx)) elif scopes[-1] == 'meta.block.go' and ('meta.function.plain.go' in scopes or 'meta.function.receiver.go' in scopes): cl.extend(resolve_snippets(ctx)) return (cl, AC_OPTS)
def on_query_completions(self, view, prefix, locations): pos = locations[0] scopes = view.scope_name(pos).split() if ('source.go' not in scopes) or (gs.setting('gscomplete_enabled', False) is not True): return [] if view.score_selector(pos, 'comment.build-constraint.go') > 0: return (BUILD_CL, AC_OPTS) if not scope_ok(view, pos): return ([], AC_OPTS) try: if basename(view.file_name()) == "main.go": default_pkgname = 'main' else: default_pkgname = basename(dirname(view.file_name())) except Exception: default_pkgname = '' if not REASONABLE_PKGNAME_PAT.match(default_pkgname): default_pkgname = '' offset = pos - len(prefix) vv = vu.V(view) src = vv.src() if not src: return ([], AC_OPTS) intel, _ = mg9.bcall('intel', { 'Fn': vv.vfn(), 'Src': src, 'Pos': pos, }) pkgname = intel.get('Pkg') if not default_pkgname: default_pkgname = pkgname if pkgname else 'main' types = intel.get('Types') or [] ctx = { 'global': intel.get('Global'), 'local': not intel.get('Global'), 'pkgname': pkgname, 'types': types or [''], 'has_types': len(types) > 0, 'default_pkgname': default_pkgname, 'fn': vv.fn(), } if not pkgname: return (resolve_snippets(ctx), AC_OPTS) if cfg.autocomplete_snippets else ([], AC_OPTS) nc = view.substr(sublime.Region(pos, pos + 1)) cl = self.complete(vv.fn() or '<stdin>', offset, src, nc.isalpha() or nc == "(") pc = view.substr(sublime.Region(pos - 1, pos)) if cfg.autocomplete_snippets and (pc.isspace() or pc.isalpha()): if scopes[-1] == 'source.go': cl.extend(resolve_snippets(ctx)) elif scopes[-1] == 'meta.block.go' and ( 'meta.function.plain.go' in scopes or 'meta.function.receiver.go' in scopes): cl.extend(resolve_snippets(ctx)) return (cl, AC_OPTS)