diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-11-18 20:47:31 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-11-18 20:47:31 +0000 |
commit | 851c7a699ae00bdc14a4db874cf722b7b7393b53 (patch) | |
tree | 28e2e265f8a6d37e892e6e8123032355eb9da331 /src | |
parent | 0526815c15170a5926e1008600ec29d42d8b64c2 (diff) |
patch 8.2.3618: getcwd() is unclear about how 'autochdir' is usedv8.2.3618
Problem: getcwd() is unclear about how 'autochdir' is used.
Solution: Update the help for getcwd(). Without any arguments always return
the actual current directory. (closes #9142)
Diffstat (limited to 'src')
-rw-r--r-- | src/filepath.c | 8 | ||||
-rw-r--r-- | src/testdir/test_cd.vim | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 26 insertions, 3 deletions
diff --git a/src/filepath.c b/src/filepath.c index 74ee2ec15a..f4bddf859c 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -1102,13 +1102,15 @@ f_getcwd(typval_T *argvars, typval_T *rettv) else wp = find_tabwin(&argvars[0], &argvars[1], &tp); - if (wp != NULL && wp->w_localdir != NULL) + if (wp != NULL && wp->w_localdir != NULL + && argvars[0].v_type != VAR_UNKNOWN) rettv->vval.v_string = vim_strsave(wp->w_localdir); - else if (tp != NULL && tp->tp_localdir != NULL) + else if (tp != NULL && tp->tp_localdir != NULL + && argvars[0].v_type != VAR_UNKNOWN) rettv->vval.v_string = vim_strsave(tp->tp_localdir); else if (wp != NULL || tp != NULL || global) { - if (globaldir != NULL) + if (globaldir != NULL && argvars[0].v_type != VAR_UNKNOWN) rettv->vval.v_string = vim_strsave(globaldir); else { diff --git a/src/testdir/test_cd.vim b/src/testdir/test_cd.vim index bcca2f8e7c..81ed491ea5 100644 --- a/src/testdir/test_cd.vim +++ b/src/testdir/test_cd.vim @@ -225,4 +225,23 @@ func Test_cd_unknown_dir() call delete('Xa', 'rf') endfunc +func Test_getcwd_actual_dir() + let startdir = getcwd() + call mkdir('Xactual') + call test_autochdir() + set autochdir + edit Xactual/file.txt + call assert_match('testdir.Xactual$', getcwd()) + lcd .. + call assert_match('testdir$', getcwd()) + edit + call assert_match('testdir.Xactual$', getcwd()) + call assert_match('testdir$', getcwd(win_getid())) + + set noautochdir + bwipe! + call chdir(startdir) + call delete('Xactual', 'rf') +endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 69193a626a..6125df90cd 100644 --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3618, +/**/ 3617, /**/ 3616, |