def run(self, edit, range='.', forced=False, address=''): address = compute_address(self.view, address) if address is None: # FIXME: Should be Invalid Address instead. ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) offset = 0 for r in reversed( get_region_by_range(self.view, range, split_visual=True)): if self.view.rowcol(r.begin())[0] + 1 < address: offset += 1 self.view.erase(edit, self.view.full_line(r)) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address - offset, 0)).end() + 1 else: dest = 0 if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def run(self, edit, range=".", forced=False, address=""): address = compute_address(self.view, address) if address is None: # FIXME: Should be Invalid Address instead. ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) offset = 0 for r in reversed(get_region_by_range(self.view, range, split_visual=True)): if self.view.rowcol(r.begin())[0] + 1 < address: offset += 1 self.view.erase(edit, self.view.full_line(r)) text = "".join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address - offset, 0)).end() + 1 else: dest = 0 if dest > self.view.size(): dest = self.view.size() text = "\n" + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def testComputeAddressCorrectly(self): values = ( ('100', 99), ('200', 199), ) for v, expected in values: self.assertEquals(compute_address(g_test_view, v), expected)
def run(self, edit, range=".", forced=False, address=""): address = compute_address(self.view, address) if address is None: ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) text = "".join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address, 0)).end() + 1 else: dest = address if dest > self.view.size(): dest = self.view.size() text = "\n" + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def run(self, edit, range='.', forced=False, address=''): address = compute_address(self.view, address) if address is None: ex_error.display_error(ex_error.ERR_INVALID_ADDRESS) return line_block = [] for r in get_region_by_range(self.view, range): ss = ensure_line_block(self.view, r) line_block.append(ss) text = ''.join(line_block) if address != 0: dest = self.view.line(self.view.text_point(address, 0)).end() + 1 else: dest = address if dest > self.view.size(): dest = self.view.size() text = '\n' + text[:-1] self.view.insert(edit, dest, text) self.view.sel().clear() cursor_dest = self.view.line(dest + len(text) - 1).begin() self.view.sel().add(sublime.Region(cursor_dest, cursor_dest))
def testOutOfBoundsAddressShouldReturnNone(self): self.assertEquals(compute_address(g_test_view, '1000'), None)