diff src/if_python3.c @ 4405:907b1f035ee7 v7.3.951

updated for version 7.3.951 Problem: Python exceptions have problems. Solution: Change some IndexErrors to TypeErrors. Make ?line number out of range? an IndexError. Make ?unable to get option value? a RuntimeError. Make all PyErr_SetString messages start with lowercase letter and use _(). (ZyX)
author Bram Moolenaar <bram@vim.org>
date Wed, 15 May 2013 15:44:28 +0200
parents d4816e7c3328
children 7b789d337820
line wrap: on
line diff
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -336,6 +336,7 @@ static PyObject *p3imp_PyExc_KeyError;
 static PyObject *p3imp_PyExc_KeyboardInterrupt;
 static PyObject *p3imp_PyExc_TypeError;
 static PyObject *p3imp_PyExc_ValueError;
+static PyObject *p3imp_PyExc_RuntimeError;
 
 # define PyExc_AttributeError p3imp_PyExc_AttributeError
 # define PyExc_IndexError p3imp_PyExc_IndexError
@@ -343,6 +344,7 @@ static PyObject *p3imp_PyExc_ValueError;
 # define PyExc_KeyboardInterrupt p3imp_PyExc_KeyboardInterrupt
 # define PyExc_TypeError p3imp_PyExc_TypeError
 # define PyExc_ValueError p3imp_PyExc_ValueError
+# define PyExc_RuntimeError p3imp_PyExc_RuntimeError
 
 /*
  * Table of name to function pointer of python.
@@ -580,12 +582,14 @@ get_py3_exceptions()
     p3imp_PyExc_KeyboardInterrupt = PyDict_GetItemString(exdict, "KeyboardInterrupt");
     p3imp_PyExc_TypeError = PyDict_GetItemString(exdict, "TypeError");
     p3imp_PyExc_ValueError = PyDict_GetItemString(exdict, "ValueError");
+    p3imp_PyExc_RuntimeError = PyDict_GetItemString(exdict, "RuntimeError");
     Py_XINCREF(p3imp_PyExc_AttributeError);
     Py_XINCREF(p3imp_PyExc_IndexError);
     Py_XINCREF(p3imp_PyExc_KeyError);
     Py_XINCREF(p3imp_PyExc_KeyboardInterrupt);
     Py_XINCREF(p3imp_PyExc_TypeError);
     Py_XINCREF(p3imp_PyExc_ValueError);
+    Py_XINCREF(p3imp_PyExc_RuntimeError);
     Py_XDECREF(exmod);
 }
 #endif /* DYNAMIC_PYTHON3 */
@@ -1132,7 +1136,7 @@ BufferSubscript(PyObject *self, PyObject
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return NULL;
     }
 }
@@ -1166,7 +1170,7 @@ BufferAsSubscript(PyObject *self, PyObje
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return -1;
     }
 }
@@ -1248,7 +1252,7 @@ RangeSubscript(PyObject *self, PyObject*
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return NULL;
     }
 }
@@ -1275,7 +1279,7 @@ RangeAsSubscript(PyObject *self, PyObjec
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return -1;
     }
 }
@@ -1450,7 +1454,7 @@ ListSubscript(PyObject *self, PyObject* 
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return NULL;
     }
 }
@@ -1474,7 +1478,7 @@ ListAsSubscript(PyObject *self, PyObject
     }
     else
     {
-	PyErr_SetString(PyExc_IndexError, "Index must be int or slice");
+	PyErr_SetString(PyExc_TypeError, _("index must be int or slice"));
 	return -1;
     }
 }