LineBuf.set_continued
This commit is contained in:
parent
7687e75de4
commit
20b5534c71
@ -114,6 +114,26 @@ set_attribute(LineBuf *self, PyObject *args) {
|
|||||||
Py_RETURN_NONE;
|
Py_RETURN_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static PyObject*
|
||||||
|
set_continued(LineBuf *self, PyObject *args) {
|
||||||
|
#define set_continued_doc "set_continued(y, val) -> Set the continued values for the specified line."
|
||||||
|
unsigned int y;
|
||||||
|
int val;
|
||||||
|
if (!PyArg_ParseTuple(args, "Ip", &y, &val)) return NULL;
|
||||||
|
if (y >= self->ynum) { PyErr_SetString(PyExc_ValueError, "Out of bounds."); return NULL; }
|
||||||
|
self->continued_map[y] = val & 1;
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PyObject*
|
||||||
|
is_continued(LineBuf *self, PyObject *val) {
|
||||||
|
#define is_continued_doc "is_continued(y) -> Whether the line y is continued or not"
|
||||||
|
unsigned long y = PyLong_AsUnsignedLong(val);
|
||||||
|
if (y >= self->ynum) { PyErr_SetString(PyExc_ValueError, "Out of bounds."); return NULL; }
|
||||||
|
if (self->continued_map[y]) { Py_RETURN_TRUE; }
|
||||||
|
Py_RETURN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Boilerplate {{{
|
// Boilerplate {{{
|
||||||
static PyObject*
|
static PyObject*
|
||||||
@ -125,6 +145,8 @@ static PyMethodDef methods[] = {
|
|||||||
METHOD(copy_old, METH_O)
|
METHOD(copy_old, METH_O)
|
||||||
METHOD(clear, METH_NOARGS)
|
METHOD(clear, METH_NOARGS)
|
||||||
METHOD(set_attribute, METH_VARARGS)
|
METHOD(set_attribute, METH_VARARGS)
|
||||||
|
METHOD(set_continued, METH_VARARGS)
|
||||||
|
METHOD(is_continued, METH_O)
|
||||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -357,7 +357,7 @@ class Screen:
|
|||||||
if mo.DECAWM in self.mode:
|
if mo.DECAWM in self.mode:
|
||||||
self.carriage_return()
|
self.carriage_return()
|
||||||
self.linefeed()
|
self.linefeed()
|
||||||
self.linebuf[self.cursor.y].continued = True
|
self.linebuf.set_continued(self.cursor.y, True)
|
||||||
space_left_in_line = self.columns
|
space_left_in_line = self.columns
|
||||||
else:
|
else:
|
||||||
space_left_in_line = 1
|
space_left_in_line = 1
|
||||||
@ -365,7 +365,7 @@ class Screen:
|
|||||||
pos = len(data) - 1
|
pos = len(data) - 1
|
||||||
self.cursor.x = self.columns - 1
|
self.cursor.x = self.columns - 1
|
||||||
write_sz = min(len_left, space_left_in_line)
|
write_sz = min(len_left, space_left_in_line)
|
||||||
line = self.linebuf[self.cursor.y]
|
line = self.linebuf.line(self.cursor.y)
|
||||||
if do_insert:
|
if do_insert:
|
||||||
line.right_shift(self.cursor.x, write_sz)
|
line.right_shift(self.cursor.x, write_sz)
|
||||||
line.set_text(data, pos, write_sz, self.cursor)
|
line.set_text(data, pos, write_sz, self.cursor)
|
||||||
|
|||||||
@ -25,6 +25,10 @@ class TestDataTypes(BaseTest):
|
|||||||
c = old.line(y).cursor_from(x)
|
c = old.line(y).cursor_from(x)
|
||||||
self.assertFalse(c.reverse)
|
self.assertFalse(c.reverse)
|
||||||
self.assertTrue(c.bold)
|
self.assertTrue(c.bold)
|
||||||
|
self.assertFalse(old.is_continued(0))
|
||||||
|
old.set_continued(0, True)
|
||||||
|
self.assertTrue(old.is_continued(0))
|
||||||
|
self.assertFalse(old.is_continued(1))
|
||||||
|
|
||||||
def test_line(self):
|
def test_line(self):
|
||||||
lb = LineBuf(2, 3)
|
lb = LineBuf(2, 3)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user