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