diff options
Diffstat (limited to 'src/nvim/os/stdpaths.c')
-rw-r--r-- | src/nvim/os/stdpaths.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/nvim/os/stdpaths.c b/src/nvim/os/stdpaths.c index a382392bd3..5576e7ba07 100644 --- a/src/nvim/os/stdpaths.c +++ b/src/nvim/os/stdpaths.c @@ -4,6 +4,7 @@ #include <stdbool.h> #include "nvim/ascii.h" +#include "nvim/fileio.h" #include "nvim/memory.h" #include "nvim/os/os.h" #include "nvim/os/stdpaths_defs.h" @@ -26,7 +27,7 @@ static const char *const xdg_defaults_env_vars[] = { [kXDGDataHome] = "LOCALAPPDATA", [kXDGCacheHome] = "TEMP", [kXDGStateHome] = "LOCALAPPDATA", - [kXDGRuntimeDir] = NULL, + [kXDGRuntimeDir] = NULL, // Decided by vim_mktempdir(). [kXDGConfigDirs] = NULL, [kXDGDataDirs] = NULL, }; @@ -41,7 +42,7 @@ static const char *const xdg_defaults[] = { [kXDGDataHome] = "~\\AppData\\Local", [kXDGCacheHome] = "~\\AppData\\Local\\Temp", [kXDGStateHome] = "~\\AppData\\Local", - [kXDGRuntimeDir] = NULL, + [kXDGRuntimeDir] = NULL, // Decided by vim_mktempdir(). [kXDGConfigDirs] = NULL, [kXDGDataDirs] = NULL, #else @@ -49,7 +50,7 @@ static const char *const xdg_defaults[] = { [kXDGDataHome] = "~/.local/share", [kXDGCacheHome] = "~/.cache", [kXDGStateHome] = "~/.local/state", - [kXDGRuntimeDir] = NULL, + [kXDGRuntimeDir] = NULL, // Decided by vim_mktempdir(). [kXDGConfigDirs] = "/etc/xdg/", [kXDGDataDirs] = "/usr/local/share/:/usr/share/", #endif @@ -83,6 +84,11 @@ char *stdpaths_get_xdg_var(const XDGVarType idx) ret = xstrdup(env_val); } else if (fallback) { ret = expand_env_save((char *)fallback); + } else if (idx == kXDGRuntimeDir) { + // Special-case: stdpath('run') is defined at startup. + ret = vim_gettempdir(); + size_t len = strlen(ret); + ret = xstrndup(ret, len >= 2 ? len - 1 : 0); // Trim trailing slash. } return ret; |