Ejemplo n.º 1
0
    def f(region):
        if not region.a == region.b:
            return shared.erase_region(view, edit, region)

        point = region.a

        (lb, rb) = shared.get_expression(view, point)
        if shared.truthy(lb, rb):
            region = sublime.Region(lb, rb)
            if shared.is_expression_empty(view.substr(region)):
                shared.erase_region(view, edit, region)
                return lb
            elif expression:
                view.erase(edit, sublime.Region(lb + 1, rb - 1))
                return lb + 1
            else:
                view.erase(edit, sublime.Region(point, rb - 1))
                return point
        else:
            line_region = view.line(point)
            a = line_region.begin()
            if not expression:
                a = point
            return shared.erase_region(view, edit,
                                       sublime.Region(a, line_region.end()))
Ejemplo n.º 2
0
    def f(region):
        if not region.begin() == region.end():
            if shared.is_strict_mode():
                return strict_delete_selection(view, edit, region)
            else:
                return shared.erase_region(view, edit, region)

        point = region.begin()

        if is_forward:
            direction = 1
            next_char = view.substr(point)
            skip_char_type = "lbracket"
        else:
            direction = -1
            next_char = view.substr(point - 1)
            skip_char_type = "rbracket"

        next_char_type = shared.char_type(next_char)

        if shared.is_inside_comment(view, point):
            pass  # pass to else below
        elif next_char_type == "string":
            if shared.is_inside_string(view, point):
                if ((not is_forward) and (point - 2 >= 0)
                        and view.substr(point - 2) == "\\"):
                    return shared.erase_region(
                        view, edit, sublime.Region(point, point - 2))
                else:
                    return remove_empty_expression(view, edit, point,
                                                   direction)
            else:
                return region.begin() + direction
        elif shared.is_inside_string(view, point):
            # Same purpose as is_inside_comment above
            # but has to be tested after the elif above.
            if (is_forward and (point + 2 < view.size()) and view.substr(
                    sublime.Region(point, point + 2)) == "\\\""):
                return shared.erase_region(view, edit,
                                           sublime.Region(point, point + 2))
            else:
                pass
        elif next_char_type == skip_char_type:
            return region.begin() + direction
        elif next_char_type:
            return remove_empty_expression(view, edit, point, direction)

        # else
        return standard_delete(view, edit, point, is_forward)
Ejemplo n.º 3
0
	def f(region):
		if not region.begin() == region.end():
			if shared.is_strict_mode():
				return strict_delete_selection(view, edit, region)
			else:
				return shared.erase_region(view, edit, region)

		point = region.begin()

		if is_forward:
			direction = 1
			next_char = view.substr(point)
			skip_char_type = "lbracket"
		else:
			direction = -1
			next_char = view.substr(point - 1)
			skip_char_type = "rbracket"

		next_char_type = shared.char_type(next_char)

		if shared.is_inside_comment(view, point):
			pass # pass to else below
		elif next_char_type == "string":
			if shared.is_inside_string(view, point):
				if ((not is_forward) and
				    (point - 2 >= 0) and
				    view.substr(point - 2) == "\\"):
					return shared.erase_region(view, edit, sublime.Region(point, point - 2))
				else:
					return remove_empty_expression(view, edit, point, direction)
			else:
				return region.begin() + direction
		elif shared.is_inside_string(view, point):
			# Same purpose as is_inside_comment above
			# but has to be tested after the elif above.
			if (is_forward and
			    (point + 2 < view.size()) and
			    view.substr(sublime.Region(point, point + 2)) == "\\\""):
				return shared.erase_region(
					view, edit, sublime.Region(point, point + 2))
			else:
				pass
		elif next_char_type == skip_char_type: return region.begin() + direction
		elif next_char_type:
			return remove_empty_expression(view, edit, point, direction)

		# else
		return standard_delete(view, edit, point, is_forward)
Ejemplo n.º 4
0
def remove_empty_expression(view, edit, point, fail_direction):
	(lb, rb) = shared.get_expression(view, point)
	if lb and rb:
		expr_region = sublime.Region(lb, rb)
		expression = view.substr(expr_region)
		if shared.is_expression_empty(expression):
			return shared.erase_region(view, edit, expr_region)
		else:
			return sublime.Region(point + fail_direction, point + fail_direction)
	else:
		return point
Ejemplo n.º 5
0
def remove_empty_expression(view, edit, point, fail_direction):
    (lb, rb) = shared.get_expression(view, point)

    if shared.truthy(lb, rb):
        expr_region = sublime.Region(lb, rb)
        expression = view.substr(expr_region)
        if shared.is_expression_empty(expression):
            return shared.erase_region(view, edit, expr_region)
        else:
            return sublime.Region(point + fail_direction,
                                  point + fail_direction)
    else:
        return point
Ejemplo n.º 6
0
	def f(region):
		if not region.a == region.b:
			return region
		point = region.a

		if is_forward:
			(lw, rw) = shared.get_next_word(view, point)
		else:
			(lw, rw) = shared.get_previous_word(view, point)

		if lw and rw:
			return shared.erase_region(view, edit, sublime.Region(lw, rw))

		return region
Ejemplo n.º 7
0
    def f(region):
        if not region.a == region.b:
            return region
        point = region.a

        if is_forward:
            (lw, rw) = shared.get_next_word(view, point)
        else:
            (lw, rw) = shared.get_previous_word(view, point)

        if shared.truthy(lw, rw):
            return shared.erase_region(view, edit, sublime.Region(lw, rw))

        return region
Ejemplo n.º 8
0
	def f(region):
		if not region.a == region.b:
			return shared.erase_region(view, edit, region)

		point = region.a

		(lb, rb) = shared.get_expression(view, point)
		if shared.truthy(lb, rb):
			region = sublime.Region(lb, rb)
			if shared.is_expression_empty(view.substr(region)):
				shared.erase_region(view, edit, region)
				return lb
			elif expression:
				view.erase(edit, sublime.Region(lb + 1, rb - 1))
				return lb + 1
			else:
				view.erase(edit, sublime.Region(point, rb - 1))
				return point
		else:
			line_region = view.line(point)
			a = line_region.begin()
			if not expression:
				a = point
			return shared.erase_region(view, edit, sublime.Region(a, line_region.end()))
Ejemplo n.º 9
0
	def f(region):
		if not region.a == region.b:
			return shared.erase_region(view, edit, region)

		point = region.a

		(lb, rb) = shared.get_expression(view, point)
		if lb and rb:
			if expression:
				view.erase(edit, sublime.Region(lb + 1, rb - 1))
				return lb + 1
			else:
				view.erase(edit, sublime.Region(point, rb - 1))
				return point
		else:
			return point