summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/os_mswin.c9
-rw-r--r--src/os_win32.c12
-rw-r--r--src/version.c2
3 files changed, 22 insertions, 1 deletions
diff --git a/src/os_mswin.c b/src/os_mswin.c
index dd4201222..374a2399c 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -450,6 +450,15 @@ slash_adjust(char_u *p)
{
if (path_with_url(p))
return;
+
+ if (*p == '`')
+ {
+ /* don't replace backslash in backtick quoted strings */
+ int len = STRLEN(p);
+ if (len > 2 && *(p + len - 1) == '`')
+ return;
+ }
+
while (*p)
{
if (*p == psepcN)
diff --git a/src/os_win32.c b/src/os_win32.c
index f75040c11..6c1a3dbde 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -7004,6 +7004,8 @@ fix_arg_enc(void)
str = utf16_to_enc(ArglistW[idx], NULL);
if (str != NULL)
{
+ int literal = used_file_literal;
+
#ifdef FEAT_DIFF
/* When using diff mode may need to concatenate file name to
* directory name. Just like it's done in main(). */
@@ -7025,7 +7027,15 @@ fix_arg_enc(void)
if (used_file_literal)
buf_set_name(fnum_list[i], str);
- alist_add(&global_alist, str, used_file_literal ? 2 : 0);
+ /* Check backtick literal. backtick literal is already expanded in
+ * main.c, so this part add str as literal. */
+ if (literal == FALSE)
+ {
+ int len = STRLEN(str);
+ if (len > 2 && *str == '`' && *(str + len - 1) == '`')
+ literal = TRUE;
+ }
+ alist_add(&global_alist, str, literal ? 2 : 0);
}
}
diff --git a/src/version.c b/src/version.c
index da594f762..5c64a7031 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 876,
+/**/
875,
/**/
874,