diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index fa3e538ca6..76f404ebe2 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1244,12 +1244,11 @@ A jump table for the options with a short description can be found at |Q_op|. This probably only matters for Turkish. *'cdhome'* *'cdh'* *'nocdhome'* *'nocdh'* -'cdhome' 'cdh' boolean (default off) +'cdhome' 'cdh' boolean (default on on Unix, off on Windows) global When on, |:cd|, |:tcd| and |:lcd| without an argument changes the current working directory to the |$HOME| directory like in Unix. When off, those commands just print the current directory name. - On Unix this option has no effect. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. diff --git a/runtime/lua/vim/_meta/options.lua b/runtime/lua/vim/_meta/options.lua index b30a84e4bd..c7116757de 100644 --- a/runtime/lua/vim/_meta/options.lua +++ b/runtime/lua/vim/_meta/options.lua @@ -700,12 +700,11 @@ vim.go.cmp = vim.go.casemap --- When on, `:cd`, `:tcd` and `:lcd` without an argument changes the --- current working directory to the `$HOME` directory like in Unix. --- When off, those commands just print the current directory name. ---- On Unix this option has no effect. --- This option cannot be set from a `modeline` or in the `sandbox`, for --- security reasons. --- --- @type boolean -vim.o.cdhome = false +vim.o.cdhome = true vim.o.cdh = vim.o.cdhome vim.go.cdhome = vim.o.cdhome vim.go.cdh = vim.go.cdhome diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c index b28812db40..cae35ed2e2 100644 --- a/src/nvim/ex_docmd.c +++ b/src/nvim/ex_docmd.c @@ -6105,11 +6105,7 @@ bool changedir_func(char *new_dir, CdScope scope) // For UNIX ":cd" means: go to home directory. // On other systems too if 'cdhome' is set. -#if defined(UNIX) - if (*new_dir == NUL) { -#else if (*new_dir == NUL && p_cdh) { -#endif // Use NameBuff for home directory name. expand_env("$HOME", NameBuff, MAXPATHL); new_dir = NameBuff; @@ -6148,13 +6144,11 @@ bool changedir_func(char *new_dir, CdScope scope) void ex_cd(exarg_T *eap) { char *new_dir = eap->arg; -#if !defined(UNIX) // for non-UNIX ":cd" means: print current directory unless 'cdhome' is set if (*new_dir == NUL && !p_cdh) { ex_pwd(NULL); return; } -#endif CdScope scope = kCdScopeGlobal; switch (eap->cmdidx) { diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 88f0fa7417..aa9870758f 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -1005,12 +1005,16 @@ local options = { }, { abbreviation = 'cdh', - defaults = false, + defaults = { + condition = 'MSWIN', + if_false = true, + if_true = false, + doc = [[on on Unix, off on Windows]], + }, desc = [=[ When on, |:cd|, |:tcd| and |:lcd| without an argument changes the current working directory to the |$HOME| directory like in Unix. When off, those commands just print the current directory name. - On Unix this option has no effect. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. ]=],