Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    def testComputeAddressCorrectly(self):
        values = (
            ('100', 99),
            ('200', 199),
        )

        for v, expected in values:
            self.assertEquals(compute_address(g_test_view, v), expected)
Exemplo n.º 4
0
    def testComputeAddressCorrectly(self):
        values = (
            ('100', 99),
            ('200', 199),
        )

        for v, expected in values:
            self.assertEquals(compute_address(g_test_view, v), expected)
Exemplo n.º 5
0
    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))
Exemplo n.º 6
0
    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))
Exemplo n.º 7
0
 def testOutOfBoundsAddressShouldReturnNone(self):
     self.assertEquals(compute_address(g_test_view, '1000'), None)
Exemplo n.º 8
0
 def testOutOfBoundsAddressShouldReturnNone(self):
     self.assertEquals(compute_address(g_test_view, '1000'), None)