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()))
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)
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)
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
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
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
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
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