diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-06-10 13:12:28 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-06-10 13:12:28 +0200 |
commit | 0e390f40e944036fb558a63b91238cfda128d95f (patch) | |
tree | a0cfb553a4eb3b22df2f70bb5196cebe304a07d4 | |
parent | 517f00f78893087d2f9d45768a5ba4dc48cb6856 (diff) | |
download | vim-git-0e390f40e944036fb558a63b91238cfda128d95f.tar.gz |
patch 8.2.0942: expanding to local dir after homedir keeps "~/"v8.2.0942
Problem: Expanding to local dir after homedir keeps "~/".
Solution: Adjust modify_fname(). (Christian Brabandt, closes #6205,
closes #5979)
-rw-r--r-- | src/filepath.c | 10 | ||||
-rw-r--r-- | src/testdir/test_fnamemodify.vim | 3 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/src/filepath.c b/src/filepath.c index 8bc941d35..4a4948ad6 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -416,7 +416,7 @@ repeat: // Need full path first (use expand_env() to remove a "~/") if (!has_fullname && !has_homerelative) { - if (c == '.' && **fnamep == '~') + if ((c == '.' || c == '~') && **fnamep == '~') p = pbuf = expand_env_save(*fnamep); else p = pbuf = FullName_save(*fnamep, FALSE); @@ -2397,11 +2397,9 @@ home_replace( if (--dstlen > 0) *dst++ = '~'; - /* - * If it's just the home directory, add "/". - */ - if (!vim_ispathsep(src[0]) && --dstlen > 0) - *dst++ = '/'; + // Do not add directory separator into dst, because dst is + // expected to just return the directory name without the + // directory separator '/'. break; } if (p == homedir_env) diff --git a/src/testdir/test_fnamemodify.vim b/src/testdir/test_fnamemodify.vim index b90d232f9..f8ce0b14a 100644 --- a/src/testdir/test_fnamemodify.vim +++ b/src/testdir/test_fnamemodify.vim @@ -31,6 +31,9 @@ func Test_fnamemodify() call assert_equal('tar', fnamemodify('abc.fb2.tar.gz', ':e:e:r')) let cwd = getcwd() + call chdir($HOME) + call assert_equal('foobar', fnamemodify('~/foobar', ':~:.')) + call chdir(cwd) call mkdir($HOME . '/XXXXXXXX/a', 'p') call mkdir($HOME . '/XXXXXXXX/b', 'p') call chdir($HOME . '/XXXXXXXX/a/') diff --git a/src/version.c b/src/version.c index 4c8822a11..570ea1046 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 942, +/**/ 941, /**/ 940, |