diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-10-13 19:11:53 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-13 19:11:53 +0800 |
commit | 36890824c7edb7bc5458062c14efbfa0b1d280b5 (patch) | |
tree | 83d50aa726d6fa33ece54cab947101578bc68411 | |
parent | 2d24558c285198d2e725c83a8c4ad4d90797c950 (diff) | |
parent | 73309048cf160dc7a89242cacdf278448ae17e7b (diff) | |
download | rneovim-36890824c7edb7bc5458062c14efbfa0b1d280b5.tar.gz rneovim-36890824c7edb7bc5458062c14efbfa0b1d280b5.tar.bz2 rneovim-36890824c7edb7bc5458062c14efbfa0b1d280b5.zip |
Merge pull request #30798 from zeertzjq/vim-8.2.0985
vim-patch:8.2.{0985,0986}: simplify() does not remove slashes from "///path"
-rw-r--r-- | src/nvim/path.c | 7 | ||||
-rw-r--r-- | test/old/testdir/test_functions.vim | 8 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/nvim/path.c b/src/nvim/path.c index 4c16adde4c..80890acb7d 100644 --- a/src/nvim/path.c +++ b/src/nvim/path.c @@ -1538,6 +1538,13 @@ void simplify_filename(char *filename) } while (vim_ispathsep(*p)); } char *start = p; // remember start after "c:/" or "/" or "///" +#ifdef UNIX + // Posix says that "//path" is unchanged but "///path" is "/path". + if (start > filename + 2) { + STRMOVE(filename + 1, p); + start = p = filename + 1; + } +#endif do { // At this point "p" is pointing to the char following a single "/" diff --git a/test/old/testdir/test_functions.vim b/test/old/testdir/test_functions.vim index 143fdc8073..d22ff826f9 100644 --- a/test/old/testdir/test_functions.vim +++ b/test/old/testdir/test_functions.vim @@ -383,6 +383,12 @@ func Test_simplify() call assert_equal('/', simplify('/.')) call assert_equal('/', simplify('/..')) call assert_equal('/...', simplify('/...')) + call assert_equal('//path', simplify('//path')) + if has('unix') + call assert_equal('/path', simplify('///path')) + call assert_equal('/path', simplify('////path')) + endif + call assert_equal('./dir/file', './dir/file'->simplify()) call assert_equal('./dir/file', simplify('.///dir//file')) call assert_equal('./dir/file', simplify('./dir/./file')) @@ -2069,6 +2075,7 @@ endfunc " Test for the inputdialog() function func Test_inputdialog() + set timeout timeoutlen=10 if has('gui_running') call assert_fails('let v=inputdialog([], "xx")', 'E730:') call assert_fails('let v=inputdialog("Q", [])', 'E730:') @@ -2078,6 +2085,7 @@ func Test_inputdialog() call feedkeys(":let v=inputdialog('Q:', 'xx', 'yy')\<CR>\<Esc>", 'xt') call assert_equal('yy', v) endif + set timeout& timeoutlen& endfunc " Test for inputlist() |