diff options
author | Rui Abreu Ferreira <raf-ep@gmx.com> | 2014-11-13 10:15:00 +0000 |
---|---|---|
committer | Seth Jackson <sethjackson@gmail.com> | 2015-12-08 22:55:40 -0500 |
commit | 3abbdb2f414be25a018c91a506ed4d5ecef5a08f (patch) | |
tree | 4a15c6b8f91ae09779706ca15c8e7a654bfebf97 | |
parent | 6d583f85875499fbe05b549a1c0ac57b9ededd3d (diff) | |
download | rneovim-3abbdb2f414be25a018c91a506ed4d5ecef5a08f.tar.gz rneovim-3abbdb2f414be25a018c91a506ed4d5ecef5a08f.tar.bz2 rneovim-3abbdb2f414be25a018c91a506ed4d5ecef5a08f.zip |
Windows: Define HOME environment variable
- Bring back Vim code for settings $HOME in Windows from
$HOMEDRIVE$HOMEPATH
- vim-patch:0
-rw-r--r-- | src/nvim/os/env.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index bf6db97fcf..0e052ced55 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -141,6 +141,27 @@ void init_homedir(void) char_u *var = (char_u *)os_getenv("HOME"); +#ifdef WIN32 + // Typically, $HOME is not defined on Windows, unless the user has + // specifically defined it for Vim's sake. However, on Windows NT + // platforms, $HOMEDRIVE and $HOMEPATH are automatically defined for + // each user. Try constructing $HOME from these. + if (var == NULL) { + const char *homedrive = os_getenv("HOMEDRIVE"); + const char *homepath = os_getenv("HOMEPATH"); + if (homepath == NULL) { + homepath = "\\"; + } + if (homedrive != NULL && strlen(homedrive) + strlen(homepath) < MAXPATHL) { + snprintf((char *)NameBuff, MAXPATHL, "%s%s", homedrive, homepath); + if (NameBuff[0] != NUL) { + var = NameBuff; + vim_setenv("HOME", (char *)NameBuff); + } + } + } +#endif + if (var != NULL) { #ifdef UNIX /* |