summaryrefslogtreecommitdiffstats
path: root/src/if_python3.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2013-05-21 19:11:01 +0200
committerBram Moolenaar <Bram@vim.org>2013-05-21 19:11:01 +0200
commit1dc28783fa3f5946238b4c8020aea460db80269b (patch)
treec3243d73c10b228f11915f20951046bfc9d4dda4 /src/if_python3.c
parent182dc4f2abe6ae6fd20a6c089c3adf45c8b1334d (diff)
updated for version 7.3.995v7.3.995
Problem: Python: Module initialization is duplicated. Solution: Move to shared file. (ZyX)
Diffstat (limited to 'src/if_python3.c')
-rw-r--r--src/if_python3.c82
1 files changed, 6 insertions, 76 deletions
diff --git a/src/if_python3.c b/src/if_python3.c
index 0620e0395a..8a65b67a00 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -700,7 +700,6 @@ static struct PyModuleDef vimmodule;
* Internal function prototypes.
*/
-static int PythonIO_Init(void);
static PyObject *Py3Init_vim(void);
/******************************************************
@@ -780,7 +779,7 @@ Python3_Init(void)
get_py3_exceptions();
#endif
- if (PythonIO_Init())
+ if (PythonIO_Init_io())
goto fail;
globals = PyModule_GetDict(PyImport_AddModule("__main__"));
@@ -811,7 +810,7 @@ Python3_Init(void)
fail:
/* We call PythonIO_Flush() here to print any Python errors.
* This is OK, as it is possible to call this function even
- * if PythonIO_Init() has not completed successfully (it will
+ * if PythonIO_Init_io() has not completed successfully (it will
* not do anything in this case).
*/
PythonIO_Flush();
@@ -1008,15 +1007,6 @@ OutputSetattro(PyObject *self, PyObject *nameobj, PyObject *val)
return OutputSetattr((OutputObject *)(self), name, val);
}
-/***************/
-
- static int
-PythonIO_Init(void)
-{
- PyType_Ready(&OutputType);
- return PythonIO_Init_io();
-}
-
/******************************************************
* 3. Implementation of the Vim module for Python
*/
@@ -1538,48 +1528,16 @@ python3_tabpage_free(tabpage_T *tab)
}
#endif
-static BufMapObject TheBufferMap =
-{
- PyObject_HEAD_INIT(&BufMapType)
-};
-
-static WinListObject TheWindowList =
-{
- PyObject_HEAD_INIT(&WinListType)
- NULL
-};
-
-static CurrentObject TheCurrent =
-{
- PyObject_HEAD_INIT(&CurrentType)
-};
-
-static TabListObject TheTabPageList =
-{
- PyObject_HEAD_INIT(&TabListType)
-};
-
static PyObject *
Py3Init_vim(void)
{
PyObject *mod;
- PyObject *tmp;
+
/* The special value is removed from sys.path in Python3_Init(). */
static wchar_t *(argv[2]) = {L"/must>not&exist/foo", NULL};
- PyType_Ready(&IterType);
- PyType_Ready(&BufferType);
- PyType_Ready(&RangeType);
- PyType_Ready(&WindowType);
- PyType_Ready(&TabPageType);
- PyType_Ready(&BufMapType);
- PyType_Ready(&WinListType);
- PyType_Ready(&TabListType);
- PyType_Ready(&CurrentType);
- PyType_Ready(&DictionaryType);
- PyType_Ready(&ListType);
- PyType_Ready(&FunctionType);
- PyType_Ready(&OptionsType);
+ if (init_types())
+ return NULL;
/* Set sys.argv[] to avoid a crash in warn(). */
PySys_SetArgv(1, argv);
@@ -1588,35 +1546,7 @@ Py3Init_vim(void)
if (mod == NULL)
return NULL;
- VimError = PyErr_NewException("vim.error", NULL, NULL);
-
- Py_INCREF(VimError);
- PyModule_AddObject(mod, "error", VimError);
- Py_INCREF((PyObject *)(void *)&TheBufferMap);
- PyModule_AddObject(mod, "buffers", (PyObject *)(void *)&TheBufferMap);
- Py_INCREF((PyObject *)(void *)&TheCurrent);
- PyModule_AddObject(mod, "current", (PyObject *)(void *)&TheCurrent);
- Py_INCREF((PyObject *)(void *)&TheWindowList);
- PyModule_AddObject(mod, "windows", (PyObject *)(void *)&TheWindowList);
- Py_INCREF((PyObject *)(void *)&TheTabPageList);
- PyModule_AddObject(mod, "tabpages", (PyObject *)(void *)&TheTabPageList);
-
- PyModule_AddObject(mod, "vars", DictionaryNew(&globvardict));
- PyModule_AddObject(mod, "vvars", DictionaryNew(&vimvardict));
- PyModule_AddObject(mod, "options",
- OptionsNew(SREQ_GLOBAL, NULL, dummy_check, NULL));
-
-#define ADD_INT_CONSTANT(name, value) \
- tmp = PyLong_FromLong(value); \
- Py_INCREF(tmp); \
- PyModule_AddObject(mod, name, tmp)
-
- ADD_INT_CONSTANT("VAR_LOCKED", VAR_LOCKED);
- ADD_INT_CONSTANT("VAR_FIXED", VAR_FIXED);
- ADD_INT_CONSTANT("VAR_SCOPE", VAR_SCOPE);
- ADD_INT_CONSTANT("VAR_DEF_SCOPE", VAR_DEF_SCOPE);
-
- if (PyErr_Occurred())
+ if (populate_module(mod, PyModule_AddObject))
return NULL;
return mod;