| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.819 |
| 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.819 |
| Problem: Compiling without +eval and with Python isn't working. |
| Solution: Add the eval feature when building with Python. |
| Files: src/if_py_both.h, src/feature.h, src/eval.c, src/ex_docmd.c, |
| src/normal.c, src/gui_gtk_x11.c |
| |
| |
| |
| |
| |
| *** 310,316 **** |
| return result; |
| } |
| |
| - #ifdef FEAT_EVAL |
| /* |
| * Function to translate a typval_T into a PyObject; this will recursively |
| * translate lists/dictionaries into their Python equivalents. |
| --- 310,315 ---- |
| |
| *** 425,436 **** |
| |
| return result; |
| } |
| - #endif |
| |
| static PyObject * |
| VimEval(PyObject *self UNUSED, PyObject *args UNUSED) |
| { |
| - #ifdef FEAT_EVAL |
| char *expr; |
| typval_T *our_tv; |
| PyObject *result; |
| --- 424,433 ---- |
| |
| *** 466,475 **** |
| Py_END_ALLOW_THREADS |
| |
| return result; |
| - #else |
| - PyErr_SetVim(_("expressions disabled at compile time")); |
| - return NULL; |
| - #endif |
| } |
| |
| static PyObject *ConvertToPyObject(typval_T *); |
| --- 463,468 ---- |
| |
| *** 477,483 **** |
| static PyObject * |
| VimEvalPy(PyObject *self UNUSED, PyObject *args UNUSED) |
| { |
| - #ifdef FEAT_EVAL |
| char *expr; |
| typval_T *our_tv; |
| PyObject *result; |
| --- 470,475 ---- |
| |
| *** 506,515 **** |
| Py_END_ALLOW_THREADS |
| |
| return result; |
| - #else |
| - PyErr_SetVim(_("expressions disabled at compile time")); |
| - return NULL; |
| - #endif |
| } |
| |
| static PyObject * |
| --- 498,503 ---- |
| |
| *** 946,952 **** |
| } |
| |
| static PyObject * |
| ! DictionaryListKeys(PyObject *self) |
| { |
| dict_T *dict = ((DictionaryObject *)(self))->dict; |
| long_u todo = dict->dv_hashtab.ht_used; |
| --- 934,940 ---- |
| } |
| |
| static PyObject * |
| ! DictionaryListKeys(PyObject *self UNUSED) |
| { |
| dict_T *dict = ((DictionaryObject *)(self))->dict; |
| long_u todo = dict->dv_hashtab.ht_used; |
| |
| *** 2549,2555 **** |
| return 0; |
| } |
| |
| - #ifdef FEAT_EVAL |
| typedef int (*pytotvfunc)(PyObject *, typval_T *, PyObject *); |
| |
| static int |
| --- 2537,2542 ---- |
| |
| *** 2781,2784 **** |
| return NULL; |
| } |
| } |
| - #endif |
| --- 2768,2770 ---- |
| |
| |
| |
| *** 392,397 **** |
| --- 392,404 ---- |
| #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) \ |
| |
| |
| |
| *** 917,923 **** |
| --- 917,925 ---- |
| hash_clear(&compat_hashtab); |
| |
| free_scriptnames(); |
| + # if defined(FEAT_CMDL_COMPL) |
| free_locales(); |
| + # endif |
| |
| /* global variables */ |
| vars_clear(&globvarht); |
| |
| *** 1561,1568 **** |
| } |
| |
| |
| - #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 |
| --- 1563,1568 ---- |
| |
| *** 1640,1692 **** |
| return ret; |
| } |
| |
| - # if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) |
| /* |
| ! * Call vimL function "func" and return the result as a string. |
| ! * Returns NULL when calling the function fails. |
| * Uses argv[argc] for the function arguments. |
| */ |
| ! void * |
| ! call_func_retstr(func, argc, argv, safe) |
| char_u *func; |
| int argc; |
| char_u **argv; |
| int safe; /* use the sandbox */ |
| { |
| typval_T rettv; |
| ! char_u *retval; |
| |
| /* All arguments are passed as strings, no conversion to number. */ |
| if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) |
| ! return NULL; |
| |
| ! retval = vim_strsave(get_tv_string(&rettv)); |
| clear_tv(&rettv); |
| return retval; |
| } |
| - # 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; |
| } |
| --- 1640,1693 ---- |
| 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. |
| ! * Returns NULL when calling the function fails. |
| * Uses argv[argc] for the function arguments. |
| */ |
| ! void * |
| ! call_func_retstr(func, argc, argv, safe) |
| char_u *func; |
| int argc; |
| char_u **argv; |
| int safe; /* use the sandbox */ |
| { |
| typval_T rettv; |
| ! char_u *retval; |
| |
| /* All arguments are passed as strings, no conversion to number. */ |
| if (call_vim_function(func, argc, argv, safe, TRUE, &rettv) == FAIL) |
| ! return NULL; |
| |
| ! retval = vim_strsave(get_tv_string(&rettv)); |
| clear_tv(&rettv); |
| return retval; |
| } |
| |
| *** 1720,1726 **** |
| } |
| #endif |
| |
| - |
| /* |
| * Save the current function call pointer, and set it to NULL. |
| * Used when executing autocommands and for ":source". |
| --- 1721,1726 ---- |
| |
| *** 9330,9336 **** |
| */ |
| static void |
| f_cindent(argvars, rettv) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_CINDENT |
| --- 9330,9336 ---- |
| */ |
| static void |
| f_cindent(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_CINDENT |
| |
| *** 10379,10387 **** |
| |
| static void |
| findfilendir(argvars, rettv, find_what) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| ! int find_what; |
| { |
| #ifdef FEAT_SEARCHPATH |
| char_u *fname; |
| --- 10379,10387 ---- |
| |
| static void |
| findfilendir(argvars, rettv, find_what) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| ! int find_what UNUSED; |
| { |
| #ifdef FEAT_SEARCHPATH |
| char_u *fname; |
| |
| *** 10751,10759 **** |
| */ |
| static void |
| foldclosed_both(argvars, rettv, end) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| ! int end; |
| { |
| #ifdef FEAT_FOLDING |
| linenr_T lnum; |
| --- 10751,10759 ---- |
| */ |
| static void |
| foldclosed_both(argvars, rettv, end) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| ! int end UNUSED; |
| { |
| #ifdef FEAT_FOLDING |
| linenr_T lnum; |
| |
| *** 10802,10809 **** |
| */ |
| static void |
| f_foldlevel(argvars, rettv) |
| ! typval_T *argvars; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_FOLDING |
| linenr_T lnum; |
| --- 10802,10809 ---- |
| */ |
| static void |
| f_foldlevel(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_FOLDING |
| linenr_T lnum; |
| |
| *** 11583,11589 **** |
| static void |
| f_getmatches(argvars, rettv) |
| typval_T *argvars UNUSED; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| dict_T *dict; |
| --- 11583,11589 ---- |
| static void |
| f_getmatches(argvars, rettv) |
| typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| dict_T *dict; |
| |
| *** 13589,13595 **** |
| */ |
| static void |
| f_lispindent(argvars, rettv) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_LISP |
| --- 13589,13595 ---- |
| */ |
| static void |
| f_lispindent(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_LISP |
| |
| *** 13983,13990 **** |
| */ |
| static void |
| f_matchadd(argvars, rettv) |
| ! typval_T *argvars; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| char_u buf[NUMBUFLEN]; |
| --- 13983,13990 ---- |
| */ |
| static void |
| f_matchadd(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| char_u buf[NUMBUFLEN]; |
| |
| *** 14021,14027 **** |
| */ |
| static void |
| f_matcharg(argvars, rettv) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| { |
| if (rettv_list_alloc(rettv) == OK) |
| --- 14021,14027 ---- |
| */ |
| static void |
| f_matcharg(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| { |
| if (rettv_list_alloc(rettv) == OK) |
| |
| *** 14053,14060 **** |
| */ |
| static void |
| f_matchdelete(argvars, rettv) |
| ! typval_T *argvars; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| rettv->vval.v_number = match_delete(curwin, |
| --- 14053,14060 ---- |
| */ |
| static void |
| f_matchdelete(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| rettv->vval.v_number = match_delete(curwin, |
| |
| *** 14871,14878 **** |
| */ |
| static void |
| f_reltime(argvars, rettv) |
| ! typval_T *argvars; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_RELTIME |
| proftime_T res; |
| --- 14871,14878 ---- |
| */ |
| static void |
| f_reltime(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_RELTIME |
| proftime_T res; |
| |
| *** 14920,14926 **** |
| */ |
| static void |
| f_reltimestr(argvars, rettv) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_RELTIME |
| --- 14920,14926 ---- |
| */ |
| static void |
| f_reltimestr(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| { |
| #ifdef FEAT_RELTIME |
| |
| *** 15965,15971 **** |
| 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 */ |
| { |
| char_u *save_cpo; |
| char_u *pat, *pat2 = NULL, *pat3 = NULL; |
| --- 15965,15971 ---- |
| 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 UNUSED; /* stop after this many msec */ |
| { |
| char_u *save_cpo; |
| char_u *pat, *pat2 = NULL, *pat3 = NULL; |
| |
| *** 16390,16397 **** |
| */ |
| static void |
| f_setmatches(argvars, rettv) |
| ! typval_T *argvars; |
| ! typval_T *rettv; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| list_T *l; |
| --- 16390,16397 ---- |
| */ |
| static void |
| f_setmatches(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| ! typval_T *rettv UNUSED; |
| { |
| #ifdef FEAT_SEARCH_EXTRA |
| list_T *l; |
| |
| *** 18463,18469 **** |
| */ |
| static void |
| f_undofile(argvars, rettv) |
| ! typval_T *argvars; |
| typval_T *rettv; |
| { |
| rettv->v_type = VAR_STRING; |
| --- 18463,18469 ---- |
| */ |
| static void |
| f_undofile(argvars, rettv) |
| ! typval_T *argvars UNUSED; |
| typval_T *rettv; |
| { |
| rettv->v_type = VAR_STRING; |
| |
| |
| |
| *** 1734,1739 **** |
| --- 1734,1741 ---- |
| #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,5381 **** |
| --- 5377,5385 ---- |
| #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,5436 **** |
| --- 5434,5442 ---- |
| {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,6384 **** |
| int vallen; |
| int *complp; |
| long *argt; |
| ! char_u **compl_arg; |
| { |
| char_u *arg = NULL; |
| size_t arglen = 0; |
| int i; |
| int valend = vallen; |
| |
| --- 6381,6392 ---- |
| int vallen; |
| int *complp; |
| long *argt; |
| ! 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,6394 **** |
| --- 6396,6404 ---- |
| if (value[i] == ',') |
| { |
| arg = &value[i + 1]; |
| + # if defined(FEAT_EVAL) && defined(FEAT_CMDL_COMPL) |
| arglen = vallen - i - 1; |
| + # endif |
| valend = i; |
| break; |
| } |
| |
| |
| |
| *** 2292,2298 **** |
| --- 2292,2300 ---- |
| { |
| #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,2324 **** |
| --- 2314,2330 ---- |
| 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")); |
| |
| |
| |
| *** 5164,5171 **** |
| return FAIL; |
| } |
| |
| ! #if defined(FEAT_TITLE) \ |
| ! || defined(PROTO) |
| /* |
| * Return the text window-id and display. Only required for X-based GUI's |
| */ |
| --- 5164,5170 ---- |
| return FAIL; |
| } |
| |
| ! #if defined(FEAT_TITLE) || defined(FEAT_EVAL) || defined(PROTO) |
| /* |
| * Return the text window-id and display. Only required for X-based GUI's |
| */ |
| |
| |
| |
| *** 727,728 **** |
| --- 727,730 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 819, |
| /**/ |
| |
| -- |
| (letter from Mark to Mike, about the film's probable certificate) |
| For an 'A' we would have to: Lose as many shits as possible; Take Jesus |
| Christ out, if possible; Loose "I fart in your general direction"; Lose |
| "the oral sex"; Lose "oh, fuck off"; Lose "We make castanets out of your |
| testicles" |
| "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD |
| |
| /// 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 /// |