Ronny Pfannschmidt avatar Ronny Pfannschmidt committed 4ca235d

set cursor

Comments (0)

Files changed (2)

tests/test_buffer.py

 
 
 
+def test_buffer_cursor(buffer):
+    assert buffer.cursor == (0, 0)
+    buffer.text = "test with fun\nmore of it"
+    # cursor moves on insertion
+    assert buffer.cursor == (1, 10)
+
+    buffer.cursor = (1, 2)
+    assert buffer.cursor == (1, 2)
+
         self.bufnr = engine.add(self)
 
     @property
+    def cursor(self):
+        offset = self.text_buffer.get_property('cursor-position')
+        offset_iter = self.text_buffer.get_iter_at_offset(offset)
+        return offset_iter.get_line(), offset_iter.get_line_offset()
+
+    @cursor.setter
+    def cursor(self, where):
+        """
+
+        :param where: tuple of (line, offset) or a fit text iterator
+        """
+        if isinstance(where, tuple):
+            iter = self.text_buffer.get_iter_at_line_offset(*where)
+        else:
+            iter = where
+        self.text_buffer.move_mark_by_name('insert', iter)
+
+
+    @property
     def text(self):
         return self.text_buffer.get_text(
                 self._start_iter(),
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.