def run(self, _, mode=''): view = self.view if (not gs.is_go_source_view(view)) or (mode not in ['goto', 'hint']): return pt = gs.sel(view).begin() src = view.substr(sublime.Region(0, view.size())) pt = len(src[:pt].encode("utf-8")) def f(docs, err): doc = '' if err: self.show_output('// Error: %s' % err) elif docs: if mode == "goto": fn = '' flags = 0 if len(docs) > 0: d = docs[0] fn = d.get('fn', '') row = d.get('row', 0) col = d.get('col', 0) if fn: gs.println('opening %s:%s:%s' % (fn, row, col)) vu.open(fn=fn, row=row, col=col) return self.show_output("%s: cannot find definition" % DOMAIN) elif mode == "hint": s = [] for d in docs: name = d.get('name', '') if name: kind = d.get('kind', '') pkg = d.get('pkg', '') if pkg: name = '%s.%s' % (pkg, name) src = d.get('src', '') if src: src = '\n//\n%s' % src doc = '// %s %s%s' % (name, kind, src) s.append(doc) doc = '\n\n\n'.join(s).strip() self.show_output(doc or "// %s: no docs found" % DOMAIN) mg9.doc(view.file_name(), src, pt, f)
def run(self, _, mode=''): view = self.view if (not gs.is_go_source_view(view)) or (mode not in ['goto', 'hint']): return pt = gs.sel(view).begin() src = view.substr(sublime.Region(0, view.size())) pt = len(src[:pt].encode("utf-8")) def f(docs, err): doc = '' if err: self.show_output('// Error: %s' % err) elif docs: if mode == "goto": fn = '' flags = 0 if len(docs) > 0: d = docs[0] fn = d.get('fn', '') row = d.get('row', 0) col = d.get('col', 0) if fn: gs.println('opening %s:%s:%s' % (fn, row, col)) gs.focus(fn, row, col) return self.show_output("%s: cannot find definition" % DOMAIN) elif mode == "hint": s = [] for d in docs: name = d.get('name', '') if name: kind = d.get('kind', '') pkg = d.get('pkg', '') if pkg: name = '%s.%s' % (pkg, name) src = d.get('src', '') if src: src = '\n//\n%s' % src doc = '// %s %s%s' % (name, kind, src) s.append(doc) doc = '\n\n\n'.join(s).strip() self.show_output(doc or "// %s: no docs found" % DOMAIN) mg9.doc(view.file_name(), src, pt, f)
def run(self, _, mode=''): view = self.view if (not gs.is_go_source_view(view)) or (mode not in ['goto', 'hint', 'usage']): return pt = gs.sel(view).begin() src = view.substr(sublime.Region(0, view.size())) pt = len(src[:pt].encode("utf-8")) def f(docs, err): doc = '' if err: self.show_output('// Error: %s' % err) elif docs: if mode == "goto" or mode == "usage": fn = '' flags = 0 #method to open doc def open(d): fn = d.get('fn', '') row = d.get('row', 0) col = d.get('col', 0) if fn: gs.println('opening %s:%s:%s' % (fn, row, col)) gs.focus(fn, row, col) return self.show_output("%s: cannot find definition" % DOMAIN) if len(docs) > 1: def callback(idx): open(docs[idx]) def highlight(idx): d = docs[idx] fn = d.get('fn', '') row = d.get('row', 0) + 1 col = d.get('col', 0) + 1 sublime.active_window().open_file('%s:%s:%s' % (fn, row or 0, col or 0), sublime.TRANSIENT | sublime.ENCODED_POSITION) #list of usages lines = [] for d in docs: lines.append(d.get('fn', '') + ':' + str(d.get('row', 0) + 1) + ':' + str(d.get('col', 0) + 1)) sublime.active_window().show_quick_panel(lines, callback, on_highlight=highlight) return elif len(docs) == 1: open(docs[0]) return elif mode == "hint": s = [] for d in docs: name = d.get('name', '') if name: kind = d.get('kind', '') pkg = d.get('pkg', '') if pkg: name = '%s.%s' % (pkg, name) src = d.get('src', '') if src: src = '\n//\n%s' % src doc = '// %s %s%s' % (name, kind, src) s.append(doc) doc = '\n\n\n'.join(s).strip() self.show_output(doc or "// %s: no docs found" % DOMAIN) mg9.doc(view.file_name(), src, pt, f, mode)