To: vim_dev@googlegroups.com Subject: Patch 7.4.1070 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1070 Problem: The Tcl interface can't be loaded dynamically on Unix. Solution: Make it possible to load it dynamically. (Ken Takata) Files: runtime/doc/if_tcl.txt, runtime/doc/options.txt, runtime/doc/quickref.txt, runtime/optwin.vim, src/Makefile, src/config.h.in, src/configure.in, src/auto/configure, src/if_tcl.c, src/option.c, src/option.h *** ../vim-7.4.1069/runtime/doc/if_tcl.txt 2013-08-10 13:24:55.000000000 +0200 --- runtime/doc/if_tcl.txt 2016-01-09 19:14:48.073879499 +0100 *************** *** 515,533 **** ============================================================================== 9. Dynamic loading *tcl-dynamic* ! On MS-Windows the Tcl library can be loaded dynamically. The |:version| ! output then includes |+tcl/dyn|. ! This means that Vim will search for the Tcl DLL file only when needed. When ! you don't use the Tcl interface you don't need it, thus you can use Vim ! without this DLL file. To use the Tcl interface the Tcl DLL must be in your search path. In a console window type "path" to see what directories are used. The name of the DLL must match the Tcl version Vim was compiled with. ! Currently the name is "tcl83.dll". That is for Tcl 8.3. To know for sure edit "gvim.exe" and search for "tcl\d*.dll\c". ============================================================================== vim:tw=78:ts=8:ft=help:norl: --- 515,543 ---- ============================================================================== 9. Dynamic loading *tcl-dynamic* ! On MS-Windows and Unix the Tcl library can be loaded dynamically. The ! |:version| output then includes |+tcl/dyn|. ! This means that Vim will search for the Tcl DLL or shared library file only ! when needed. When you don't use the Tcl interface you don't need it, thus you ! can use Vim without this file. ! ! ! MS-Windows ~ To use the Tcl interface the Tcl DLL must be in your search path. In a console window type "path" to see what directories are used. The name of the DLL must match the Tcl version Vim was compiled with. ! Currently the name is "tcl86.dll". That is for Tcl 8.6. To know for sure edit "gvim.exe" and search for "tcl\d*.dll\c". + + Unix ~ + + The 'tcldll' option can be used to specify the Tcl shared library file instead + of DYNAMIC_TCL_DLL file what was specified at compile time. The version of + the shared library must match the Tcl version Vim was compiled with. + ============================================================================== vim:tw=78:ts=8:ft=help:norl: *** ../vim-7.4.1069/runtime/doc/options.txt 2016-01-09 14:57:10.512884859 +0100 --- runtime/doc/options.txt 2016-01-09 19:16:24.952826990 +0100 *************** *** 7397,7402 **** --- 7437,7453 ---- Resetting this option is useful when using a ":tag" command in a mapping which should not change the tagstack. + *'tcldll'* + 'tcldll' string (default depends on the build) + global + {not in Vi} + {only available when compiled with the |+tcl/dyn| + feature} + Specifies the name of the Tcl shared library. The default is + DYNAMIC_TCL_DLL, which was specified at compile time. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'term'* *E529* *E530* *E531* 'term' string (default is $TERM, if that fails: in the GUI: "builtin_gui" *** ../vim-7.4.1069/runtime/doc/quickref.txt 2015-11-24 18:45:52.633647066 +0100 --- runtime/doc/quickref.txt 2016-01-09 19:14:48.073879499 +0100 *************** *** 772,777 **** --- 777,783 ---- 'list' show and 'listchars' 'lcs' characters for displaying in list mode 'loadplugins' 'lpl' load plugin scripts when starting up + 'luadll' name of the Lua dynamic library 'macatsui' Mac GUI: use ATSUI text drawing 'magic' changes special characters in search patterns 'makeef' 'mef' name of the errorfile for ":make" *************** *** 811,816 **** --- 817,823 ---- 'patchexpr' 'pex' expression used to patch a file 'patchmode' 'pm' keep the oldest version of a file 'path' 'pa' list of directories searched with "gf" et.al. + 'perldll' name of the Perl dynamic library 'preserveindent' 'pi' preserve the indent structure when reindenting 'previewheight' 'pvh' height of the preview window 'previewwindow' 'pvw' identifies the preview window *************** *** 823,839 **** --- 830,850 ---- 'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy 'printoptions' 'popt' controls the format of :hardcopy output 'pumheight' 'ph' maximum height of the popup menu + 'pythondll' name of the Python 2 dynamic library + 'pythonthreedll' name of the Python 3 dynamic library 'quoteescape' 'qe' escape characters used in a string 'readonly' 'ro' disallow writing the buffer 'redrawtime' 'rdt' timeout for 'hlsearch' and |:match| highlighting 'regexpengine' 're' default regexp engine to use 'relativenumber' 'rnu' show relative line number in front of each line 'remap' allow mappings to work recursively + 'renderoptions' 'rop' options for text rendering on Windows 'report' threshold for reporting nr. of lines changed 'restorescreen' 'rs' Win32: restore screen when exiting 'revins' 'ri' inserting characters will work backwards 'rightleft' 'rl' window is right-to-left oriented 'rightleftcmd' 'rlc' commands for which editing works right-to-left + 'rubydll' name of the Ruby dynamic library 'ruler' 'ru' show cursor line and column in the status line 'rulerformat' 'ruf' custom format for the ruler 'runtimepath' 'rtp' list of directories used for runtime files *************** *** 898,903 **** --- 909,915 ---- 'tagrelative' 'tr' file names in tag file are relative 'tags' 'tag' list of file names used by the tag command 'tagstack' 'tgst' push tags onto the tag stack + 'tcldll' name of the Tcl dynamic library 'term' name of the terminal 'termbidi' 'tbidi' terminal takes care of bi-directionality 'termencoding' 'tenc' character encoding used by the terminal *** ../vim-7.4.1069/runtime/optwin.vim 2016-01-07 16:51:59.603421970 +0100 --- runtime/optwin.vim 2016-01-09 19:14:48.077879455 +0100 *************** *** 1331,1336 **** --- 1331,1340 ---- call append("$", "rubydll\tname of the Ruby dynamic library") call OptionG("rubydll", &rubydll) endif + if exists("&tcldll") + call append("$", "tcldll\tname of the Tcl dynamic library") + call OptionG("tcldll", &tcldll) + endif set cpo&vim *** ../vim-7.4.1069/src/Makefile 2016-01-09 14:57:10.512884859 +0100 --- src/Makefile 2016-01-09 19:37:45.582918805 +0100 *************** *** 445,451 **** --- 445,453 ---- # TCL # Uncomment this when you want to include the Tcl interface. + # First one is for static linking, second one for dynamic loading. #CONF_OPT_TCL = --enable-tclinterp + #CONF_OPT_TCL = --enable-tclinterp=dynamic #CONF_OPT_TCL = --enable-tclinterp --with-tclsh=tclsh8.4 # CSCOPE *************** *** 1375,1381 **** .SUFFIXES: .c .o .pro PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) ! POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS) ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(SANITIZER_CFLAGS) $(LEAK_CFLAGS) $(POST_DEFS) --- 1377,1383 ---- .SUFFIXES: .c .o .pro PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS) ! POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(EXTRA_DEFS) ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(SANITIZER_CFLAGS) $(LEAK_CFLAGS) $(POST_DEFS) *************** *** 1383,1389 **** # with "-E". OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) ! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" --- 1385,1391 ---- # with "-E". OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS) ! LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) $(TCL_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)=" *************** *** 2756,2762 **** $(CCC) -o $@ if_sniff.c objects/if_tcl.o: if_tcl.c ! $(CCC) -o $@ if_tcl.c objects/integration.o: integration.c $(CCC) -o $@ integration.c --- 2758,2764 ---- $(CCC) -o $@ if_sniff.c objects/if_tcl.o: if_tcl.c ! $(CCC) $(TCL_CFLAGS) -o $@ if_tcl.c objects/integration.o: integration.c $(CCC) -o $@ integration.c *************** *** 2801,2807 **** $(CCC) -o $@ ops.c objects/option.o: option.c ! $(CCC) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) $(RUBY_CFLAGS) -o $@ option.c objects/os_beos.o: os_beos.c $(CCC) -o $@ os_beos.c --- 2803,2809 ---- $(CCC) -o $@ ops.c objects/option.o: option.c ! $(CCC) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) $(PYTHON3_CFLAGS) $(RUBY_CFLAGS) $(TCL_CFLAGS) -o $@ option.c objects/os_beos.o: os_beos.c $(CCC) -o $@ os_beos.c *** ../vim-7.4.1069/src/config.h.in 2015-12-29 18:52:33.344054429 +0100 --- src/config.h.in 2016-01-09 19:14:48.077879455 +0100 *************** *** 360,365 **** --- 360,368 ---- /* Define if you want to include the Tcl interpreter. */ #undef FEAT_TCL + /* Define for linking via dlopen() or LoadLibrary() */ + #undef DYNAMIC_TCL + /* Define if you want to include the Sniff interface. */ #undef FEAT_SNIFF *** ../vim-7.4.1069/src/configure.in 2016-01-02 22:46:33.037000177 +0100 --- src/configure.in 2016-01-09 19:14:48.077879455 +0100 *************** *** 1622,1632 **** AC_MSG_CHECKING(--enable-tclinterp argument) AC_ARG_ENABLE(tclinterp, ! [ --enable-tclinterp Include Tcl interpreter.], , [enable_tclinterp="no"]) AC_MSG_RESULT($enable_tclinterp) ! if test "$enable_tclinterp" = "yes"; then dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420] AC_MSG_CHECKING(--with-tclsh argument) --- 1622,1632 ---- AC_MSG_CHECKING(--enable-tclinterp argument) AC_ARG_ENABLE(tclinterp, ! [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], , [enable_tclinterp="no"]) AC_MSG_RESULT($enable_tclinterp) ! if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420] AC_MSG_CHECKING(--with-tclsh argument) *************** *** 1660,1665 **** --- 1660,1666 ---- tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -` AC_MSG_RESULT($tclver - OK); tclloc=`echo 'set l [[info library]];set i [[string last lib $l]];incr i -2;puts [[string range $l 0 $i]]' | $vi_cv_path_tcl -` + tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -` AC_MSG_CHECKING(for location of Tcl include) if test "x$MACOSX" != "xyes"; then *************** *** 1694,1700 **** AC_MSG_RESULT($try/tclConfig.sh) . "$try/tclConfig.sh" dnl use eval, because tcl 8.2 includes ${TCL_DBGX} ! TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"` dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the dnl "-D_ABC" items. Watch out for -DFOO=long\ long. TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'` --- 1695,1705 ---- AC_MSG_RESULT($try/tclConfig.sh) . "$try/tclConfig.sh" dnl use eval, because tcl 8.2 includes ${TCL_DBGX} ! if test "$enable_tclinterp" = "dynamic"; then ! TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"` ! else ! TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"` ! fi dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the dnl "-D_ABC" items. Watch out for -DFOO=long\ long. TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'` *************** *** 1739,1744 **** --- 1744,1755 ---- AC_MSG_RESULT(too old; need Tcl version 8.0 or later) fi fi + if test "$enable_tclinterp" = "dynamic"; then + if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then + AC_DEFINE(DYNAMIC_TCL) + TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS" + fi + fi if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then AC_MSG_ERROR([could not configure Tcl]) fi *** ../vim-7.4.1069/src/auto/configure 2016-01-02 22:46:33.037000177 +0100 --- src/auto/configure 2016-01-09 19:18:06.527722873 +0100 *************** *** 1468,1474 **** --enable-perlinterp=OPTS Include Perl interpreter. default=no OPTS=no/yes/dynamic --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic ! --enable-tclinterp Include Tcl interpreter. --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic --enable-cscope Include cscope interface. --enable-workshop Include Sun Visual Workshop support. --- 1468,1474 ---- --enable-perlinterp=OPTS Include Perl interpreter. default=no OPTS=no/yes/dynamic --enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic --enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic ! --enable-tclinterp=OPTS Include Tcl interpreter. default=no OPTS=no/yes/dynamic --enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic --enable-cscope Include cscope interface. --enable-workshop Include Sun Visual Workshop support. *************** *** 6616,6622 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tclinterp" >&5 $as_echo "$enable_tclinterp" >&6; } ! if test "$enable_tclinterp" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-tclsh argument" >&5 $as_echo_n "checking --with-tclsh argument... " >&6; } --- 6616,6622 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tclinterp" >&5 $as_echo "$enable_tclinterp" >&6; } ! if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking --with-tclsh argument" >&5 $as_echo_n "checking --with-tclsh argument... " >&6; } *************** *** 6852,6857 **** --- 6852,6858 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $tclver - OK" >&5 $as_echo "$tclver - OK" >&6; }; tclloc=`echo 'set l [info library];set i [string last lib $l];incr i -2;puts [string range $l 0 $i]' | $vi_cv_path_tcl -` + tcldll=`echo 'puts libtcl[info tclversion][info sharedlibextension]' | $vi_cv_path_tcl -` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for location of Tcl include" >&5 $as_echo_n "checking for location of Tcl include... " >&6; } *************** *** 6888,6894 **** { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5 $as_echo "$try/tclConfig.sh" >&6; } . "$try/tclConfig.sh" ! TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"` TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[^-]/d' -e '/^-[^D]/d' -e '/-D[^_]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'` break fi --- 6889,6899 ---- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $try/tclConfig.sh" >&5 $as_echo "$try/tclConfig.sh" >&6; } . "$try/tclConfig.sh" ! if test "$enable_tclinterp" = "dynamic"; then ! TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"` ! else ! TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"` ! fi TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[^-]/d' -e '/^-[^D]/d' -e '/-D[^_]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'` break fi *************** *** 6937,6942 **** --- 6942,6954 ---- $as_echo "too old; need Tcl version 8.0 or later" >&6; } fi fi + if test "$enable_tclinterp" = "dynamic"; then + if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then + $as_echo "#define DYNAMIC_TCL 1" >>confdefs.h + + TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS" + fi + fi if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then as_fn_error $? "could not configure Tcl" "$LINENO" 5 fi *** ../vim-7.4.1069/src/if_tcl.c 2015-07-21 17:53:11.577527989 +0200 --- src/if_tcl.c 2016-01-09 19:31:16.651138527 +0100 *************** *** 160,165 **** --- 160,179 ---- typedef int HANDLE; # endif + # ifndef WIN3264 + # include + # define HANDLE void* + # define TCL_PROC void* + # define load_dll(n) dlopen((n), RTLD_LAZY|RTLD_GLOBAL) + # define symbol_from_dll dlsym + # define close_dll dlclose + # else + # define TCL_PROC FARPROC + # define load_dll vimLoadLib + # define symbol_from_dll GetProcAddress + # define close_dll FreeLibrary + # endif + /* * Declare HANDLE for tcl.dll and function pointers. */ *************** *** 170,176 **** /* * Table of name to function pointer of tcl. */ - #define TCL_PROC FARPROC static struct { char* name; TCL_PROC* ptr; --- 184,189 ---- *************** *** 197,203 **** if (hTclLib) return OK; ! if (!(hTclLib = vimLoadLib(libname))) { if (verbose) EMSG2(_(e_loadlib), libname); --- 210,216 ---- if (hTclLib) return OK; ! if (!(hTclLib = load_dll(libname))) { if (verbose) EMSG2(_(e_loadlib), libname); *************** *** 205,214 **** } for (i = 0; tcl_funcname_table[i].ptr; ++i) { ! if (!(*tcl_funcname_table[i].ptr = GetProcAddress(hTclLib, tcl_funcname_table[i].name))) { ! FreeLibrary(hTclLib); hTclLib = NULL; if (verbose) EMSG2(_(e_loadfunc), tcl_funcname_table[i].name); --- 218,227 ---- } for (i = 0; tcl_funcname_table[i].ptr; ++i) { ! if (!(*tcl_funcname_table[i].ptr = symbol_from_dll(hTclLib, tcl_funcname_table[i].name))) { ! close_dll(hTclLib); hTclLib = NULL; if (verbose) EMSG2(_(e_loadfunc), tcl_funcname_table[i].name); *************** *** 246,258 **** int verbose; { if (!stubs_initialized && find_executable_arg != NULL ! && tcl_runtime_link_init(DYNAMIC_TCL_DLL, verbose) == OK) { Tcl_Interp *interp; dll_Tcl_FindExecutable(find_executable_arg); ! if (interp = dll_Tcl_CreateInterp()) { if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0)) { --- 259,271 ---- int verbose; { if (!stubs_initialized && find_executable_arg != NULL ! && tcl_runtime_link_init((char *)p_tcldll, verbose) == OK) { Tcl_Interp *interp; dll_Tcl_FindExecutable(find_executable_arg); ! if ((interp = dll_Tcl_CreateInterp()) != NULL) { if (Tcl_InitStubs(interp, DYNAMIC_TCL_VER, 0)) { *************** *** 272,278 **** #ifdef DYNAMIC_TCL if (hTclLib) { ! FreeLibrary(hTclLib); hTclLib = NULL; } #endif --- 285,291 ---- #ifdef DYNAMIC_TCL if (hTclLib) { ! close_dll(hTclLib); hTclLib = NULL; } #endif *************** *** 2039,2044 **** --- 2052,2061 ---- int err; char *result; + /* TODO: this code currently crashes Vim on exit */ + if (exiting) + return; + while (ref != NULL) { next = ref->next; *** ../vim-7.4.1069/src/option.c 2016-01-09 14:57:10.508884902 +0100 --- src/option.c 2016-01-09 19:16:58.932457617 +0100 *************** *** 2609,2614 **** --- 2609,2620 ---- {"tagstack", "tgst", P_BOOL|P_VI_DEF, (char_u *)&p_tgst, PV_NONE, {(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT}, + #if defined(DYNAMIC_TCL) + {"tcldll", NULL, P_STRING|P_VI_DEF|P_SECURE, + (char_u *)&p_tcldll, PV_NONE, + {(char_u *)DYNAMIC_TCL_DLL, (char_u *)0L} + SCRIPTID_INIT}, + #endif {"term", NULL, P_STRING|P_EXPAND|P_NODEFAULT|P_NO_MKRC|P_VI_DEF|P_RALL, (char_u *)&T_NAME, PV_NONE, {(char_u *)"", (char_u *)0L} SCRIPTID_INIT}, *** ../vim-7.4.1069/src/option.h 2016-01-09 15:07:58.601921984 +0100 --- src/option.h 2016-01-09 19:14:48.081879412 +0100 *************** *** 832,837 **** --- 832,840 ---- EXTERN int p_tr; /* 'tagrelative' */ EXTERN char_u *p_tags; /* 'tags' */ EXTERN int p_tgst; /* 'tagstack' */ + #if defined(DYNAMIC_TCL) + EXTERN char_u *p_tcldll; /* 'tcldll' */ + #endif #ifdef FEAT_ARABIC EXTERN int p_tbidi; /* 'termbidi' */ #endif *** ../vim-7.4.1069/src/version.c 2016-01-09 18:52:36.364327705 +0100 --- src/version.c 2016-01-09 19:34:31.925018949 +0100 *************** *** 743,744 **** --- 743,746 ---- { /* Add new patch number below this line */ + /**/ + 1070, /**/ -- [The rest of the ARMY stand around looking at a loss.] INSPECTOR END OF FILM: (picks up megaphone) All right! Clear off! Go on! "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 ///