def run(self): default_file_name = "untitled.go" 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") view = self.window.new_file() view.set_name(default_file_name) view.set_syntax_file("Packages/GoSublime/GoSublime.tmLanguage") edit = view.begin_edit() try: view.replace(edit, sublime.Region(0, view.size()), "package %s\n" % pkg_name) view.sel().clear() view.sel().add(view.find(pkg_name, 0, sublime.LITERAL)) finally: view.end_edit(edit)
def run(self): default_file_name = 'untitled.go' 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, _ = margo.package(os.path.join(basedir, fn), '') if name and name.get('Name'): pkg_name = name.get('Name') break except Exception: pass view = self.window.new_file() view.set_name(default_file_name) view.set_syntax_file('Packages/Go/Go.tmLanguage') edit = view.begin_edit() try: view.replace(edit, sublime.Region(0, view.size()), 'package %s\n' % pkg_name) view.sel().clear() view.sel().add(view.find(pkg_name, 0, sublime.LITERAL)) finally: view.end_edit(edit)
def on_change(self, s): if self.panel: size = self.view.size() if s.endswith("\t"): basedir = gs.basedir_or_cwd(self.view.file_name()) lc = "go " hist = self.settings.get("cmd_hist") if gs.is_a(hist, {}): hist = hist.get(basedir) if hist and gs.is_a(hist, []): lc = hist[-1] s = s.strip() if s and s not in ("", "go"): l = [] for i in self.subcommands: if i.startswith(s): l.append(i) if len(l) == 1: s = "%s " % l[0] elif lc: s = "%s " % lc edit = self.panel.begin_edit() try: self.panel.replace(edit, sublime.Region(0, self.panel.size()), s) finally: self.panel.end_edit(edit)
def run(self): default_file_name = 'untitled.go' 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, _ = margo.package(os.path.join(basedir, fn), '') if name and name.get('Name'): pkg_name = name.get('Name') break except Exception: pass view = self.window.new_file() view.set_name(default_file_name) view.set_syntax_file('Packages/Go/Go.tmLanguage') edit = view.begin_edit() try: view.replace(edit, sublime.Region(0, view.size()), 'package %s\n' % pkg_name) view.sel().clear() view.sel().add(view.find(pkg_name, 0, sublime.LITERAL)) finally: view.end_edit(edit)
def on_change(self, s): if self.panel: size = self.view.size() if s.endswith('\t'): basedir = gs.basedir_or_cwd(self.view.file_name()) lc = 'go ' hist = self.settings.get('cmd_hist') if gs.is_a(hist, {}): hist = hist.get(basedir) if hist and gs.is_a(hist, []): lc = hist[-1] s = s.strip() if s and s not in ('', 'go'): l = [] for i in self.subcommands: if i.startswith(s): l.append(i) if len(l) == 1: s = '%s ' % l[0] elif lc: s = '%s ' % lc edit = self.panel.begin_edit() try: self.panel.replace(edit, sublime.Region(0, self.panel.size()), s) finally: self.panel.end_edit(edit)
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 on_change(self, s): if self.panel: size = self.view.size() if s.endswith('\t'): basedir = gs.basedir_or_cwd(self.view.file_name()) lc = 'go ' hist = self.settings.get('cmd_hist') if isinstance(hist, dict): hist = hist.get(basedir) if hist and isinstance(hist, list): lc = hist[-1] s = s.strip() if s and s not in ('', 'go'): l = [] for i in self.subcommands: if i.startswith(s): l.append(i) if len(l) == 1: s = '%s ' % l[0] elif lc: s = '%s ' % lc edit = self.panel.begin_edit() try: self.panel.replace(edit, sublime.Region(0, self.panel.size()), s) finally: self.panel.end_edit(edit)
def cmd_9(view, edit, args, wd, rkey): if len(args) == 0 or args[0] not in ('play', 'build'): push_output(view, rkey, ('9: invalid args %s' % args)) return subcmd = args[0] cid, cb = _9_begin_call(subcmd, view, edit, args, wd, rkey) a = { 'cid': cid, 'env': gs.env(), 'dir': wd, 'args': args[1:], 'build_only': (subcmd == 'build'), } win = view.window() if win is not None: av = win.active_view() if av is not None: fn = av.file_name() if fn: basedir = gs.basedir_or_cwd(fn) for v in win.views(): try: fn = v.file_name() if fn and v.is_dirty() and fn.endswith('.go') and os.path.dirname(fn) == basedir: v.run_command('gs_fmt_save') except Exception: gs.println(gs.traceback()) else: if gs.is_go_source_view(av, False): a['src'] = av.substr(sublime.Region(0, av.size())) mg9.acall('play', a, cb)
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(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 __init__(self, cmd=[], shell=False, env={}, cwd=None, view=None): self.view = view super(ViewCommand, self).__init__(cmd=cmd, shell=shell, env=env, cwd=cwd) self.output_done = [] if not self.cwd and view is not None: try: self.cwd = gs.basedir_or_cwd(view.file_name()) except Exception: self.cwd = None
def __init__(self, cmd=[], shell=False, env={}, cwd=None, view=None): self.view = view super(ViewCommand, self).__init__(cmd=cmd, shell=shell, env=env, cwd=cwd) self.output_done = [] self.show_summary = False if not self.cwd and view is not None: try: self.cwd = gs.basedir_or_cwd(view.file_name()) except Exception: self.cwd = None
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 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 cmd_9(view, edit, args, wd, rkey): if len(args) == 0 or args[0] not in ('run', 'replay', 'build'): push_output(view, rkey, ('9: invalid args %s' % args)) return subcmd = args[0] cid = '' if subcmd == 'replay': cid = '9replay-%s' % wd cid, cb = _9_begin_call(subcmd, view, edit, args, wd, rkey, cid) a = { 'cid': cid, 'env': gs.env(), 'dir': wd, 'args': args[1:], 'build_only': (subcmd == 'build'), } win = view.window() if win is not None: av = win.active_view() if av is not None: fn = av.file_name() if fn: basedir = gs.basedir_or_cwd(fn) for v in win.views(): try: fn = v.file_name() if fn and v.is_dirty() and fn.endswith( '.go') and os.path.dirname(fn) == basedir: v.run_command('gs_fmt_save') except Exception: gs.println(gs.traceback()) else: if gs.is_go_source_view(av, False): a['src'] = av.substr(sublime.Region(0, av.size())) mg9.acall('play', a, cb)
def cb(s): file_name = self.view.file_name() or '' s = GO_PLAY_PAT.sub(r'\1go run\2', s) s = s.strip() if s and self.change_history: hist = self.settings.get('cmd_hist') if not isinstance(hist, dict): hist = {} basedir = gs.basedir_or_cwd(file_name) hist[basedir] = [s] # todo: store a list of historical commands self.settings.set('cmd_hist', hist) sublime.save_settings('GoSublime-GsShell.sublime-settings') if GO_SHARE_PAT.match(s): s = '' host = "play.golang.org" warning = 'Are you sure you want to share this file. It will be public on %s' % host if not sublime.ok_cancel_dialog(warning): return try: c = httplib.HTTPConnection(host) src = self.view.substr(sublime.Region(0, self.view.size())) c.request('POST', '/share', src, {'User-Agent': 'GoSublime'}) s = 'http://%s/p/%s' % (host, c.getresponse().read()) except Exception as ex: s = 'Error: %s' % ex self.show_output(s) return if GO_RUN_PAT.match(s): if not file_name: # todo: clean this up after the command runs f, err = gs.temp_file(suffix='.go', prefix=DOMAIN+'-play.', delete=False) if err: self.show_output(err) return else: try: src = self.view.substr(sublime.Region(0, self.view.size())) if isinstance(src, unicode): src = src.encode('utf-8') f.write(src) f.close() except Exception as ex: self.show_output('Error: %s' % ex) return file_name = f.name s = 'go run "%s"' % file_name else: gpat = ' *.go' if gpat in s: fns = [] for fn in os.listdir(os.path.dirname(self.view.file_name())): if fn.endswith('.go') and fn[0] not in ('.', '_') and not fn.endswith('_test.go'): fns.append('"%s"' % fn) fns = ' '.join(fns) if fns: s = s.replace(gpat, ' '+fns) self.view.window().run_command("exec", { 'kill': True }) self.view.window().run_command("exec", { 'shell': True, 'env': gs.env(), 'cmd': [s], 'file_regex': '^(.+\.go):([0-9]+):(?:([0-9]+):)?\s*(.*)', })
def cb(s): file_name = self.view.file_name() or "" s = GO_PLAY_PAT.sub(r"\1go run\2", s) s = s.strip() if s and s.lower() != "go" and self.change_history: hist = self.settings.get("cmd_hist") if not gs.is_a(hist, {}): hist = {} basedir = gs.basedir_or_cwd(file_name) hist[basedir] = [s] # todo: store a list of historical commands hst = {} for k in hist: # :| hst[gs.ustr(k)] = gs.ustr(hist[k]) self.settings.set("cmd_hist", hst) sublime.save_settings("GoSublime-GsShell.sublime-settings") if GO_SHARE_PAT.match(s): s = "" host = "play.golang.org" warning = "Are you sure you want to share this file. It will be public on %s" % host if not sublime.ok_cancel_dialog(warning): return try: c = httplib.HTTPConnection(host) src = gs.astr(self.view.substr(sublime.Region(0, self.view.size()))) c.request("POST", "/share", src, {"User-Agent": "GoSublime"}) s = "http://%s/p/%s" % (host, c.getresponse().read()) except Exception as ex: s = "Error: %s" % ex self.show_output(s, focus=True) return if GO_RUN_PAT.match(s): if not file_name: # todo: clean this up after the command runs err = "" tdir, _ = gs.temp_dir("play") file_name = hashlib.sha1(gs.view_fn(self.view) or "a").hexdigest() file_name = os.path.join(tdir, ("%s.go" % file_name)) try: with open(file_name, "w") as f: src = gs.astr(self.view.substr(sublime.Region(0, self.view.size()))) f.write(src) except Exception as ex: err = str(ex) if err: self.show_output("Error: %s" % err) return s = ["go", "run", file_name] self.view.window().run_command("exec", {"kill": True}) if gs.is_a(s, []): use_shell = False else: use_shell = True s = [s] gs.println("running %s" % " ".join(s)) self.view.window().run_command( "exec", { "shell": use_shell, "env": gs.env(), "cmd": s, "file_regex": "^(.+\.go):([0-9]+):(?:([0-9]+):)?\s*(.*)", }, )
def cb(i, win): if i >= 0: dirname = gs.basedir_or_cwd(m[ents[i]]) win.run_command("gs_browse_files", {"dir": dirname})
def cb(s): file_name = self.view.file_name() or '' s = GO_PLAY_PAT.sub(r'\1go run\2', s) s = s.strip() if s and s.lower() != "go" and self.change_history: hist = self.settings.get('cmd_hist') if not gs.is_a(hist, {}): hist = {} basedir = gs.basedir_or_cwd(file_name) hist[basedir] = [s] # todo: store a list of historical commands hst = {} for k in hist: # :| hst[gs.ustr(k)] = gs.ustr(hist[k]) self.settings.set('cmd_hist', hst) sublime.save_settings('GoSublime-GsShell.sublime-settings') if GO_SHARE_PAT.match(s): s = '' host = "play.golang.org" warning = 'Are you sure you want to share this file. It will be public on %s' % host if not sublime.ok_cancel_dialog(warning): return try: c = httplib.HTTPConnection(host) src = gs.astr(self.view.substr(sublime.Region(0, self.view.size()))) c.request('POST', '/share', src, {'User-Agent': 'GoSublime'}) s = 'http://%s/p/%s' % (host, c.getresponse().read()) except Exception as ex: s = 'Error: %s' % ex self.show_output(s, focus=True) return if GO_RUN_PAT.match(s): if not file_name: # todo: clean this up after the command runs err = '' tdir, _ = gs.temp_dir('play') file_name = hashlib.sha1(gs.view_fn(self.view) or 'a').hexdigest() file_name = os.path.join(tdir, ('%s.go' % file_name)) try: with open(file_name, 'w') as f: src = gs.astr(self.view.substr(sublime.Region(0, self.view.size()))) f.write(src) except Exception as ex: err = str(ex) if err: self.show_output('Error: %s' % err) return s = ['go', 'run', file_name] self.view.window().run_command("exec", { 'kill': True }) if gs.is_a(s, []): use_shell = False else: use_shell = True s = [s] gs.println('running %s' % ' '.join(s)) self.view.window().run_command("exec", { 'shell': use_shell, 'env': gs.env(), 'cmd': s, 'file_regex': '^(.+\.go):([0-9]+):(?:([0-9]+):)?\s*(.*)', })
def cb(s): file_name = self.view.file_name() or '' s = GO_PLAY_PAT.sub(r'\1go run\2', s) s = s.strip() if s and s.lower() != "go" and self.change_history: hist = self.settings.get('cmd_hist') if not gs.is_a(hist, {}): hist = {} basedir = gs.basedir_or_cwd(file_name) hist[basedir] = [s ] # todo: store a list of historical commands hst = {} for k in hist: # :| hst[gs.ustr(k)] = gs.ustr(hist[k]) self.settings.set('cmd_hist', hst) sublime.save_settings('GoSublime-GsShell.sublime-settings') if GO_SHARE_PAT.match(s): s = '' host = "play.golang.org" warning = 'Are you sure you want to share this file. It will be public on %s' % host if not sublime.ok_cancel_dialog(warning): return try: c = httplib.HTTPConnection(host) src = gs.astr( self.view.substr(sublime.Region(0, self.view.size()))) c.request('POST', '/share', src, {'User-Agent': 'GoSublime'}) s = 'http://%s/p/%s' % (host, c.getresponse().read()) except Exception as ex: s = 'Error: %s' % ex self.show_output(s, focus=True) return if GO_RUN_PAT.match(s): if not file_name: # todo: clean this up after the command runs err = '' tdir, _ = gs.temp_dir('play') file_name = hashlib.sha1(gs.view_fn(self.view) or 'a').hexdigest() file_name = os.path.join(tdir, ('%s.go' % file_name)) try: with open(file_name, 'w') as f: src = gs.astr( self.view.substr( sublime.Region(0, self.view.size()))) f.write(src) except Exception as ex: err = str(ex) if err: self.show_output('Error: %s' % err) return s = ['go', 'run', file_name] self.view.window().run_command("exec", {'kill': True}) if gs.is_a(s, []): use_shell = False else: use_shell = True s = [s] gs.println('running %s' % ' '.join(s)) self.view.window().run_command( "exec", { 'shell': use_shell, 'env': gs.env(), 'cmd': s, 'file_regex': '^(.+\.go):([0-9]+):(?:([0-9]+):)?\s*(.*)', })
def active_wd(win=None): _, v = gs.win_view(win=win) return gs.basedir_or_cwd(v.file_name() if v else '')
def cb(i, win): if i >= 0: dirname = gs.basedir_or_cwd(m[ents[i]]) win.run_command('gs_browse_files', {'dir': dirname})
def active_wd(win=None): _, v = gs.win_view(win=win) return gs.basedir_or_cwd(v.file_name() if v else '')
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')