Ejemplo n.º 1
0
 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')
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
    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), '')
Ejemplo n.º 4
0
	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), '')
Ejemplo n.º 5
0
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), '')
Ejemplo n.º 6
0
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), '')
Ejemplo n.º 7
0
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),
                     '')
Ejemplo n.º 8
0
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),
                     '')
Ejemplo n.º 9
0
def dispatch(f, msg=''):
    gsq.dispatch(DOMAIN, f, msg)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
	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)
Ejemplo n.º 12
0
def dispatch(f, msg):
    gsq.dispatch(DOMAIN, f, msg)
Ejemplo n.º 13
0
	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')