@@ -289,6 +289,9 @@ static void f_py3eval(typval_T *argvars, typval_T *rettv);
289289#ifdef FEAT_PYTHON
290290static void f_pyeval (typval_T * argvars , typval_T * rettv );
291291#endif
292+ #if defined(FEAT_PYTHON ) || defined(FEAT_PYTHON3 )
293+ static void f_pyxeval (typval_T * argvars , typval_T * rettv );
294+ #endif
292295static void f_range (typval_T * argvars , typval_T * rettv );
293296static void f_readfile (typval_T * argvars , typval_T * rettv );
294297static void f_reltime (typval_T * argvars , typval_T * rettv );
@@ -715,6 +718,9 @@ static struct fst
715718#endif
716719#ifdef FEAT_PYTHON
717720 {"pyeval" , 1 , 1 , f_pyeval },
721+ #endif
722+ #if defined(FEAT_PYTHON ) || defined (FEAT_PYTHON3 )
723+ {"pyxeval" , 1 , 1 , f_pyxeval },
718724#endif
719725 {"range" , 1 , 3 , f_range },
720726 {"readfile" , 1 , 3 , f_readfile },
@@ -5734,15 +5740,13 @@ f_has(typval_T *argvars, typval_T *rettv)
57345740#ifdef FEAT_PERSISTENT_UNDO
57355741 "persistent_undo" ,
57365742#endif
5737- #ifdef FEAT_PYTHON
5738- #ifndef DYNAMIC_PYTHON
5743+ #if defined(FEAT_PYTHON ) && !defined (DYNAMIC_PYTHON )
57395744 "python" ,
5745+ "pythonx" ,
57405746#endif
5741- #endif
5742- #ifdef FEAT_PYTHON3
5743- #ifndef DYNAMIC_PYTHON3
5747+ #if defined(FEAT_PYTHON3 ) && !defined (DYNAMIC_PYTHON3 )
57445748 "python3" ,
5745- #endif
5749+ "pythonx" ,
57465750#endif
57475751#ifdef FEAT_POSTSCRIPT
57485752 "postscript" ,
@@ -5972,17 +5976,30 @@ f_has(typval_T *argvars, typval_T *rettv)
59725976 else if (STRICMP (name , "ruby ") == 0 )
59735977 n = ruby_enabled (FALSE);
59745978#endif
5975- #ifdef FEAT_PYTHON
59765979#ifdef DYNAMIC_PYTHON
59775980 else if (STRICMP (name , "python ") == 0 )
59785981 n = python_enabled (FALSE);
59795982#endif
5980- #endif
5981- #ifdef FEAT_PYTHON3
59825983#ifdef DYNAMIC_PYTHON3
59835984 else if (STRICMP (name , "python3 ") == 0 )
59845985 n = python3_enabled (FALSE);
59855986#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+ }
59866003#endif
59876004#ifdef DYNAMIC_PERL
59886005 else if (STRICMP (name , "perl ") == 0 )
@@ -8007,6 +8024,9 @@ f_py3eval(typval_T *argvars, typval_T *rettv)
80078024 char_u * str ;
80088025 char_u buf [NUMBUFLEN ];
80098026
8027+ if (p_pyx == 0 )
8028+ p_pyx = 3 ;
8029+
80108030 str = get_tv_string_buf (& argvars [0 ], buf );
80118031 do_py3eval (str , rettv );
80128032}
@@ -8022,11 +8042,35 @@ f_pyeval(typval_T *argvars, typval_T *rettv)
80228042 char_u * str ;
80238043 char_u buf [NUMBUFLEN ];
80248044
8045+ if (p_pyx == 0 )
8046+ p_pyx = 2 ;
8047+
80258048 str = get_tv_string_buf (& argvars [0 ], buf );
80268049 do_pyeval (str , rettv );
80278050}
80288051#endif
80298052
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
8071+ }
8072+ #endif
8073+
80308074/*
80318075 * "range()" function
80328076 */
0 commit comments