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 f(region): if not region.a == region.b: return region point = region.a if shared.is_inside_string(view, point): (a, b) = shared.get_expression(view, point, direction) target_point = shared.step(b, -1, direction) if point == target_point: return shared.step(point, 1, direction) return shared.step(b, -1, direction) if direction == "backward": point -= 1 (word_a, word_b) = shared.get_word(view, point, direction) if shared.truthy(word_b): return word_b (next_a, next_b) = shared.get_next_expression(view, point, False, direction) if shared.truthy(next_b): return next_b expr_point = point if direction == "backward": expr_point += 1 (a, b) = shared.get_expression(view, expr_point, direction) if shared.truthy(b): return b if direction == "forward": return shared.step(point, 1, direction) else: return point
def strict_delete_selection(view, edit, region): replace_char = str(chr(1)) offset = region.begin() out = list(view.substr(region)) point = region.begin() while point < region.end(): if (shared.is_inside_comment(view, point) or shared.is_inside_string(view, point)): out[point - offset] = replace_char point += 1 continue (a, b) = shared.get_next_expression(view, point, True) if shared.truthy(a, b): if shared.is_inside_word(view.substr(a)): if a > region.end(): break a = max(a, region.begin()) b = min(b, region.end()) if b > region.end(): break if not a < region.begin(): a_local = a - offset b_local = b - offset out[a_local:b_local] = list(replace_char * (b - a)) point = b else: break out = "".join(out) out = out.replace(replace_char, "").strip() view.replace(edit, region, out) return region.begin()
def f(region): s = region.begin() e = region.end() if s == e: if shared.is_inside_string(view, s): view.insert(edit, s, "\\\"") return s + 2 else: view.insert(edit, s, "\"\"") return s + 1 else: view.insert(edit, s, "\"") view.insert(edit, e + 1, "\"") return sublime.Region(s + 1, e + 1)
def f(region): s = region.begin() e = region.end() if s == e: if view.substr(s) == "\"": return s + 1 elif shared.is_inside_string(view, s): view.insert(edit, s, "\\\"") return s + 2 else: view.insert(edit, s, "\"\"") return s + 1 else: view.insert(edit, s, "\"") view.insert(edit, e + 1, "\"") return sublime.Region(s + 1, e + 1)
def f(region): if not region.a == region.b: return region point = region.begin() if (shared.is_inside_string(view, point) or shared.is_inside_comment(view, point)): view.insert(edit, point, right_bracket) return point + 1 (lb, rb) = shared.find_enclosing_brackets( view, region.begin(), left_bracket, right_bracket) if rb: return paredit_close_remove_spaces(view, edit, rb) else: return region
def f(region): begin = region.begin() end = region.end() if shared.is_strict_mode(): text = view.substr(region) if not (shared.bracket_count(text, "(", ")") == 0 and shared.bracket_count(text, "[", "]") == 0 and shared.bracket_count(text, "{", "}") == 0): return region view.insert(edit, begin, left_bracket) if not (begin == end and (shared.is_inside_string(view, begin) or shared.is_inside_comment(view, begin))): view.insert(edit, end + 1, right_bracket) return begin + 1
def f(region): if not region.a == region.b: return region point = region.begin() if (shared.is_inside_string(view, point) or shared.is_inside_comment(view, point)): view.insert(edit, point, right_bracket) return point + 1 (lb, rb) = shared.find_enclosing_brackets(view, region.begin(), left_bracket, right_bracket) if shared.truthy(rb): return paredit_close_remove_spaces(view, edit, rb) elif shared.truthy(lb): view.insert(edit, point, right_bracket) return point + 1 else: return region