aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/shada.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/shada.c')
-rw-r--r--src/nvim/shada.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/nvim/shada.c b/src/nvim/shada.c
index 523f8db6f0..6fd13a88b7 100644
--- a/src/nvim/shada.c
+++ b/src/nvim/shada.c
@@ -1583,6 +1583,20 @@ shada_read_main_cycle_end:
kh_dealloc(strset, &oldfiles_set);
}
+/// Default shada file location: cached path
+static char *default_shada_file = NULL;
+
+/// Get the default ShaDa file
+static const char *shada_get_default_file(void)
+ FUNC_ATTR_WARN_UNUSED_RESULT
+{
+ if (default_shada_file == NULL) {
+ char *shada_dir = stdpaths_user_data_subpath("shada");
+ default_shada_file = concat_fnames_realloc(shada_dir, "main.shada", true);
+ }
+ return default_shada_file;
+}
+
/// Get the ShaDa file name to use
///
/// If "file" is given and not empty, use it (has already been expanded by
@@ -1608,11 +1622,11 @@ static char *shada_filename(const char *file)
if (STRCMP("$VIM", NameBuff) != 0) { // $VIM was expanded
file = SHADA_FILE2;
} else {
- file = SHADA_FILE;
+ file = shada_get_default_file();
}
} else {
#endif
- file = SHADA_FILE;
+ file = shada_get_default_file();
#ifdef SHADA_FILE2
}
#endif