aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-02-07 06:48:10 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-02-07 06:48:10 +0800
commit53e4434c722d94f9c49dee2fd787d05d36a46bf3 (patch)
tree81cffc13e5ffad94d11ca93ac007801061fdb1f1
parentf47ba10636b498430fc8d2d490e5bdf6b4e01033 (diff)
downloadrneovim-53e4434c722d94f9c49dee2fd787d05d36a46bf3.tar.gz
rneovim-53e4434c722d94f9c49dee2fd787d05d36a46bf3.tar.bz2
rneovim-53e4434c722d94f9c49dee2fd787d05d36a46bf3.zip
vim-patch:8.2.0942: expanding to local dir after homedir keeps "~/"
Problem: Expanding to local dir after homedir keeps "~/". Solution: Adjust modify_fname(). (Christian Brabandt, closes vim/vim#6205, closes vim/vim#5979) https://github.com/vim/vim/commit/0e390f40e944036fb558a63b91238cfda128d95f
-rw-r--r--src/nvim/eval.c2
-rw-r--r--src/nvim/os/env.c7
-rw-r--r--src/nvim/testdir/test_fnamemodify.vim3
3 files changed, 7 insertions, 5 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 0fe928beb7..926c385892 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -10700,7 +10700,7 @@ repeat:
pbuf = NULL;
// 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 = (char_u *)FullName_save((char *)*fnamep, FALSE);
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c
index e9f44d2775..e9868d6b61 100644
--- a/src/nvim/os/env.c
+++ b/src/nvim/os/env.c
@@ -1111,10 +1111,9 @@ size_t home_replace(const buf_T *const buf, const char_u *src, char_u *const dst
*dst_p++ = '~';
}
- // If it's just the home directory, add "/".
- if (!vim_ispathsep(src[0]) && --dstlen > 0) {
- *dst_p++ = '/';
- }
+ // 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_mod) {
diff --git a/src/nvim/testdir/test_fnamemodify.vim b/src/nvim/testdir/test_fnamemodify.vim
index ca17be41ec..a8d513eede 100644
--- a/src/nvim/testdir/test_fnamemodify.vim
+++ b/src/nvim/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/')