Exemple #1
0
 def grab(self, buffer):
     with buffer.cursor_wander():
         la, ca = buffer.cursor
         for _ in range(self.how_many):
             move.down(buffer) if self.forward else move.up(buffer)
         lb, cb = buffer.cursor
         return la, ca, lb, cb
Exemple #2
0
 def grab(self, buffer):
     with buffer.cursor_wander():
         la, ca = buffer.cursor
         for _ in range(self.how_many):
             move.down(buffer) if self.forward else move.up(buffer)
         lb, cb = buffer.cursor
         return la, ca, lb, cb
Exemple #3
0
def run_tests():
    try:
        w = windows.focused
        w.blank()


        def check_at(s, a, forwards=True):
            check_items(vx.get_linecoloffset_of_str(w, s, int(forwards)), a)

        w.add_string(
'''
Tests are being run
''')
        move.beg()

        w.add_string('öäå')
        move.beg()

        check_at('ä', (1, 2, 1))
        check_at('ä', (1, 2, 1))
        check_at('öäå', (1, 1, 0))
        check_at('öäå\n', (1, 1, 0))

        move.down()

        check_at('ö', (1, 1, 4), False)

        move.eol()

        check_at('ö', (1, 1, 23), False)
        check_at('ä', (1, 2, 22), False)

        vx.set_linecol_window(w, 1, 2)

        check_at('ä', (1, 2, 0))
        check_at('å', (1, 3, 1))
        check_at('öäå', (1, 1, 1), False)
        check_at('öäå\n', (1, 1, 1), False)
        check_at('å\n', (1, 3, 1))

        for t in _tests:
            t()

        move.end()
        w.add_string('''
All tests have passed
''')
    except AssertionError as e:
        move.end()
        w.add_string('\n\n')
        w.add_string(traceback.format_exc())
Exemple #4
0
 def cut_to_eol(self):
     (la, ca) = self.for_window.cursor
     with self.for_window.cursor_wander():
         move.eol()
         (lb, cb) = self.for_window.cursor
         if la == la and ca == cb:
             move.down()
             (lb, cb) = self.for_window.cursor
     text_between = vx.get_str_linecol_to_linecol_window(self.for_window, la, ca, lb, cb)
     self.for_window.copystack.push(text_between)
     self.for_window.remove_text(la, ca, lb, cb)
     self.for_window.dirty = True
     self.for_window.undo_tree.add(undo.removal(text_between, la, ca, (la, ca, lb, cb), True))
     self.for_window.cursor = (la, ca)
Exemple #5
0
def run_tests():
    try:
        w = windows.focused
        w.blank()

        def check_at(s, a, forwards=True):
            check_items(vx.get_linecoloffset_of_str(w, s, int(forwards)), a)

        w.add_string('''
Tests are being run
''')
        move.beg()

        w.add_string('öäå')
        move.beg()

        check_at('ä', (1, 2, 1))
        check_at('ä', (1, 2, 1))
        check_at('öäå', (1, 1, 0))
        check_at('öäå\n', (1, 1, 0))

        move.down()

        check_at('ö', (1, 1, 4), False)

        move.eol()

        check_at('ö', (1, 1, 23), False)
        check_at('ä', (1, 2, 22), False)

        vx.set_linecol_window(w, 1, 2)

        check_at('ä', (1, 2, 0))
        check_at('å', (1, 3, 1))
        check_at('öäå', (1, 1, 1), False)
        check_at('öäå\n', (1, 1, 1), False)
        check_at('å\n', (1, 3, 1))

        for t in _tests:
            t()

        move.end()
        w.add_string('''
All tests have passed
''')
    except AssertionError as e:
        move.end()
        w.add_string('\n\n')
        w.add_string(traceback.format_exc())
Exemple #6
0
 def backspace(self, track=True):
     if track:
         self.dirty = True
         l, c = self.cursor
         lb, cb = l, c
         if l > 1 or c > 1:
             c = c - 1
             if c == 0:
                 l -= 1
                 move.up()
                 move.eol()
                 _, c = self.cursor
                 move.down()
                 move.bol()
             ch = vx.get_ch_linecol_window(self, l, c)
             if ch == '\t':
                 c -= 7
             self.undo_tree.add(removal(ch, l, c, hold=False, box=(l, c, lb, cb)))
     super(buffer, self).backspace()
Exemple #7
0
 def backspace(self, track=True):
     if track:
         self.dirty = True
         l, c = self.cursor
         lb, cb = l, c
         if l > 1 or c > 1:
             c = c - 1
             if c == 0:
                 l -= 1
                 move.up()
                 move.eol()
                 _, c = self.cursor
                 move.down()
                 move.bol()
             ch = vx.get_ch_linecol_window(self, l, c)
             if ch == '\t':
                 c -= 7
             self.undo_tree.add(
                 removal(ch, l, c, hold=False, box=(l, c, lb, cb)))
     super().backspace()