Patch 8.0.1451
Problem: It is difficult to set the python home directory properly for
Python 2.7 and 3.5 since both use $PYTHONHOME.
Solution: Add the 'pythonhome' and 'pythonthreehome' options. (Kazuki
Sakamoto, closes #1266)
Files: runtime/doc/options.txt, runtime/doc/quickref.txt,
runtime/optwin.vim, src/if_python.c, src/if_python3.c,
src/option.c, src/option.h
*** ../vim-8.0.1450/runtime/doc/options.txt 2018-01-31 20:51:40.297835998
+0100
--- runtime/doc/options.txt 2018-01-31 21:18:11.164009636 +0100
***************
*** 5863,5868 ****
--- 5967,5986 ----
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
+ *'pythonhome'*
+ 'pythonhome' string (default "")
+ global
+ {not in Vi}
+ {only available when compiled with the |+python/dyn|
+ feature}
+ Specifies the name of the Python 2.x home directory. When 'pythonhome'
+ and the PYTHONHOME environment variable are not set, PYTHON_HOME,
+ which was specified at compile time, will be used for the Python 2.x
+ home directory.
+ Environment variables are expanded |:set_env|.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
*'pythonthreedll'*
'pythonthreedll' string (default depends on the build)
global
***************
*** 5875,5880 ****
--- 5993,6012 ----
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
+ *'pythonthreehome'*
+ 'pythonthreehome' string (default "")
+ global
+ {not in Vi}
+ {only available when compiled with the |+python3/dyn|
+ feature}
+ Specifies the name of the Python 3 home directory. When
+ 'pythonthreehome' and the PYTHONHOME environment variable are not set,
+ PYTHON3_HOME, which was specified at compile time, will be used for
+ the Python 3 home directory.
+ Environment variables are expanded |:set_env|.
+ This option cannot be set from a |modeline| or in the |sandbox|, for
+ security reasons.
+
*'pyxversion'* *'pyx'*
'pyxversion' 'pyx' number (default depends on the build)
global
*** ../vim-8.0.1450/runtime/doc/quickref.txt 2017-03-05 17:43:10.612245634
+0100
--- runtime/doc/quickref.txt 2018-01-31 21:19:11.648106570 +0100
***************
*** 835,841 ****
--- 839,847 ----
'prompt' 'prompt' enable prompt in Ex mode
'pumheight' 'ph' maximum height of the popup menu
'pythondll' name of the Python 2 dynamic library
+ 'pythonhome' name of the Python 2 home directory
'pythonthreedll' name of the Python 3 dynamic library
+ 'pythonthreehome' name of the Python 3 home directory
'pyxversion' 'pyx' Python version used for pyx* commands
'quoteescape' 'qe' escape characters used in a string
'readonly' 'ro' disallow writing the buffer
*** ../vim-8.0.1450/runtime/optwin.vim 2017-08-19 23:17:58.321226115 +0200
--- runtime/optwin.vim 2018-01-31 21:18:11.168009645 +0100
***************
*** 1,7 ****
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <[email protected]>
! " Last Change: 2017 Aug 19
" If there already is an option window, jump to that one.
let buf = bufnr('option-window')
--- 1,7 ----
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <[email protected]>
! " Last Change: 2017 Nov 21
" If there already is an option window, jump to that one.
let buf = bufnr('option-window')
***************
*** 647,657 ****
endif
call append("$", "linespace\tnumber of pixel lines to use between
characters")
call append("$", " \tset lsp=" . &lsp)
! if has("balloon_eval")
call append("$", "balloondelay\tdelay in milliseconds before a balloon
may pop up")
call append("$", " \tset bdlay=" . &bdlay)
! call append("$", "ballooneval\twhether the balloon evaluation is to be
used")
! call <SID>BinOptionG("beval", &beval)
if has("eval")
call append("$", "balloonexpr\texpression to show in balloon eval")
call append("$", " \tset bexpr=" . &bexpr)
--- 647,663 ----
endif
call append("$", "linespace\tnumber of pixel lines to use between
characters")
call append("$", " \tset lsp=" . &lsp)
! if has("balloon_eval") || has("balloon_eval_term")
call append("$", "balloondelay\tdelay in milliseconds before a balloon
may pop up")
call append("$", " \tset bdlay=" . &bdlay)
! if has("balloon_eval")
! call append("$", "ballooneval\tuse balloon evaluation in the GUI")
! call <SID>BinOptionG("beval", &beval)
! endif
! if has("balloon_eval_term")
! call append("$", "balloonevalterm\tuse balloon evaluation in the
terminal")
! call <SID>BinOptionG("bevalterm", &beval)
! endif
if has("eval")
call append("$", "balloonexpr\texpression to show in balloon eval")
call append("$", " \tset bexpr=" . &bexpr)
***************
*** 1225,1230 ****
--- 1231,1238 ----
call append("$", "iminsert\tin Insert mode: 1: use :lmap; 2: use IM; 0:
neither")
call append("$", "\t(local to window)")
call <SID>OptionL("imi")
+ call append("$", "imstyle\tinput method style, 0: on-the-spot, 1:
over-the-spot")
+ call <SID>OptionG("imst", &imst)
call append("$", "imsearch\tentering a search pattern: 1: use :lmap; 2: use
IM; 0: neither")
call append("$", "\t(local to window)")
call <SID>OptionL("ims")
***************
*** 1346,1355 ****
--- 1354,1371 ----
call append("$", "pythondll\tname of the Python 2 dynamic library")
call <SID>OptionG("pythondll", &pythondll)
endif
+ if exists("&pythonhome")
+ call append("$", "pythonhome\tname of the Python 2 home directory")
+ call <SID>OptionG("pythonhome", &pythonhome)
+ endif
if exists("&pythonthreedll")
call append("$", "pythonthreedll\tname of the Python 3 dynamic library")
call <SID>OptionG("pythonthreedll", &pythonthreedll)
endif
+ if exists("&pythonthreehome")
+ call append("$", "pythonthreehome\tname of the Python 3 home directory")
+ call <SID>OptionG("pythonthreehome", &pythonthreehome)
+ endif
if exists("&rubydll")
call append("$", "rubydll\tname of the Ruby dynamic library")
call <SID>OptionG("rubydll", &rubydll)
***************
*** 1358,1363 ****
--- 1374,1385 ----
call append("$", "tcldll\tname of the Tcl dynamic library")
call <SID>OptionG("tcldll", &tcldll)
endif
+ if exists("&mzschemedll")
+ call append("$", "mzschemedll\tname of the Tcl dynamic library")
+ call <SID>OptionG("mzschemedll", &mzschemedll)
+ call append("$", "mzschemegcdll\tname of the Tcl GC dynamic library")
+ call <SID>OptionG("mzschemegcdll", &mzschemegcdll)
+ endif
set cpo&vim
*** ../vim-8.0.1450/src/if_python.c 2017-10-28 21:08:38.983456981 +0200
--- src/if_python.c 2018-01-31 21:39:21.583889498 +0100
***************
*** 912,917 ****
--- 912,919 ----
}
#endif
+ static char *py_home_buf = NULL;
+
static int
Python_Init(void)
{
***************
*** 929,938 ****
}
#endif
#ifdef PYTHON_HOME
! # ifdef DYNAMIC_PYTHON
! if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
! # endif
Py_SetPythonHome(PYTHON_HOME);
#endif
--- 931,945 ----
}
#endif
+ if (*p_pyhome != NUL)
+ {
+ /* The string must not change later, make a copy in static memory.
*/
+ py_home_buf = (char *)vim_strsave(p_pyhome);
+ if (py_home_buf != NULL)
+ Py_SetPythonHome(py_home_buf);
+ }
#ifdef PYTHON_HOME
! else if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
Py_SetPythonHome(PYTHON_HOME);
#endif
*** ../vim-8.0.1450/src/if_python3.c 2017-10-28 21:08:38.983456981 +0200
--- src/if_python3.c 2018-01-31 21:42:19.990861260 +0100
***************
*** 842,847 ****
--- 842,849 ----
}
#endif
+ static wchar_t *py_home_buf = NULL;
+
static int
Python3_Init(void)
{
***************
*** 857,867 ****
init_structs();
#ifdef PYTHON3_HOME
! # ifdef DYNAMIC_PYTHON3
! if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
! # endif
Py_SetPythonHome(PYTHON3_HOME);
#endif
--- 859,876 ----
init_structs();
+ if (*p_py3home != NUL)
+ {
+ size_t len = mbstowcs(NULL, (char *)p_py3home, 0) + 1;
+ /* The string must not change later, make a copy in static memory.
*/
+ py_home_buf = (wchar_t *)alloc(len * sizeof(wchar_t));
+ if (py_home_buf != NULL && mbstowcs(
+ py_home_buf, (char *)p_py3home, len) != (size_t)-1)
+ Py_SetPythonHome(py_home_buf);
+ }
#ifdef PYTHON3_HOME
! else if (mch_getenv((char_u *)"PYTHONHOME") == NULL)
Py_SetPythonHome(PYTHON3_HOME);
#endif
*** ../vim-8.0.1450/src/option.c 2017-12-05 16:57:52.230668085 +0100
--- src/option.c 2018-01-31 21:22:21.556088818 +0100
***************
*** 2248,2253 ****
--- 2248,2262 ----
{(char_u *)NULL, (char_u *)0L}
#endif
SCRIPTID_INIT},
+ {"pythonthreehome", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_PYTHON3)
+ (char_u *)&p_py3home, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
{"pythondll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
#if defined(DYNAMIC_PYTHON)
(char_u *)&p_pydll, PV_NONE,
***************
*** 2255,2260 ****
--- 2264,2278 ----
#else
(char_u *)NULL, PV_NONE,
{(char_u *)NULL, (char_u *)0L}
+ #endif
+ SCRIPTID_INIT},
+ {"pythonhome", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE,
+ #if defined(FEAT_PYTHON)
+ (char_u *)&p_pyhome, PV_NONE,
+ {(char_u *)"", (char_u *)0L}
+ #else
+ (char_u *)NULL, PV_NONE,
+ {(char_u *)NULL, (char_u *)0L}
#endif
SCRIPTID_INIT},
{"pyxversion", "pyx", P_NUM|P_VI_DEF|P_SECURE,
*** ../vim-8.0.1450/src/option.h 2017-11-25 17:14:29.608189513 +0100
--- src/option.h 2018-01-31 21:23:07.892023392 +0100
***************
*** 696,704 ****
--- 696,710 ----
#if defined(DYNAMIC_PYTHON3)
EXTERN char_u *p_py3dll; /* 'pythonthreedll' */
#endif
+ #ifdef FEAT_PYTHON3
+ EXTERN char_u *p_py3home; /* 'pythonthreehome' */
+ #endif
#if defined(DYNAMIC_PYTHON)
EXTERN char_u *p_pydll; /* 'pythondll' */
#endif
+ #ifdef FEAT_PYTHON
+ EXTERN char_u *p_pyhome; /* 'pythonhome' */
+ #endif
#if defined(FEAT_PYTHON) || defined(FEAT_PYTHON3)
EXTERN long p_pyx; /* 'pyxversion' */
#endif
*** ../vim-8.0.1450/src/version.c 2018-01-31 21:09:57.643847455 +0100
--- src/version.c 2018-01-31 21:46:56.757207791 +0100
***************
*** 773,774 ****
--- 773,776 ----
{ /* Add new patch number below this line */
+ /**/
+ 1451,
/**/
--
Life would be so much easier if we could just look at the source code.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.