def run(self, dir=''): if not dir: view = self.window.active_view() dir = gs.basedir_or_cwd( view.file_name() if view is not None else None) gsq.dispatch('*', lambda: show_pkgfiles(dir), 'scanning directory for package files')
def run_go_get(view): msg = 'Installing/updating gocode and MarGo...' def f(): out, err, _ = gs.runcmd(['go', 'get', '-u', '-v', GOCODE_REPO, MARGO_REPO]) margo.bye_ni() call_cmd(['gocode', 'close']) gs.notice(DOMAIN, '%s done\n%s%s' % (msg, out, err)) gsq.dispatch(hello, 'Starting MarGo and gocode...', view) gsq.dispatch(f, msg, view)
def run(self, edit): if gs.setting('comp_lint_enabled') is not True: return fn = self.view.file_name() fn = os.path.abspath(fn) if fn: dirname = gs.basedir_or_cwd(fn) file_refs[fn] = FileRef(self.view) gsq.dispatch(CL_DOMAIN, lambda: do_comp_lint(dirname, fn), '')
def run_lint(view): node_bin, fecs_bin, is_valid = is_valid_settings() if not is_valid: return fn = view.file_name() if not fn.lower().endswith('.js'): return fn = os.path.abspath(fn) if fn: file_refs[fn] = FileRef(view, fn) gsq.dispatch(CL_DOMAIN, lambda: do_comp_lint(fn, node_bin, fecs_bin), '')
def run_format(view): node_bin, fecs_bin, is_valid = is_valid_settings() if not is_valid: return fn = view.file_name() if not fn.lower().endswith('.js'): return fn = os.path.abspath(fn) if fn: file_refs[fn] = FileRef(view, fn) content = view.substr(sublime.Region(0, view.size())) gsq.dispatch(CL_DOMAIN_FORMAT, lambda: do_comp_format(fn, content, node_bin, fecs_bin), '')
def dispatch(f, msg=''): gsq.dispatch(DOMAIN, f, msg)
def check_depends(view): global dep_check_done if dep_check_done: return if not view or not view.window(): sublime.set_timeout(lambda: check_depends(view), 1000) return if not gs.is_go_source_view(view): return dep_check_done = True e = gs.env() if not (e.get('GOROOT') and e.get('GOPATH')): gs.notice(DOMAIN, "GOPATH and/or GOROOT appear to be unset") if not call_cmd(['go', '--help']): gs.notice(DOMAIN, 'The `go` command cannot be found') return missing = [] cmds = [ ['gocode', '--help'], ['MarGo', '--help'], ] for cmd in cmds: if not call_cmd(cmd): missing.append(cmd[0]) if missing: def cb(i): if i == 0: run_go_get(view) items = [[ 'GoSublime depends on gocode and MarGo', 'Install %s (using `go get`)' % ', '.join(missing), 'gocode repo: %s' % GOCODE_REPO, 'MarGo repo: %s' % MARGO_REPO, ]] view.window().show_quick_panel(items, cb) return changelog_fn = os.path.join(sublime.packages_path(), 'GoSublime', "CHANGELOG.md") try: with open(changelog_fn) as f: s = f.read() except IOError: gs.notice(DOMAIN, traceback.format_exc()) return changes = split_changes(s) if changes: win = sublime.active_window() if win: settings_fn = 'GoSublime-GsDepends.sublime-settings' settings = sublime.load_settings(settings_fn) new_rev = changes[-1][0] old_rev = settings.get('tracking_rev', '') def on_panel_close(i): if i == 1 or i == 2: view = win.open_file(changelog_fn) if i == 1: run_go_get(view) settings.set('tracking_rev', new_rev) sublime.save_settings(settings_fn) if new_rev > old_rev: items = [ [ " ", "GoSublime updated to %s" % new_rev, " ", ], [ "Install/Update dependencies: Gocode, MarGo", "go get -u %s" % GOCODE_REPO, "go get -u %s" % MARGO_REPO, ], [ "View changelog", "Packages/GoSublime/CHANGELOG.md" " ", ] ] win.show_quick_panel(items, on_panel_close) return gsq.dispatch(hello)
def f(): out, err, _ = gs.runcmd(['go', 'get', '-u', '-v', GOCODE_REPO, MARGO_REPO]) margo.bye_ni() call_cmd(['gocode', 'close']) gs.notice(DOMAIN, '%s done\n%s%s' % (msg, out, err)) gsq.dispatch(hello, 'Starting MarGo and gocode...', view)
def dispatch(f, msg): gsq.dispatch(DOMAIN, f, msg)
def run(self, dir=''): if not dir: view = self.window.active_view() dir = gs.basedir_or_cwd(view.file_name() if view is not None else None) gsq.dispatch('*', lambda: show_pkgfiles(dir), 'scanning directory for package files')