summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/if_py_both.h3
-rw-r--r--src/if_python3.c10
-rw-r--r--src/version.c2
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,