updated for version 7.3.819
Problem: Compiling without +eval and with Python isn't working.
Solution: Add the eval feature when building with Python.
diff --git a/src/eval.c b/src/eval.c
index 9f63d45..106f1c5 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -917,7 +917,9 @@
hash_clear(&compat_hashtab);
free_scriptnames();
+# if defined(FEAT_CMDL_COMPL)
free_locales();
+# endif
/* global variables */
vars_clear(&globvarht);
@@ -1561,8 +1563,6 @@
}
-#if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \
- || defined(FEAT_COMPL_FUNC) || defined(PROTO)
/*
* Call some vimL function and return the result in "*rettv".
* Uses argv[argc] for the function arguments. Only Number and String
@@ -1640,6 +1640,33 @@
return ret;
}
+/*
+ * Call vimL function "func" and return the result as a number.
+ * Returns -1 when calling the function fails.
+ * Uses argv[argc] for the function arguments.
+ */
+ long
+call_func_retnr(func, argc, argv, safe)
+ char_u *func;
+ int argc;
+ char_u **argv;
+ int safe; /* use the sandbox */
+{
+ typval_T rettv;
+ long retval;
+
+ /* All arguments are passed as strings, no conversion to number. */
+ if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
+ return -1;
+
+ retval = get_tv_number_chk(&rettv, NULL);
+ clear_tv(&rettv);
+ return retval;
+}
+
+#if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \
+ || defined(FEAT_COMPL_FUNC) || defined(PROTO)
+
# if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO)
/*
* Call vimL function "func" and return the result as a string.
@@ -1666,32 +1693,6 @@
}
# endif
-# if defined(FEAT_COMPL_FUNC) || defined(PROTO)
-/*
- * Call vimL function "func" and return the result as a number.
- * Returns -1 when calling the function fails.
- * Uses argv[argc] for the function arguments.
- */
- long
-call_func_retnr(func, argc, argv, safe)
- char_u *func;
- int argc;
- char_u **argv;
- int safe; /* use the sandbox */
-{
- typval_T rettv;
- long retval;
-
- /* All arguments are passed as strings, no conversion to number. */
- if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL)
- return -1;
-
- retval = get_tv_number_chk(&rettv, NULL);
- clear_tv(&rettv);
- return retval;
-}
-# endif
-
/*
* Call vimL function "func" and return the result as a List.
* Uses argv[argc] for the function arguments.
@@ -1720,7 +1721,6 @@
}
#endif
-
/*
* Save the current function call pointer, and set it to NULL.
* Used when executing autocommands and for ":source".
@@ -9330,7 +9330,7 @@
*/
static void
f_cindent(argvars, rettv)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
{
#ifdef FEAT_CINDENT
@@ -10379,9 +10379,9 @@
static void
findfilendir(argvars, rettv, find_what)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
- int find_what;
+ int find_what UNUSED;
{
#ifdef FEAT_SEARCHPATH
char_u *fname;
@@ -10751,9 +10751,9 @@
*/
static void
foldclosed_both(argvars, rettv, end)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
- int end;
+ int end UNUSED;
{
#ifdef FEAT_FOLDING
linenr_T lnum;
@@ -10802,8 +10802,8 @@
*/
static void
f_foldlevel(argvars, rettv)
- typval_T *argvars;
- typval_T *rettv;
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_FOLDING
linenr_T lnum;
@@ -11583,7 +11583,7 @@
static void
f_getmatches(argvars, rettv)
typval_T *argvars UNUSED;
- typval_T *rettv;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_SEARCH_EXTRA
dict_T *dict;
@@ -13589,7 +13589,7 @@
*/
static void
f_lispindent(argvars, rettv)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
{
#ifdef FEAT_LISP
@@ -13983,8 +13983,8 @@
*/
static void
f_matchadd(argvars, rettv)
- typval_T *argvars;
- typval_T *rettv;
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_SEARCH_EXTRA
char_u buf[NUMBUFLEN];
@@ -14021,7 +14021,7 @@
*/
static void
f_matcharg(argvars, rettv)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
{
if (rettv_list_alloc(rettv) == OK)
@@ -14053,8 +14053,8 @@
*/
static void
f_matchdelete(argvars, rettv)
- typval_T *argvars;
- typval_T *rettv;
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_SEARCH_EXTRA
rettv->vval.v_number = match_delete(curwin,
@@ -14871,8 +14871,8 @@
*/
static void
f_reltime(argvars, rettv)
- typval_T *argvars;
- typval_T *rettv;
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_RELTIME
proftime_T res;
@@ -14920,7 +14920,7 @@
*/
static void
f_reltimestr(argvars, rettv)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
{
#ifdef FEAT_RELTIME
@@ -15965,7 +15965,7 @@
int flags; /* SP_SETPCMARK and other SP_ values */
pos_T *match_pos;
linenr_T lnum_stop; /* stop at this line if not zero */
- long time_limit; /* stop after this many msec */
+ long time_limit UNUSED; /* stop after this many msec */
{
char_u *save_cpo;
char_u *pat, *pat2 = NULL, *pat3 = NULL;
@@ -16390,8 +16390,8 @@
*/
static void
f_setmatches(argvars, rettv)
- typval_T *argvars;
- typval_T *rettv;
+ typval_T *argvars UNUSED;
+ typval_T *rettv UNUSED;
{
#ifdef FEAT_SEARCH_EXTRA
list_T *l;
@@ -18463,7 +18463,7 @@
*/
static void
f_undofile(argvars, rettv)
- typval_T *argvars;
+ typval_T *argvars UNUSED;
typval_T *rettv;
{
rettv->v_type = VAR_STRING;
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index d0d9f56..4c4c9e9 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1734,6 +1734,8 @@
#ifdef FEAT_EVAL
/* avoid that a function call in 'statusline' does this */
&& !getline_equal(fgetline, cookie, get_func_line)
+#endif
+#ifdef FEAT_AUTOCMD
/* avoid that an autocommand, e.g. QuitPre, does this */
&& !getline_equal(fgetline, cookie, getnextac)
#endif
@@ -5375,7 +5377,9 @@
#endif
return FAIL;
}
+#endif
+#if defined(FEAT_USR_CMDS) || defined(FEAT_EVAL) || defined(PROTO)
/*
* List of names for completion for ":command" with the EXPAND_ flag.
* Must be alphabetical for completion.
@@ -5430,7 +5434,9 @@
{EXPAND_USER_VARS, "var"},
{0, NULL}
};
+#endif
+#if defined(FEAT_USR_CMDS) || defined(PROTO)
static void
uc_list(name, name_len)
char_u *name;
@@ -6375,10 +6381,12 @@
int vallen;
int *complp;
long *argt;
- char_u **compl_arg;
+ char_u **compl_arg UNUSED;
{
char_u *arg = NULL;
+# if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
size_t arglen = 0;
+# endif
int i;
int valend = vallen;
@@ -6388,7 +6396,9 @@
if (value[i] == ',')
{
arg = &value[i + 1];
+# if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL)
arglen = vallen - i - 1;
+# endif
valend = i;
break;
}
diff --git a/src/feature.h b/src/feature.h
index f54f59a..f2dcca2 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -392,6 +392,13 @@
#endif
/*
+ * +python and +python3 require FEAT_EVAL.
+ */
+#if !defined(FEAT_EVAL) && (defined(FEAT_PYTHON3) || defined(FEAT_PYTHON))
+# define FEAT_EVAL
+#endif
+
+/*
* +profile Profiling for functions and scripts.
*/
#if defined(FEAT_HUGE) \
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index a8cad32..d0eebf3 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -5164,8 +5164,7 @@
return FAIL;
}
-#if defined(FEAT_TITLE) \
- || defined(PROTO)
+#if defined(FEAT_TITLE) || defined(FEAT_EVAL) || defined(PROTO)
/*
* Return the text window-id and display. Only required for X-based GUI's
*/
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 339250e..1d99909 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -310,7 +310,6 @@
return result;
}
-#ifdef FEAT_EVAL
/*
* Function to translate a typval_T into a PyObject; this will recursively
* translate lists/dictionaries into their Python equivalents.
@@ -425,12 +424,10 @@
return result;
}
-#endif
static PyObject *
VimEval(PyObject *self UNUSED, PyObject *args UNUSED)
{
-#ifdef FEAT_EVAL
char *expr;
typval_T *our_tv;
PyObject *result;
@@ -466,10 +463,6 @@
Py_END_ALLOW_THREADS
return result;
-#else
- PyErr_SetVim(_("expressions disabled at compile time"));
- return NULL;
-#endif
}
static PyObject *ConvertToPyObject(typval_T *);
@@ -477,7 +470,6 @@
static PyObject *
VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED)
{
-#ifdef FEAT_EVAL
char *expr;
typval_T *our_tv;
PyObject *result;
@@ -506,10 +498,6 @@
Py_END_ALLOW_THREADS
return result;
-#else
- PyErr_SetVim(_("expressions disabled at compile time"));
- return NULL;
-#endif
}
static PyObject *
@@ -946,7 +934,7 @@
}
static PyObject *
-DictionaryListKeys(PyObject *self)
+DictionaryListKeys(PyObject *self UNUSED)
{
dict_T *dict = ((DictionaryObject *)(self))->dict;
long_u todo = dict->dv_hashtab.ht_used;
@@ -2549,7 +2537,6 @@
return 0;
}
-#ifdef FEAT_EVAL
typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *);
static int
@@ -2781,4 +2768,3 @@
return NULL;
}
}
-#endif
diff --git a/src/normal.c b/src/normal.c
index b7f3dd4..c79b67b 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -2292,7 +2292,9 @@
{
#ifdef FEAT_EVAL
char_u *(argv[1]);
+# ifdef FEAT_VIRTUALEDIT
int save_virtual_op = virtual_op;
+# endif
if (*p_opfunc == NUL)
EMSG(_("E774: 'operatorfunc' is empty"));
@@ -2312,13 +2314,17 @@
else
argv[0] = (char_u *)"char";
+# ifdef FEAT_VIRTUALEDIT
/* Reset virtual_op so that 'virtualedit' can be changed in the
* function. */
virtual_op = MAYBE;
+# endif
(void)call_func_retnr(p_opfunc, 1, argv, FALSE);
+# ifdef FEAT_VIRTUALEDIT
virtual_op = save_virtual_op;
+# endif
}
#else
EMSG(_("E775: Eval feature not available"));
diff --git a/src/version.c b/src/version.c
index 13dd6ba..891c5c3 100644
--- a/src/version.c
+++ b/src/version.c
@@ -726,6 +726,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 819,
+/**/
818,
/**/
817,