patch 7.4.907
Problem: Libraries for dynamically loading interfaces can only be defined
at compile time.
Solution: Add options to specify the dll names. (Kazuki Sakamoto,
closes #452)
diff --git a/src/if_lua.c b/src/if_lua.c
index 167e865..bc2d6c3 100644
--- a/src/if_lua.c
+++ b/src/if_lua.c
@@ -402,7 +402,12 @@
int
lua_enabled(int verbose)
{
- return lua_link_init(DYNAMIC_LUA_DLL, verbose) == OK;
+#ifdef WIN3264
+ char *dll = DYNAMIC_LUA_DLL;
+#else
+ char *dll = *p_luadll ? (char *)p_luadll : DYNAMIC_LUA_DLL;
+#endif
+ return lua_link_init(dll, verbose) == OK;
}
#endif /* DYNAMIC_LUA */
diff --git a/src/if_perl.xs b/src/if_perl.xs
index 685c0ba..19292b3 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -611,7 +611,12 @@
perl_enabled(verbose)
int verbose;
{
- return perl_runtime_link_init(DYNAMIC_PERL_DLL, verbose) == OK;
+#if WIN3264
+ char *dll = DYNAMIC_PERL_DLL;
+#else
+ char *dll = *p_perldll ? (char *)p_perldll : DYNAMIC_PERL_DLL;
+#endif
+ return perl_runtime_link_init(dll, verbose) == OK;
}
#endif /* DYNAMIC_PERL */
diff --git a/src/if_python.c b/src/if_python.c
index 2ef0dfc..9d28df0 100644
--- a/src/if_python.c
+++ b/src/if_python.c
@@ -732,7 +732,12 @@
int
python_enabled(int verbose)
{
- return python_runtime_link_init(DYNAMIC_PYTHON_DLL, verbose) == OK;
+#ifdef WIN3264
+ char *dll = DYNAMIC_PYTHON_DLL;
+#else
+ char *dll = *p_pydll ? (char *)p_pydll : DYNAMIC_PYTHON_DLL;
+#endif
+ return python_runtime_link_init(dll, verbose) == OK;
}
/*
diff --git a/src/if_python3.c b/src/if_python3.c
index a6a655f..721e3cc 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -686,7 +686,12 @@
int
python3_enabled(int verbose)
{
- return py3_runtime_link_init(DYNAMIC_PYTHON3_DLL, verbose) == OK;
+#ifdef WIN3264
+ char *dll = DYNAMIC_PYTHON3_DLL;
+#else
+ char *dll = *p_py3dll ? (char *)p_py3dll : DYNAMIC_PYTHON3_DLL;
+#endif
+ return py3_runtime_link_init(dll, verbose) == OK;
}
/* Load the standard Python exceptions - don't import the symbols from the
diff --git a/src/if_ruby.c b/src/if_ruby.c
index 3767bf3..ac23878 100644
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -639,7 +639,12 @@
ruby_enabled(verbose)
int verbose;
{
- return ruby_runtime_link_init(DYNAMIC_RUBY_DLL, verbose) == OK;
+#ifdef WIN3264
+ char *dll = DYNAMIC_RUBY_DLL;
+#else
+ char *dll = *p_rubydll ? (char *)p_rubydll : DYNAMIC_RUBY_DLL;
+#endif
+ return ruby_runtime_link_init(dll, verbose) == OK;
}
#endif /* defined(DYNAMIC_RUBY) || defined(PROTO) */
diff --git a/src/option.c b/src/option.c
index d1bce6a..7c9f9c8 100644
--- a/src/option.c
+++ b/src/option.c
@@ -1779,6 +1779,11 @@
{"loadplugins", "lpl", P_BOOL|P_VI_DEF,
(char_u *)&p_lpl, PV_NONE,
{(char_u *)TRUE, (char_u *)0L} SCRIPTID_INIT},
+#if defined(DYNAMIC_LUA) && !defined(WIN3264)
+ {"luadll", NULL, P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_luadll, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+#endif
#ifdef FEAT_GUI_MAC
{"macatsui", NULL, P_BOOL|P_VI_DEF|P_RCLR,
(char_u *)&p_macatsui, PV_NONE,
@@ -2014,6 +2019,11 @@
# endif
#endif
(char_u *)0L} SCRIPTID_INIT},
+#if defined(DYNAMIC_PERL) && !defined(WIN3264)
+ {"perldll", NULL, P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_perldll, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+#endif
{"preserveindent", "pi", P_BOOL|P_VI_DEF|P_VIM,
(char_u *)&p_pi, PV_PI,
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
@@ -2119,6 +2129,16 @@
(char_u *)NULL, PV_NONE,
#endif
{(char_u *)0L, (char_u *)0L} SCRIPTID_INIT},
+#if defined(DYNAMIC_PYTHON3) && !defined(WIN3264)
+ {"python3dll", NULL, P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_py3dll, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+#endif
+#if defined(DYNAMIC_PYTHON) && !defined(WIN3264)
+ {"pythondll", NULL, P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_pydll, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+#endif
{"quoteescape", "qe", P_STRING|P_ALLOCED|P_VI_DEF,
#ifdef FEAT_TEXTOBJ
(char_u *)&p_qe, PV_QE,
@@ -2192,6 +2212,11 @@
{(char_u *)NULL, (char_u *)0L}
#endif
SCRIPTID_INIT},
+#if defined(DYNAMIC_RUBY) && !defined(WIN3264)
+ {"rubydll", NULL, P_STRING|P_VI_DEF|P_SECURE,
+ (char_u *)&p_rubydll, PV_NONE,
+ {(char_u *)"", (char_u *)0L} SCRIPTID_INIT},
+#endif
{"ruler", "ru", P_BOOL|P_VI_DEF|P_VIM|P_RSTAT,
#ifdef FEAT_CMDL_INFO
(char_u *)&p_ru, PV_NONE,
diff --git a/src/option.h b/src/option.h
index 5e655bb..739fd67 100644
--- a/src/option.h
+++ b/src/option.h
@@ -626,6 +626,9 @@
EXTERN int p_lz; /* 'lazyredraw' */
EXTERN int p_lpl; /* 'loadplugins' */
+#if defined(DYNAMIC_LUA) && !defined(WIN3264)
+EXTERN char_u *p_luadll; /* 'luadll' */
+#endif
#ifdef FEAT_GUI_MAC
EXTERN int p_macatsui; /* 'macatsui' */
#endif
@@ -682,6 +685,15 @@
#ifdef FEAT_SEARCHPATH
EXTERN char_u *p_cdpath; /* 'cdpath' */
#endif
+#if defined(DYNAMIC_PERL) && !defined(WIN3264)
+EXTERN char_u *p_perldll; /* 'perldll' */
+#endif
+#if defined(DYNAMIC_PYTHON3) && !defined(WIN3264)
+EXTERN char_u *p_py3dll; /* 'python3dll' */
+#endif
+#if defined(DYNAMIC_PYTHON) && !defined(WIN3264)
+EXTERN char_u *p_pydll; /* 'pythondll' */
+#endif
#ifdef FEAT_RELTIME
EXTERN long p_rdt; /* 'redrawtime' */
#endif
@@ -701,6 +713,9 @@
EXTERN int p_ari; /* 'allowrevins' */
EXTERN int p_ri; /* 'revins' */
#endif
+#if defined(DYNAMIC_RUBY) && !defined(WIN3264)
+EXTERN char_u *p_rubydll; /* 'rubydll' */
+#endif
#ifdef FEAT_CMDL_INFO
EXTERN int p_ru; /* 'ruler' */
#endif
diff --git a/src/version.c b/src/version.c
index 8e20841..9f55109 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 907,
+/**/
906,
/**/
905,