Example #1
0
    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))
Example #2
0
	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))
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
	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)
Example #8
0
    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)
Example #9
0
 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)
Example #10
0
    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)
Example #11
0
	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)
Example #12
0
    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"})
Example #13
0
	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',
		})
Example #14
0
	def is_enabled(self):
		view = gs.active_valid_go_view(self.window)
		return view is not None
Example #15
0
 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())
Example #16
0
 def is_enabled(self):
     view = gs.active_valid_go_view(self.window)
     return view is not None
Example #17
0
 def is_enabled(self):
     return bool(gs.active_valid_go_view(self.window))
Example #18
0
	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())
Example #19
0
	def is_enabled(self):
		return bool(gs.active_valid_go_view(self.window))