예제 #1
0
파일: gspalette.py 프로젝트: d3z/GoSublime
	def toggle_import(self, a):
		global last_import_path

		view, decl = a
		im, err = margo.imports(
			view.file_name(),
			view.substr(sublime.Region(0, view.size())),
			[decl]
		)
		if err:
			gs.notice(DOMAIN, err)
		else:
			src = im.get('src', '')
			line_ref = im.get('line_ref', 0)
			r = view.full_line(view.text_point(max(0, line_ref-1), 0))
			if not src or line_ref < 1 or not r:
				return

			dirty, err = gspatch.merge(view, r.end(), src)
			if err:
				gs.notice_undo(DOMAIN, err, view, dirty)
			elif dirty:
				if decl.get('add'):
					last_import_path[view.file_name()] = decl.get('path')
				else:
					last_import_path[view.file_name()] = ''
예제 #2
0
	def toggle_import(self, a):
		global last_import_path

		view, decl = a
		im, err = margo.imports(
			view.file_name(),
			view.substr(sublime.Region(0, view.size())),
			False,
			[decl]
		)
		if err:
			gs.notice(DOMAIN, err)
		else:
			src = im.get('src', '')
			size_ref = im.get('size_ref', 0)
			if src and size_ref > 0:
				dirty, err = gspatch.merge(view, size_ref, src)
				if err:
					gs.notice_undo(DOMAIN, err, view, dirty)
				elif dirty:
					if decl.get('add'):
						last_import_path[view.file_name()] = decl.get('path')
					else:
						last_import_path[view.file_name()] = ''
					gs.notice(DOMAIN, 'imports updated...')
예제 #3
0
    def toggle_import(self, a):
        global last_import_path

        view, decl = a
        im, err = margo.imports(view.file_name(),
                                view.substr(sublime.Region(0, view.size())),
                                [decl])
        if err:
            gs.notice(DOMAIN, err)
        else:
            src = im.get('src', '')
            line_ref = im.get('line_ref', 0)
            r = view.full_line(view.text_point(max(0, line_ref - 1), 0))
            if not src or line_ref < 1 or not r:
                return

            dirty, err = gspatch.merge(view, r.end(), src)
            if err:
                gs.notice_undo(DOMAIN, err, view, dirty)
            elif dirty:
                if decl.get('add'):
                    last_import_path[view.file_name()] = decl.get('path')
                else:
                    last_import_path[view.file_name()] = ''
                gs.notice(DOMAIN, 'imports updated...')
예제 #4
0
	def palette_imports(self, view, direct=False):
		indent = '' if direct else '    '
		im, err = margo.imports(
			view.file_name(),
			view.substr(sublime.Region(0, view.size())),
			True,
			[]
		)
		if err:
			gs.notice(DOMAIN, err)

		delete_imports = []
		add_imports = []
		imports = im.get('file_imports', [])
		for path in im.get('import_paths', []):
			skipAdd = False
			for i in imports:
				if i.get('path') == path:
					skipAdd = True
					name = i.get('name', '')
					if not name:
						name = basename(path)
					if name == path:
						delete_imports.append(('%sdelete: %s' % (indent, name), i))
					else:
						delete_imports.append(('%sdelete: %s ( %s )' % (indent, name, path), i))

			if not skipAdd:
				add_imports.append(('%s%s' % (indent, path), {'path': path, 'add': True}))
		for i in sorted(delete_imports):
			self.add_item(i[0], self.toggle_import, (view, i[1]))
		self.add_item(' --- ', self.show_palette, 'imports')
		for i in sorted(add_imports):
			self.add_item(i[0], self.toggle_import, (view, i[1]))