aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ci/build.ps13
-rw-r--r--runtime/doc/usr_21.txt15
-rw-r--r--src/nvim/ex_docmd.c16
-rw-r--r--src/nvim/option_defs.h4
-rw-r--r--test/functional/ex_cmds/mksession_spec.lua5
-rw-r--r--test/functional/helpers.lua2
6 files changed, 19 insertions, 26 deletions
diff --git a/ci/build.ps1 b/ci/build.ps1
index 627dc69e88..a7a456f67a 100644
--- a/ci/build.ps1
+++ b/ci/build.ps1
@@ -173,6 +173,9 @@ if (-not $NoTests) {
# Functional tests
# The $LastExitCode from MSBuild can't be trusted
$failed = $false
+
+ # Run only this test file:
+ # $env:TEST_FILE = "test\functional\foo.lua"
cmake --build . --config $cmakeBuildType --target functionaltest -- $cmakeGeneratorArgs 2>&1 |
foreach { $failed = $failed -or
$_ -match 'functional tests failed with error'; $_ }
diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt
index 99a78e7b05..44d653a1a7 100644
--- a/runtime/doc/usr_21.txt
+++ b/runtime/doc/usr_21.txt
@@ -339,21 +339,6 @@ window, move the cursor to the filename and press "O". Double clicking with
the mouse will also do this.
-UNIX AND MS-WINDOWS
-
-Some people have to do work on MS-Windows systems one day and on Unix another
-day. If you are one of them, consider adding "slash" and "unix" to
-'sessionoptions'. The session files will then be written in a format that can
-be used on both systems. This is the command to put in your |init.vim| file:
->
- :set sessionoptions+=unix,slash
-
-Vim will use the Unix format then, because the MS-Windows Vim can read and
-write Unix files, but Unix Vim can't read MS-Windows format session files.
-Similarly, MS-Windows Vim understands file names with / to separate names, but
-Unix Vim doesn't understand \.
-
-
SESSIONS AND SHADA
Sessions store many things, but not the position of marks, contents of
diff --git a/src/nvim/ex_docmd.c b/src/nvim/ex_docmd.c
index 79cf1794b1..d87dd29f88 100644
--- a/src/nvim/ex_docmd.c
+++ b/src/nvim/ex_docmd.c
@@ -8089,6 +8089,10 @@ static void close_redir(void)
do { if (FAIL == put_line(fd, (s))) { return FAIL; } } while (0)
/// ":mkexrc", ":mkvimrc", ":mkview", ":mksession".
+///
+/// Legacy 'sessionoptions' flags SSOP_UNIX, SSOP_SLASH are always enabled.
+/// - SSOP_UNIX: line-endings are always LF
+/// - SSOP_SLASH: filenames are always written with "/" slash
static void ex_mkrc(exarg_T *eap)
{
FILE *fd;
@@ -9112,6 +9116,8 @@ char_u *expand_sfile(char_u *arg)
/// Writes commands for restoring the current buffers, for :mksession.
///
+/// Legacy 'sessionoptions' flags SSOP_UNIX, SSOP_SLASH are always enabled.
+///
/// @param dirnow Current directory name
/// @param fd File descriptor to write to
///
@@ -9840,12 +9846,10 @@ static char *ses_escape_fname(char *name, unsigned *flagp)
char *p;
char *sname = (char *)home_replace_save(NULL, (char_u *)name);
- if (*flagp & SSOP_SLASH) {
- // change all backslashes to forward slashes
- for (p = sname; *p != NUL; MB_PTR_ADV(p)) {
- if (*p == '\\') {
- *p = '/';
- }
+ // Always SSOP_SLASH: change all backslashes to forward slashes.
+ for (p = sname; *p != NUL; MB_PTR_ADV(p)) {
+ if (*p == '\\') {
+ *p = '/';
}
}
diff --git a/src/nvim/option_defs.h b/src/nvim/option_defs.h
index 227c0fec4d..c5d8b134c4 100644
--- a/src/nvim/option_defs.h
+++ b/src/nvim/option_defs.h
@@ -577,8 +577,8 @@ static char *(p_ssop_values[]) = {
# define SSOP_HELP 0x040
# define SSOP_BLANK 0x080
# define SSOP_GLOBALS 0x100
-# define SSOP_SLASH 0x200
-# define SSOP_UNIX 0x400 // Deprecated, not used.
+# define SSOP_SLASH 0x200 // Deprecated, always set.
+# define SSOP_UNIX 0x400 // Deprecated, always set.
# define SSOP_SESDIR 0x800
# define SSOP_CURDIR 0x1000
# define SSOP_FOLDS 0x2000
diff --git a/test/functional/ex_cmds/mksession_spec.lua b/test/functional/ex_cmds/mksession_spec.lua
index 305850a09e..949724bb53 100644
--- a/test/functional/ex_cmds/mksession_spec.lua
+++ b/test/functional/ex_cmds/mksession_spec.lua
@@ -96,7 +96,8 @@ describe(':mksession', function()
it('restores CWD for :terminal buffers #11288', function()
local cwd_dir = funcs.fnamemodify('.', ':p:~'):gsub([[[\/]*$]], '')
- local session_path = cwd_dir..get_pathsep()..session_file
+ cwd_dir = cwd_dir:gsub([[\]], '/') -- :mksession always uses unix slashes.
+ local session_path = cwd_dir..'/'..session_file
command('cd '..tab_dir)
command('terminal echo $PWD')
@@ -108,7 +109,7 @@ describe(':mksession', function()
clear()
command('silent source '..session_path)
- local expected_cwd = cwd_dir..get_pathsep()..tab_dir
+ local expected_cwd = cwd_dir..'/'..tab_dir
matches('^term://'..pesc(expected_cwd)..'//%d+:', funcs.expand('%'))
command('qall!')
end)
diff --git a/test/functional/helpers.lua b/test/functional/helpers.lua
index 3ffc6137d6..53c4d140b6 100644
--- a/test/functional/helpers.lua
+++ b/test/functional/helpers.lua
@@ -794,7 +794,7 @@ function module.alter_slashes(obj)
end
return ret
else
- assert(false, 'Could only alter slashes for tables of strings and strings')
+ assert(false, 'expected string or table of strings, got '..type(obj))
end
end