From f5eabaa9407ae3d1ccf6592337453c423eff3d9a Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 10 Oct 2023 08:22:32 +0800 Subject: [PATCH] fix(path): restore space separation in 'path' (#25571) Removing this behavior causes more inconsistencies and bugs. --- runtime/doc/news.txt | 2 -- runtime/doc/options.txt | 4 ++++ runtime/doc/vim_diff.txt | 2 -- runtime/lua/vim/_meta/options.lua | 6 ++++++ src/nvim/options.lua | 4 ++++ src/nvim/path.c | 2 +- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/runtime/doc/news.txt b/runtime/doc/news.txt index d3cc8cf3d0..f836185cbe 100644 --- a/runtime/doc/news.txt +++ b/runtime/doc/news.txt @@ -57,8 +57,6 @@ The following changes may require adaptations in user config or plugins. • for `backspace=1` set `backspace=indent,eol` • for `backspace=2` set `backspace=indent,eol,start` (default behavior in Nvim) • for `backspace=3` set `backspace=indent,eol,nostop` - • paths in |'path'| and |'cdpath'| can no longer be separated with spaces - (but paths themselves may contain spaces now). • |'backupdir'| and |'directory'| will no longer remove a `>` at the start of the option. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 87cf811d63..07f4eb80c5 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -4499,6 +4499,10 @@ A jump table for the options with a short description can be found at |Q_op|. option may be relative or absolute. - Use commas to separate directory names: > :set path=.,/usr/local/include,/usr/include +< - Spaces can also be used to separate directory names. To have a + space in a directory name, precede it with an extra backslash, and + escape the space: > + :set path=.,/dir/with\\\ space < - To include a comma in a directory name precede it with an extra backslash: > :set path=.,/dir/with\\,comma diff --git a/runtime/doc/vim_diff.txt b/runtime/doc/vim_diff.txt index c354a9e463..d000d7c35c 100644 --- a/runtime/doc/vim_diff.txt +++ b/runtime/doc/vim_diff.txt @@ -658,7 +658,6 @@ Options: *'ballooneval'* *'beval'* *'noballooneval'* *'nobeval'* *'balloonexpr'* *'bexpr'* bioskey (MS-DOS) - 'cdpath': paths can no longer be separated with spaces. conskey (MS-DOS) *'cp'* *'nocompatible'* *'nocp'* *'compatible'* (Nvim is always "nocompatible".) 'cpoptions' (gjkHw<*- and all POSIX flags were removed) @@ -723,7 +722,6 @@ Options: Use |g8| or |ga|. See |mbyte-combining|. *'maxmem'* Nvim delegates memory-management to the OS. *'maxmemtot'* Nvim delegates memory-management to the OS. - 'path': paths can no longer be separated with spaces. printoptions *'printdevice'* *'printencoding'* diff --git a/runtime/lua/vim/_meta/options.lua b/runtime/lua/vim/_meta/options.lua index e90a85ae0a..4f6408b136 100644 --- a/runtime/lua/vim/_meta/options.lua +++ b/runtime/lua/vim/_meta/options.lua @@ -4621,6 +4621,12 @@ vim.go.pm = vim.go.patchmode --- ``` --- :set path=.,/usr/local/include,/usr/include --- ``` +--- - Spaces can also be used to separate directory names. To have a +--- space in a directory name, precede it with an extra backslash, and +--- escape the space: +--- ``` +--- :set path=.,/dir/with\\\ space +--- ``` --- - To include a comma in a directory name precede it with an extra --- backslash: --- ``` diff --git a/src/nvim/options.lua b/src/nvim/options.lua index 396fa7c670..68d88ea0aa 100644 --- a/src/nvim/options.lua +++ b/src/nvim/options.lua @@ -5926,6 +5926,10 @@ return { option may be relative or absolute. - Use commas to separate directory names: > :set path=.,/usr/local/include,/usr/include + < - Spaces can also be used to separate directory names. To have a + space in a directory name, precede it with an extra backslash, and + escape the space: > + :set path=.,/dir/with\\\ space < - To include a comma in a directory name precede it with an extra backslash: > :set path=.,/dir/with\\,comma diff --git a/src/nvim/path.c b/src/nvim/path.c index 5d991ce719..15a8762da1 100644 --- a/src/nvim/path.c +++ b/src/nvim/path.c @@ -848,7 +848,7 @@ static void expand_path_option(char *curdir, garray_T *gap) char *buf = xmalloc(MAXPATHL); while (*path_option != NUL) { - copy_option_part(&path_option, buf, MAXPATHL, ","); + copy_option_part(&path_option, buf, MAXPATHL, " ,"); if (buf[0] == '.' && (buf[1] == NUL || vim_ispathsep(buf[1]))) { // Relative to current buffer: