mirror of
https://github.com/vim/vim.git
synced 2025-09-28 04:24:06 -04:00
updated for version 7.3.825
Problem: With Python errors are not always clear. Solution: Print the stack trace, unless :silent is used. (ZyX)
This commit is contained in:
@@ -148,6 +148,7 @@ struct PyMethodDef { Py_ssize_t a; };
|
|||||||
# define PyDict_SetItemString dll_PyDict_SetItemString
|
# define PyDict_SetItemString dll_PyDict_SetItemString
|
||||||
# define PyErr_BadArgument dll_PyErr_BadArgument
|
# define PyErr_BadArgument dll_PyErr_BadArgument
|
||||||
# define PyErr_Clear dll_PyErr_Clear
|
# define PyErr_Clear dll_PyErr_Clear
|
||||||
|
# define PyErr_PrintEx dll_PyErr_PrintEx
|
||||||
# define PyErr_NoMemory dll_PyErr_NoMemory
|
# define PyErr_NoMemory dll_PyErr_NoMemory
|
||||||
# define PyErr_Occurred dll_PyErr_Occurred
|
# define PyErr_Occurred dll_PyErr_Occurred
|
||||||
# define PyErr_SetNone dll_PyErr_SetNone
|
# define PyErr_SetNone dll_PyErr_SetNone
|
||||||
@@ -251,6 +252,7 @@ static void* (*dll_PyMem_Malloc)(size_t);
|
|||||||
static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
|
static int(*dll_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
|
||||||
static int(*dll_PyErr_BadArgument)(void);
|
static int(*dll_PyErr_BadArgument)(void);
|
||||||
static void(*dll_PyErr_Clear)(void);
|
static void(*dll_PyErr_Clear)(void);
|
||||||
|
static void(*dll_PyErr_PrintEx)(int);
|
||||||
static PyObject*(*dll_PyErr_NoMemory)(void);
|
static PyObject*(*dll_PyErr_NoMemory)(void);
|
||||||
static PyObject*(*dll_PyErr_Occurred)(void);
|
static PyObject*(*dll_PyErr_Occurred)(void);
|
||||||
static void(*dll_PyErr_SetNone)(PyObject *);
|
static void(*dll_PyErr_SetNone)(PyObject *);
|
||||||
@@ -380,6 +382,7 @@ static struct
|
|||||||
{"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
|
{"PyDict_SetItemString", (PYTHON_PROC*)&dll_PyDict_SetItemString},
|
||||||
{"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
|
{"PyErr_BadArgument", (PYTHON_PROC*)&dll_PyErr_BadArgument},
|
||||||
{"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
|
{"PyErr_Clear", (PYTHON_PROC*)&dll_PyErr_Clear},
|
||||||
|
{"PyErr_PrintEx", (PYTHON_PROC*)&dll_PyErr_PrintEx},
|
||||||
{"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory},
|
{"PyErr_NoMemory", (PYTHON_PROC*)&dll_PyErr_NoMemory},
|
||||||
{"PyErr_Occurred", (PYTHON_PROC*)&dll_PyErr_Occurred},
|
{"PyErr_Occurred", (PYTHON_PROC*)&dll_PyErr_Occurred},
|
||||||
{"PyErr_SetNone", (PYTHON_PROC*)&dll_PyErr_SetNone},
|
{"PyErr_SetNone", (PYTHON_PROC*)&dll_PyErr_SetNone},
|
||||||
@@ -856,7 +859,11 @@ DoPythonCommand(exarg_T *eap, const char *cmd, typval_T *rettv)
|
|||||||
|
|
||||||
r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals);
|
r = PyRun_String((char *)(cmd), Py_eval_input, globals, globals);
|
||||||
if (r == NULL)
|
if (r == NULL)
|
||||||
|
{
|
||||||
|
if (PyErr_Occurred() && !msg_silent)
|
||||||
|
PyErr_PrintEx(0);
|
||||||
EMSG(_("E858: Eval did not return a valid python object"));
|
EMSG(_("E858: Eval did not return a valid python object"));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ConvertFromPyObject(r, rettv) == -1)
|
if (ConvertFromPyObject(r, rettv) == -1)
|
||||||
|
@@ -122,6 +122,7 @@ static void init_structs(void);
|
|||||||
# define PyDict_SetItemString py3_PyDict_SetItemString
|
# define PyDict_SetItemString py3_PyDict_SetItemString
|
||||||
# define PyErr_BadArgument py3_PyErr_BadArgument
|
# define PyErr_BadArgument py3_PyErr_BadArgument
|
||||||
# define PyErr_Clear py3_PyErr_Clear
|
# define PyErr_Clear py3_PyErr_Clear
|
||||||
|
# define PyErr_PrintEx py3_PyErr_PrintEx
|
||||||
# define PyErr_NoMemory py3_PyErr_NoMemory
|
# define PyErr_NoMemory py3_PyErr_NoMemory
|
||||||
# define PyErr_Occurred py3_PyErr_Occurred
|
# define PyErr_Occurred py3_PyErr_Occurred
|
||||||
# define PyErr_SetNone py3_PyErr_SetNone
|
# define PyErr_SetNone py3_PyErr_SetNone
|
||||||
@@ -279,6 +280,7 @@ static int (*py3_PyMem_Free)(void *);
|
|||||||
static void* (*py3_PyMem_Malloc)(size_t);
|
static void* (*py3_PyMem_Malloc)(size_t);
|
||||||
static int (*py3_Py_IsInitialized)(void);
|
static int (*py3_Py_IsInitialized)(void);
|
||||||
static void (*py3_PyErr_Clear)(void);
|
static void (*py3_PyErr_Clear)(void);
|
||||||
|
static void (*py3_PyErr_PrintEx)(int);
|
||||||
static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
|
static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
|
||||||
static iternextfunc py3__PyObject_NextNotImplemented;
|
static iternextfunc py3__PyObject_NextNotImplemented;
|
||||||
static PyObject* py3__Py_NoneStruct;
|
static PyObject* py3__Py_NoneStruct;
|
||||||
@@ -403,6 +405,7 @@ static struct
|
|||||||
{"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct},
|
{"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct},
|
||||||
{"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
|
{"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
|
||||||
{"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
|
{"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
|
||||||
|
{"PyErr_PrintEx", (PYTHON_PROC*)&py3_PyErr_PrintEx},
|
||||||
{"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
|
{"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
|
||||||
{"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
|
{"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
|
||||||
{"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
|
{"PyImport_AppendInittab", (PYTHON_PROC*)&py3_PyImport_AppendInittab},
|
||||||
@@ -842,7 +845,11 @@ DoPy3Command(exarg_T *eap, const char *cmd, typval_T *rettv)
|
|||||||
r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input,
|
r = PyRun_String(PyBytes_AsString(cmdbytes), Py_eval_input,
|
||||||
globals, globals);
|
globals, globals);
|
||||||
if (r == NULL)
|
if (r == NULL)
|
||||||
|
{
|
||||||
|
if (PyErr_Occurred() && !msg_silent)
|
||||||
|
PyErr_PrintEx(0);
|
||||||
EMSG(_("E860: Eval did not return a valid python 3 object"));
|
EMSG(_("E860: Eval did not return a valid python 3 object"));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ConvertFromPyObject(r, rettv) == -1)
|
if (ConvertFromPyObject(r, rettv) == -1)
|
||||||
|
@@ -725,6 +725,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
825,
|
||||||
/**/
|
/**/
|
||||||
824,
|
824,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user