Mercurial > vim
comparison src/evalfunc.c @ 10722:7598ce51bf2a v8.0.0251
patch 8.0.0251: not easy to select Python 2 or 3
commit https://github.com/vim/vim/commit/f42dd3c3901ea0ba38e67a616aea9953cae81b8d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Jan 28 16:06:38 2017 +0100
patch 8.0.0251: not easy to select Python 2 or 3
Problem: It is not so easy to write a script that works with both Python 2
and Python 3, even when the Python code works with both.
Solution: Add 'pyxversion', :pyx, etc. (Marc Weber, Ken Takata)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 28 Jan 2017 16:15:04 +0100 |
parents | 056e32b99e93 |
children | 390ad2cccd3f |
comparison
equal
deleted
inserted
replaced
10721:9177c4f6a229 | 10722:7598ce51bf2a |
---|---|
287 static void f_py3eval(typval_T *argvars, typval_T *rettv); | 287 static void f_py3eval(typval_T *argvars, typval_T *rettv); |
288 #endif | 288 #endif |
289 #ifdef FEAT_PYTHON | 289 #ifdef FEAT_PYTHON |
290 static void f_pyeval(typval_T *argvars, typval_T *rettv); | 290 static void f_pyeval(typval_T *argvars, typval_T *rettv); |
291 #endif | 291 #endif |
292 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | |
293 static void f_pyxeval(typval_T *argvars, typval_T *rettv); | |
294 #endif | |
292 static void f_range(typval_T *argvars, typval_T *rettv); | 295 static void f_range(typval_T *argvars, typval_T *rettv); |
293 static void f_readfile(typval_T *argvars, typval_T *rettv); | 296 static void f_readfile(typval_T *argvars, typval_T *rettv); |
294 static void f_reltime(typval_T *argvars, typval_T *rettv); | 297 static void f_reltime(typval_T *argvars, typval_T *rettv); |
295 #ifdef FEAT_FLOAT | 298 #ifdef FEAT_FLOAT |
296 static void f_reltimefloat(typval_T *argvars, typval_T *rettv); | 299 static void f_reltimefloat(typval_T *argvars, typval_T *rettv); |
714 {"py3eval", 1, 1, f_py3eval}, | 717 {"py3eval", 1, 1, f_py3eval}, |
715 #endif | 718 #endif |
716 #ifdef FEAT_PYTHON | 719 #ifdef FEAT_PYTHON |
717 {"pyeval", 1, 1, f_pyeval}, | 720 {"pyeval", 1, 1, f_pyeval}, |
718 #endif | 721 #endif |
722 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | |
723 {"pyxeval", 1, 1, f_pyxeval}, | |
724 #endif | |
719 {"range", 1, 3, f_range}, | 725 {"range", 1, 3, f_range}, |
720 {"readfile", 1, 3, f_readfile}, | 726 {"readfile", 1, 3, f_readfile}, |
721 {"reltime", 0, 2, f_reltime}, | 727 {"reltime", 0, 2, f_reltime}, |
722 #ifdef FEAT_FLOAT | 728 #ifdef FEAT_FLOAT |
723 {"reltimefloat", 1, 1, f_reltimefloat}, | 729 {"reltimefloat", 1, 1, f_reltimefloat}, |
5732 #endif | 5738 #endif |
5733 #endif | 5739 #endif |
5734 #ifdef FEAT_PERSISTENT_UNDO | 5740 #ifdef FEAT_PERSISTENT_UNDO |
5735 "persistent_undo", | 5741 "persistent_undo", |
5736 #endif | 5742 #endif |
5737 #ifdef FEAT_PYTHON | 5743 #if defined(FEAT_PYTHON) && !defined(DYNAMIC_PYTHON) |
5738 #ifndef DYNAMIC_PYTHON | |
5739 "python", | 5744 "python", |
5740 #endif | 5745 "pythonx", |
5741 #endif | 5746 #endif |
5742 #ifdef FEAT_PYTHON3 | 5747 #if defined(FEAT_PYTHON3) && !defined(DYNAMIC_PYTHON3) |
5743 #ifndef DYNAMIC_PYTHON3 | |
5744 "python3", | 5748 "python3", |
5745 #endif | 5749 "pythonx", |
5746 #endif | 5750 #endif |
5747 #ifdef FEAT_POSTSCRIPT | 5751 #ifdef FEAT_POSTSCRIPT |
5748 "postscript", | 5752 "postscript", |
5749 #endif | 5753 #endif |
5750 #ifdef FEAT_PRINTER | 5754 #ifdef FEAT_PRINTER |
5970 #endif | 5974 #endif |
5971 #ifdef DYNAMIC_RUBY | 5975 #ifdef DYNAMIC_RUBY |
5972 else if (STRICMP(name, "ruby") == 0) | 5976 else if (STRICMP(name, "ruby") == 0) |
5973 n = ruby_enabled(FALSE); | 5977 n = ruby_enabled(FALSE); |
5974 #endif | 5978 #endif |
5975 #ifdef FEAT_PYTHON | |
5976 #ifdef DYNAMIC_PYTHON | 5979 #ifdef DYNAMIC_PYTHON |
5977 else if (STRICMP(name, "python") == 0) | 5980 else if (STRICMP(name, "python") == 0) |
5978 n = python_enabled(FALSE); | 5981 n = python_enabled(FALSE); |
5979 #endif | 5982 #endif |
5980 #endif | |
5981 #ifdef FEAT_PYTHON3 | |
5982 #ifdef DYNAMIC_PYTHON3 | 5983 #ifdef DYNAMIC_PYTHON3 |
5983 else if (STRICMP(name, "python3") == 0) | 5984 else if (STRICMP(name, "python3") == 0) |
5984 n = python3_enabled(FALSE); | 5985 n = python3_enabled(FALSE); |
5985 #endif | 5986 #endif |
5987 #if defined(DYNAMIC_PYTHON) || defined(DYNAMIC_PYTHON3) | |
5988 else if (STRICMP(name, "pythonx") == 0) | |
5989 { | |
5990 # if defined(DYNAMIC_PYTHON) && defined(DYNAMIC_PYTHON3) | |
5991 if (p_pyx == 0) | |
5992 n = python3_enabled(FALSE) || python_enabled(FALSE); | |
5993 else if (p_pyx == 3) | |
5994 n = python3_enabled(FALSE); | |
5995 else if (p_pyx == 2) | |
5996 n = python_enabled(FALSE); | |
5997 # elif defined(DYNAMIC_PYTHON) | |
5998 n = python_enabled(FALSE); | |
5999 # elif defined(DYNAMIC_PYTHON3) | |
6000 n = python3_enabled(FALSE); | |
6001 # endif | |
6002 } | |
5986 #endif | 6003 #endif |
5987 #ifdef DYNAMIC_PERL | 6004 #ifdef DYNAMIC_PERL |
5988 else if (STRICMP(name, "perl") == 0) | 6005 else if (STRICMP(name, "perl") == 0) |
5989 n = perl_enabled(FALSE); | 6006 n = perl_enabled(FALSE); |
5990 #endif | 6007 #endif |
8005 f_py3eval(typval_T *argvars, typval_T *rettv) | 8022 f_py3eval(typval_T *argvars, typval_T *rettv) |
8006 { | 8023 { |
8007 char_u *str; | 8024 char_u *str; |
8008 char_u buf[NUMBUFLEN]; | 8025 char_u buf[NUMBUFLEN]; |
8009 | 8026 |
8027 if (p_pyx == 0) | |
8028 p_pyx = 3; | |
8029 | |
8010 str = get_tv_string_buf(&argvars[0], buf); | 8030 str = get_tv_string_buf(&argvars[0], buf); |
8011 do_py3eval(str, rettv); | 8031 do_py3eval(str, rettv); |
8012 } | 8032 } |
8013 #endif | 8033 #endif |
8014 | 8034 |
8020 f_pyeval(typval_T *argvars, typval_T *rettv) | 8040 f_pyeval(typval_T *argvars, typval_T *rettv) |
8021 { | 8041 { |
8022 char_u *str; | 8042 char_u *str; |
8023 char_u buf[NUMBUFLEN]; | 8043 char_u buf[NUMBUFLEN]; |
8024 | 8044 |
8045 if (p_pyx == 0) | |
8046 p_pyx = 2; | |
8047 | |
8025 str = get_tv_string_buf(&argvars[0], buf); | 8048 str = get_tv_string_buf(&argvars[0], buf); |
8026 do_pyeval(str, rettv); | 8049 do_pyeval(str, rettv); |
8050 } | |
8051 #endif | |
8052 | |
8053 #if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3) | |
8054 /* | |
8055 * "pyxeval()" function | |
8056 */ | |
8057 static void | |
8058 f_pyxeval(typval_T *argvars, typval_T *rettv) | |
8059 { | |
8060 # if defined(FEAT_PYTHON) && defined(FEAT_PYTHON3) | |
8061 init_pyxversion(); | |
8062 if (p_pyx == 2) | |
8063 f_pyeval(argvars, rettv); | |
8064 else | |
8065 f_py3eval(argvars, rettv); | |
8066 # elif defined(FEAT_PYTHON) | |
8067 f_pyeval(argvars, rettv); | |
8068 # elif defined(FEAT_PYTHON3) | |
8069 f_py3eval(argvars, rettv); | |
8070 # endif | |
8027 } | 8071 } |
8028 #endif | 8072 #endif |
8029 | 8073 |
8030 /* | 8074 /* |
8031 * "range()" function | 8075 * "range()" function |