424 lines
12 KiB
Plaintext
424 lines
12 KiB
Plaintext
|
To: vim_dev@googlegroups.com
|
||
|
Subject: Patch 7.3.948
|
||
|
Fcc: outbox
|
||
|
From: Bram Moolenaar <Bram@moolenaar.net>
|
||
|
Mime-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
------------
|
||
|
|
||
|
Patch 7.3.948
|
||
|
Problem: Cannot build with Python 2.2
|
||
|
Solution: Make Python interface work with Python 2.2
|
||
|
Make 2.2 the first supported version. (ZyX)
|
||
|
Files: src/if_py_both.h, src/if_python3.c, src/if_python.c,
|
||
|
src/testdir/test86.in, src/testdir/test86.ok,
|
||
|
src/testdir/test87.ok, src/configure.in, src/auto/configure
|
||
|
|
||
|
|
||
|
*** ../vim-7.3.947/src/if_py_both.h 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/if_py_both.h 2013-05-15 14:49:11.000000000 +0200
|
||
|
***************
|
||
|
*** 564,569 ****
|
||
|
--- 564,570 ----
|
||
|
return (PyObject *)(self);
|
||
|
}
|
||
|
|
||
|
+ #if 0 /* unused */
|
||
|
static void
|
||
|
IterDestructor(PyObject *self)
|
||
|
{
|
||
|
***************
|
||
|
*** 573,578 ****
|
||
|
--- 574,580 ----
|
||
|
|
||
|
DESTRUCTOR_FINISH(self);
|
||
|
}
|
||
|
+ #endif
|
||
|
|
||
|
static PyObject *
|
||
|
IterNext(PyObject *self)
|
||
|
***************
|
||
|
*** 696,708 ****
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
! if (!PyBool_Check(val))
|
||
|
! {
|
||
|
! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed"));
|
||
|
! return -1;
|
||
|
! }
|
||
|
!
|
||
|
! if (val == Py_True)
|
||
|
this->dict->dv_lock = VAR_LOCKED;
|
||
|
else
|
||
|
this->dict->dv_lock = 0;
|
||
|
--- 698,704 ----
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
! if (PyObject_IsTrue(val))
|
||
|
this->dict->dv_lock = VAR_LOCKED;
|
||
|
else
|
||
|
this->dict->dv_lock = 0;
|
||
|
***************
|
||
|
*** 1202,1214 ****
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
! if (!PyBool_Check(val))
|
||
|
! {
|
||
|
! PyErr_SetString(PyExc_TypeError, _("Only boolean objects are allowed"));
|
||
|
! return -1;
|
||
|
! }
|
||
|
!
|
||
|
! if (val == Py_True)
|
||
|
this->list->lv_lock = VAR_LOCKED;
|
||
|
else
|
||
|
this->list->lv_lock = 0;
|
||
|
--- 1198,1204 ----
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
! if (PyObject_IsTrue(val))
|
||
|
this->list->lv_lock = VAR_LOCKED;
|
||
|
else
|
||
|
this->list->lv_lock = 0;
|
||
|
***************
|
||
|
*** 1484,1497 ****
|
||
|
|
||
|
if (flags & SOPT_BOOL)
|
||
|
{
|
||
|
! if (!PyBool_Check(valObject))
|
||
|
! {
|
||
|
! PyErr_SetString(PyExc_ValueError, "Object must be boolean");
|
||
|
! return -1;
|
||
|
! }
|
||
|
!
|
||
|
! r = set_option_value_for(key, (valObject == Py_True), NULL, opt_flags,
|
||
|
! this->opt_type, this->from);
|
||
|
}
|
||
|
else if (flags & SOPT_NUM)
|
||
|
{
|
||
|
--- 1474,1481 ----
|
||
|
|
||
|
if (flags & SOPT_BOOL)
|
||
|
{
|
||
|
! r = set_option_value_for(key, PyObject_IsTrue(valObject), NULL,
|
||
|
! opt_flags, this->opt_type, this->from);
|
||
|
}
|
||
|
else if (flags & SOPT_NUM)
|
||
|
{
|
||
|
*** ../vim-7.3.947/src/if_python3.c 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/if_python3.c 2013-05-15 14:42:21.000000000 +0200
|
||
|
***************
|
||
|
*** 156,161 ****
|
||
|
--- 156,162 ----
|
||
|
# define PyMapping_Items py3_PyMapping_Items
|
||
|
# define PyIter_Next py3_PyIter_Next
|
||
|
# define PyObject_GetIter py3_PyObject_GetIter
|
||
|
+ # define PyObject_IsTrue py3_PyObject_IsTrue
|
||
|
# define PyModule_GetDict py3_PyModule_GetDict
|
||
|
#undef PyRun_SimpleString
|
||
|
# define PyRun_SimpleString py3_PyRun_SimpleString
|
||
|
***************
|
||
|
*** 264,269 ****
|
||
|
--- 265,271 ----
|
||
|
static PyObject* (*py3_PyDict_New)(void);
|
||
|
static PyObject* (*py3_PyIter_Next)(PyObject *);
|
||
|
static PyObject* (*py3_PyObject_GetIter)(PyObject *);
|
||
|
+ static int (*py3_PyObject_IsTrue)(PyObject *);
|
||
|
static PyObject* (*py3_Py_BuildValue)(char *, ...);
|
||
|
static int (*py3_PyType_Ready)(PyTypeObject *type);
|
||
|
static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item);
|
||
|
***************
|
||
|
*** 392,397 ****
|
||
|
--- 394,400 ----
|
||
|
{"PyMapping_Items", (PYTHON_PROC*)&py3_PyMapping_Items},
|
||
|
{"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next},
|
||
|
{"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
|
||
|
+ {"PyObject_IsTrue", (PYTHON_PROC*)&py3_PyObject_IsTrue},
|
||
|
{"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong},
|
||
|
{"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New},
|
||
|
{"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready},
|
||
|
*** ../vim-7.3.947/src/if_python.c 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/if_python.c 2013-05-15 14:42:21.000000000 +0200
|
||
|
***************
|
||
|
*** 229,234 ****
|
||
|
--- 229,235 ----
|
||
|
# define _Py_TrueStruct (*dll__Py_TrueStruct)
|
||
|
# define PyObject_Init dll__PyObject_Init
|
||
|
# define PyObject_GetIter dll_PyObject_GetIter
|
||
|
+ # define PyObject_IsTrue dll_PyObject_IsTrue
|
||
|
# if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02020000
|
||
|
# define PyType_IsSubtype dll_PyType_IsSubtype
|
||
|
# endif
|
||
|
***************
|
||
|
*** 324,329 ****
|
||
|
--- 325,331 ----
|
||
|
static PyObject*(*dll__PyObject_New)(PyTypeObject *, PyObject *);
|
||
|
static PyObject*(*dll__PyObject_Init)(PyObject *, PyTypeObject *);
|
||
|
static PyObject* (*dll_PyObject_GetIter)(PyObject *);
|
||
|
+ static int (*dll_PyObject_IsTrue)(PyObject *);
|
||
|
# if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
|
||
|
static iternextfunc dll__PyObject_NextNotImplemented;
|
||
|
# endif
|
||
|
***************
|
||
|
*** 459,464 ****
|
||
|
--- 461,467 ----
|
||
|
{"_PyObject_New", (PYTHON_PROC*)&dll__PyObject_New},
|
||
|
{"PyObject_Init", (PYTHON_PROC*)&dll__PyObject_Init},
|
||
|
{"PyObject_GetIter", (PYTHON_PROC*)&dll_PyObject_GetIter},
|
||
|
+ {"PyObject_IsTrue", (PYTHON_PROC*)&dll_PyObject_IsTrue},
|
||
|
# if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02070000
|
||
|
{"_PyObject_NextNotImplemented", (PYTHON_PROC*)&dll__PyObject_NextNotImplemented},
|
||
|
# endif
|
||
|
***************
|
||
|
*** 787,793 ****
|
||
|
* so the following does both: unlock GIL and save thread state in TLS
|
||
|
* without deleting thread state
|
||
|
*/
|
||
|
! PyEval_SaveThread();
|
||
|
|
||
|
initialised = 1;
|
||
|
}
|
||
|
--- 790,799 ----
|
||
|
* so the following does both: unlock GIL and save thread state in TLS
|
||
|
* without deleting thread state
|
||
|
*/
|
||
|
! #ifndef PY_CAN_RECURSE
|
||
|
! saved_python_thread =
|
||
|
! #endif
|
||
|
! PyEval_SaveThread();
|
||
|
|
||
|
initialised = 1;
|
||
|
}
|
||
|
*** ../vim-7.3.947/src/testdir/test86.in 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/testdir/test86.in 2013-05-15 14:42:21.000000000 +0200
|
||
|
***************
|
||
|
*** 183,220 ****
|
||
|
: $put ='[0.0, 0.0]'
|
||
|
:endif
|
||
|
:let messages=[]
|
||
|
! :py <<EOF
|
||
|
d=vim.bindeval('{}')
|
||
|
m=vim.bindeval('messages')
|
||
|
! try:
|
||
|
! d['abc']
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
!
|
||
|
! try:
|
||
|
! d['abc']="\0"
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
!
|
||
|
! try:
|
||
|
! d['abc']=vim
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
!
|
||
|
! try:
|
||
|
! d['']=1
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
!
|
||
|
! try:
|
||
|
! d['a\0b']=1
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
!
|
||
|
! try:
|
||
|
! d[b'a\0b']=1
|
||
|
! except Exception as e:
|
||
|
! m.extend([e.__class__.__name__])
|
||
|
EOF
|
||
|
:$put =messages
|
||
|
:unlet messages
|
||
|
--- 183,203 ----
|
||
|
: $put ='[0.0, 0.0]'
|
||
|
:endif
|
||
|
:let messages=[]
|
||
|
! py <<EOF
|
||
|
d=vim.bindeval('{}')
|
||
|
m=vim.bindeval('messages')
|
||
|
! def em(expr, g=globals(), l=locals()):
|
||
|
! try:
|
||
|
! exec(expr, g, l)
|
||
|
! except:
|
||
|
! m.extend([sys.exc_type.__name__])
|
||
|
!
|
||
|
! em('d["abc"]')
|
||
|
! em('d["abc"]="\\0"')
|
||
|
! em('d["abc"]=vim')
|
||
|
! em('d[""]=1')
|
||
|
! em('d["a\\0b"]=1')
|
||
|
! em('d[u"a\\0b"]=1')
|
||
|
EOF
|
||
|
:$put =messages
|
||
|
:unlet messages
|
||
|
***************
|
||
|
*** 394,407 ****
|
||
|
def e(s, g=globals(), l=locals()):
|
||
|
try:
|
||
|
exec(s, g, l)
|
||
|
! except Exception as e:
|
||
|
! vim.command('throw ' + repr(e.__class__.__name__))
|
||
|
|
||
|
def ev(s, g=globals(), l=locals()):
|
||
|
try:
|
||
|
return eval(s, g, l)
|
||
|
! except Exception as e:
|
||
|
! vim.command('throw ' + repr(e.__class__.__name__))
|
||
|
return 0
|
||
|
EOF
|
||
|
:function E(s)
|
||
|
--- 377,390 ----
|
||
|
def e(s, g=globals(), l=locals()):
|
||
|
try:
|
||
|
exec(s, g, l)
|
||
|
! except:
|
||
|
! vim.command('throw ' + repr(sys.exc_type.__name__))
|
||
|
|
||
|
def ev(s, g=globals(), l=locals()):
|
||
|
try:
|
||
|
return eval(s, g, l)
|
||
|
! except:
|
||
|
! vim.command('throw ' + repr(sys.exc_type.__name__))
|
||
|
return 0
|
||
|
EOF
|
||
|
:function E(s)
|
||
|
*** ../vim-7.3.947/src/testdir/test86.ok 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/testdir/test86.ok 2013-05-15 14:42:21.000000000 +0200
|
||
|
***************
|
||
|
*** 82,88 ****
|
||
|
bar
|
||
|
>>> paste
|
||
|
p/gopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
p/wopts1! KeyError
|
||
|
inv: 2! KeyError
|
||
|
wopts1! KeyError
|
||
|
--- 82,87 ----
|
||
|
***************
|
||
|
*** 224,230 ****
|
||
|
wopts2! KeyError
|
||
|
wopts3! KeyError
|
||
|
p/bopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
G: 0
|
||
|
W: 1:0 2:1 3:0 4:1
|
||
|
B: 1:0 2:1 3:0 4:1
|
||
|
--- 223,228 ----
|
||
|
***************
|
||
|
*** 280,286 ****
|
||
|
wopts2! KeyError
|
||
|
wopts3! KeyError
|
||
|
p/bopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
G: 0
|
||
|
W: 1:0 2:1 3:0 4:1
|
||
|
B: 1:0 2:1 3:0 4:1
|
||
|
--- 278,283 ----
|
||
|
*** ../vim-7.3.947/src/testdir/test87.ok 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/testdir/test87.ok 2013-05-15 14:42:21.000000000 +0200
|
||
|
***************
|
||
|
*** 71,77 ****
|
||
|
bar
|
||
|
>>> paste
|
||
|
p/gopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
p/wopts1! KeyError
|
||
|
inv: 2! KeyError
|
||
|
wopts1! KeyError
|
||
|
--- 71,76 ----
|
||
|
***************
|
||
|
*** 213,219 ****
|
||
|
wopts2! KeyError
|
||
|
wopts3! KeyError
|
||
|
p/bopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
G: 0
|
||
|
W: 1:0 2:1 3:0 4:1
|
||
|
B: 1:0 2:1 3:0 4:1
|
||
|
--- 212,217 ----
|
||
|
***************
|
||
|
*** 269,275 ****
|
||
|
wopts2! KeyError
|
||
|
wopts3! KeyError
|
||
|
p/bopts1: False
|
||
|
- inv: 2! ValueError
|
||
|
G: 0
|
||
|
W: 1:0 2:1 3:0 4:1
|
||
|
B: 1:0 2:1 3:0 4:1
|
||
|
--- 267,272 ----
|
||
|
*** ../vim-7.3.947/src/configure.in 2013-05-06 04:21:35.000000000 +0200
|
||
|
--- src/configure.in 2013-05-15 14:46:11.000000000 +0200
|
||
|
***************
|
||
|
*** 863,872 ****
|
||
|
${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
|
||
|
]])
|
||
|
|
||
|
! dnl -- it must be at least version 1.4
|
||
|
! AC_MSG_CHECKING(Python is 1.4 or better)
|
||
|
if ${vi_cv_path_python} -c \
|
||
|
! "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
|
||
|
then
|
||
|
AC_MSG_RESULT(yep)
|
||
|
|
||
|
--- 863,872 ----
|
||
|
${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
|
||
|
]])
|
||
|
|
||
|
! dnl -- it must be at least version 2.2
|
||
|
! AC_MSG_CHECKING(Python is 2.2 or better)
|
||
|
if ${vi_cv_path_python} -c \
|
||
|
! "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
|
||
|
then
|
||
|
AC_MSG_RESULT(yep)
|
||
|
|
||
|
*** ../vim-7.3.947/src/auto/configure 2013-05-06 04:21:35.000000000 +0200
|
||
|
--- src/auto/configure 2013-05-15 14:46:28.000000000 +0200
|
||
|
***************
|
||
|
*** 5289,5298 ****
|
||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
|
||
|
$as_echo "$vi_cv_var_python_version" >&6; }
|
||
|
|
||
|
! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 1.4 or better" >&5
|
||
|
! $as_echo_n "checking Python is 1.4 or better... " >&6; }
|
||
|
if ${vi_cv_path_python} -c \
|
||
|
! "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
|
||
|
then
|
||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
|
||
|
$as_echo "yep" >&6; }
|
||
|
--- 5289,5298 ----
|
||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vi_cv_var_python_version" >&5
|
||
|
$as_echo "$vi_cv_var_python_version" >&6; }
|
||
|
|
||
|
! { $as_echo "$as_me:${as_lineno-$LINENO}: checking Python is 2.2 or better" >&5
|
||
|
! $as_echo_n "checking Python is 2.2 or better... " >&6; }
|
||
|
if ${vi_cv_path_python} -c \
|
||
|
! "import sys; sys.exit(${vi_cv_var_python_version} < 2.2)"
|
||
|
then
|
||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yep" >&5
|
||
|
$as_echo "yep" >&6; }
|
||
|
*** ../vim-7.3.947/src/version.c 2013-05-15 14:39:47.000000000 +0200
|
||
|
--- src/version.c 2013-05-15 14:43:39.000000000 +0200
|
||
|
***************
|
||
|
*** 730,731 ****
|
||
|
--- 730,733 ----
|
||
|
{ /* Add new patch number below this line */
|
||
|
+ /**/
|
||
|
+ 948,
|
||
|
/**/
|
||
|
|
||
|
--
|
||
|
MARTHA'S WAY: Don't throw out all that leftover wine. Freeze into ice cubes
|
||
|
for future use in casseroles and sauces.
|
||
|
MY WAY: What leftover wine?
|
||
|
|
||
|
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
|
||
|
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
|
||
|
\\\ an exciting new programming language -- http://www.Zimbu.org ///
|
||
|
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|