def jump_to_imports(self): view = gs.active_valid_go_view() if not view: return last_import = gs.attr('last_import_path.%s' % gs.view_fn(view), '') r = None if last_import: offset = len(last_import) + 2 last_import = re.escape(last_import) pat = '(?s)import.*?(?:"%s"|`%s`)' % (last_import, last_import) r = view.find(pat, 0) if not r: offset = 1 pat = '(?s)import.*?["`]' r = view.find(pat, 0) if not r: gs.notice(DOMAIN, "cannot find import declarations") return pt = r.end() - offset row, col = view.rowcol(pt) loc = Loc(view.file_name(), row, col) self.jump_to((view, loc))
def watch(): global file_refs global th view = gs.active_valid_go_view() if view is not None and (view.file_name() and gs.setting('comp_lint_enabled') is True): fn = view.file_name() fr = ref(fn) with sem: if fr: fr.view = view highlight(fr) sublime.set_timeout(watch, 500) return if gs.setting('gslint_enabled') is not True: if view: with sem: for fn in file_refs: fr = file_refs[fn] cleanup(fr.view) file_refs = {} sublime.set_timeout(watch, 2000) return if view and not view.is_loading(): fn = view.file_name() fr = ref(fn) with sem: if fr: # always use the active view (e.g in split-panes) fr.view = view highlight(fr) else: fr = FileRef(view) file_refs[fn] = fr if fr.state == 0: src = view.substr(sublime.Region(0, view.size())) if src != fr.src: fr.src = src fr.tm = time.time() if fr.tm > 0.0: timeout = int(gs.setting('gslint_timeout', 500)) delta = int((time.time() - fr.tm) * 1000.0) if delta >= timeout: fr.tm = 0.0 fr.state = -1 if not th: th = GsLintThread() th.start() th.putq(fn) sublime.set_timeout(watch, 500)
def cmd_share(view, edit, args, wd, rkey): av = gs.active_valid_go_view(win=view.window()) if av is None: push_output(view, rkey, 'not sharing non-go src') return def f(res, err): s = '%s\n%s' % (err, res.get('url', '')) push_output(view, rkey, s.strip()) mg9.share(gs.view_src(view.window().active_view()), f)
def present_current(self): pkg_dir = '' view = gs.active_valid_go_view(win=self.window, strict=False) if view: if view.file_name(): pkg_dir = os.path.dirname(view.file_name()) vfn = gs.view_fn(view) src = gs.view_src(view) else: vfn = '' src = '' self.present(vfn, src, pkg_dir)
def show_palette(self, palette, direct=False): view = gs.active_valid_go_view(self.window) if not view: return palette = palette.lower().strip() if palette == 'auto': palette = self.last_activate_palette elif palette == 'main': palette = '' pcb = None if palette: pcb = self.palettes.get(palette) if pcb: self.last_activate_palette = palette else: gs.notice(DOMAIN, 'Invalid palette `%s`' % palette) palette = '' if not direct and len(self.bookmarks) > 0: loc = self.bookmarks[-1] line = 'line %d' % (loc.row + 1) if view.file_name() == loc.fn: fn = '' else: fn = relpath(loc.fn, dirname(loc.fn)) if fn.startswith('..'): fn = loc.fn fn = '%s ' % fn self.add_item(u'\u2190 Go Back (%s%s)' % (fn, line), self.jump_back, None) if not direct and palette: self.add_item(u'@%s \u21B5' % palette.title(), self.show_palette, 'main') li1 = len(self.items) if pcb: pcb(view, direct) if not direct: for k in sorted(self.palettes.keys()): if k: if k != palette: ttl = '@' + k.title() if k == 'errors': fr = gslint.ref(view.file_name()) if not fr or len(fr.reports) == 0: continue ttl = '%s (%d)' % (ttl, len(fr.reports)) itm = ttl self.add_item(itm, self.show_palette, k)
def show_palette(self, palette, direct=False): view = gs.active_valid_go_view(self.window) if not view: return palette = palette.lower().strip() if palette == "auto": palette = self.last_activate_palette elif palette == "main": palette = "" pcb = None if palette: pcb = self.palettes.get(palette) if pcb: self.last_activate_palette = palette else: gs.notice(DOMAIN, "Invalid palette `%s`" % palette) palette = "" if not direct and len(self.bookmarks) > 0: loc = self.bookmarks[-1] line = "line %d" % (loc.row + 1) if view.file_name() == loc.fn: fn = "" else: fn = relpath(loc.fn, dirname(loc.fn)) if fn.startswith(".."): fn = loc.fn fn = "%s " % fn self.add_item(u"\u2190 Go Back (%s%s)" % (fn, line), self.jump_back, None) if not direct and palette: self.add_item(u"@%s \u21B5" % palette.title(), self.show_palette, "main") li1 = len(self.items) if pcb: pcb(view, direct) if not direct: for k in sorted(self.palettes.keys()): if k: if k != palette: ttl = "@" + k.title() if k == "errors": fr = gslint.ref(view.file_name()) if not fr or len(fr.reports) == 0: continue ttl = "%s (%d)" % (ttl, len(fr.reports)) itm = ttl self.add_item(itm, self.show_palette, k)
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: gs.error_traceback("GsNewGoFile") self.window.new_file().run_command("gs_create_new_go_file", {"pkg_name": pkg_name, "file_name": "main.go"})
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: gs.error_traceback('GsNewGoFile') self.window.new_file().run_command('gs_create_new_go_file', { 'pkg_name': pkg_name, 'file_name': 'main.go', })
def is_enabled(self): view = gs.active_valid_go_view(self.window) return view is not None
def present_current(self): vv = vu.V(gs.active_valid_go_view(win=self.window, strict=False)) self.present(vv.vfn(), vv.src(), vv.dir())
def is_enabled(self): return bool(gs.active_valid_go_view(self.window))