diff options
-rw-r--r-- | src/if_py_both.h | 3 | ||||
-rw-r--r-- | src/if_python3.c | 10 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 13 insertions, 2 deletions
diff --git a/src/if_py_both.h b/src/if_py_both.h index 53c2167e1..aa2591267 100644 --- a/src/if_py_both.h +++ b/src/if_py_both.h @@ -1479,6 +1479,9 @@ static struct PyMethodDef BufferMethods[] = { {"append", BufferAppend, 1, "Append data to Vim buffer" }, {"mark", BufferMark, 1, "Return (row,col) representing position of named mark" }, {"range", BufferRange, 1, "Return a range object which represents the part of the given buffer between line numbers s and e" }, +#if PY_VERSION_HEX >= 0x03000000 + {"__dir__", BufferDir, 4, "List its attributes" }, +#endif { NULL, NULL, 0, NULL } }; diff --git a/src/if_python3.c b/src/if_python3.c index 18d5b7779..ac6f1666c 100644 --- a/src/if_python3.c +++ b/src/if_python3.c @@ -468,6 +468,7 @@ get_py3_exceptions() static PyObject *BufferNew (buf_T *); static PyObject *WindowNew(win_T *); static PyObject *LineToString(const char *); +static PyObject *BufferDir(PyObject *, PyObject *); static PyTypeObject RangeType; @@ -961,13 +962,18 @@ BufferGetattro(PyObject *self, PyObject*nameobj) return Py_BuildValue("s", this->buf->b_ffname); else if (strcmp(name, "number") == 0) return Py_BuildValue("n", this->buf->b_fnum); - else if (strcmp(name,"__members__") == 0) - return Py_BuildValue("[ss]", "name", "number"); else return PyObject_GenericGetAttr(self, nameobj); } static PyObject * +BufferDir(PyObject *self UNUSED, PyObject *args UNUSED) +{ + return Py_BuildValue("[sssss]", "name", "number", + "append", "mark", "range"); +} + + static PyObject * BufferRepr(PyObject *self) { static char repr[100]; diff --git a/src/version.c b/src/version.c index b7b6ae84d..545e42f18 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 422, +/**/ 421, /**/ 420, |