Пример #1
0
					output = (dirs + files) or '\n'
			elif sign == '-':
				# dunno here
				pass
			elif tree:
				op = 'xiki'
				cmd = ['xiki']
				cmd += tree.split(' ')

			if cmd:
				if persist:
					insert(view, edit, sel, '', indent + INDENTATION)
					spawn(view, edit, indent, cmd, sel)
				else:
					output = communicate(cmd, None, 3, return_error=True)

				if oldcwd:
					os.chdir(oldcwd)

			if output:
				if sign == '+':
					replace_line(view, edit, pos, indent + '- ' + tag)

				insert(view, edit, sel, output, indent + INDENTATION)

			if cont:
				region = find_region(view, pos, indent + INDENTATION)
				end = view.line(region.end()).begin()

				added = ''
Пример #2
0
				# dunno here
				pass
			elif tree:
				if which('ruby'):
					cmd = ['ruby', which('xiki')]
				else:
					cmd = ['xiki']

				cmd += tree.split(' ')

			if cmd:
				if persist:
					insert(view, edit, sel, '', indent + INDENTATION)
					spawn(view, edit, indent, cmd, sel)
				else:
					output = communicate(cmd, None, 3, return_error=True)

				if oldcwd:
					os.chdir(oldcwd)

			if output:
				if sign == '+':
					replace_line(view, edit, pos, indent + '- ' + tag)

				insert(view, edit, sel, output, indent + INDENTATION)

			view.sel().add(sel)
			view.end_edit(edit)

def find_tree(view, row):
	regex = re.compile(r'^(\s*)(\$\$|[-+$]\s*)?(.*)$')
Пример #3
0
def xiki(view):
	settings = view.settings()

	output = None
	cmd = None
	oldcwd = None
	if settings.get('xiki'):
		indent, sign, path, tag, tree = find_tree(view)
		print 'xiki', sign, path, tree

		pos = get_pos(view)
		if get_line(view, 1).startswith(indent + INDENTATION):
			if sign == '-':
				replace_line(view, pos, indent + '+ ' + tag)

			edit = view.begin_edit()
			cleanup(view, edit, pos, indent + INDENTATION)
			select(view, pos)
			view.end_edit(edit)
			return
		elif sign == '$':
			if path:
				oldcwd = os.getcwd()

				# maybe this should be offloaded into find_tree
				# so path will be multiple directories instead of just a base dir
				path_re = r'^(.+)/%s$' % re.escape(tag)
				match = re.match(path_re, tree)
				if match:
					os.chdir(os.path.join(path, match.group(1)))
				else:
					os.chdir(path)

			cmd = shlex.split(tag.encode('ascii', 'replace'), True)
		elif path:
			# directory listing or file open
			target = os.path.join(path, tree)
			if os.path.isfile(target):
				sublime.active_window().open_file(target)
				return
			elif os.path.isdir(target):
				dirs = ''
				files = ''
				for entry in os.listdir(target):
					absolute = os.path.join(target, entry)
					if os.path.isdir(absolute):
						dirs += '+ %s/\n' % entry
					else:
						files += '%s\n' % entry

				output = (dirs + files) or '\n'
		elif sign == '-':
			# dunno here
			return
		elif tree:
			if which('ruby'):
				cmd = ['ruby', which('xiki')]
			else:
				cmd = ['xiki']

			cmd += tree.split(' ')

		if cmd:
			output = communicate(cmd, None, 3, return_error=True)
			if oldcwd:
				os.chdir(oldcwd)

		if output:
			if sign == '+':
				replace_line(view, pos, indent + '- ' + tag)

			insert(view, output, indent + INDENTATION)