aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2016-05-10 01:31:55 -0400
committerJustin M. Keyes <justinkz@gmail.com>2016-05-10 01:31:55 -0400
commita2b888d3830de97eb093a29c930851ceacbd454a (patch)
treee34d9e296aec716ba607ab4f02f877cd4163f356
parentd06c4a239131a84637c5c7d247ef8b5e9c7275b3 (diff)
parent691e3bbc99af6e4ef9a1649e02b8fa302e4f5732 (diff)
downloadrneovim-a2b888d3830de97eb093a29c930851ceacbd454a.tar.gz
rneovim-a2b888d3830de97eb093a29c930851ceacbd454a.tar.bz2
rneovim-a2b888d3830de97eb093a29c930851ceacbd454a.zip
Merge pull request #4695 from KillTheMule/vim-7.4.896
vim-patch:7.4.896
-rw-r--r--src/nvim/fileio.c20
-rw-r--r--src/nvim/os/win_defs.h2
-rw-r--r--src/nvim/path.c23
-rw-r--r--src/nvim/version.c2
4 files changed, 38 insertions, 9 deletions
diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c
index 6c0bc59d93..db1469db97 100644
--- a/src/nvim/fileio.c
+++ b/src/nvim/fileio.c
@@ -5097,19 +5097,23 @@ void write_lnum_adjust(linenr_T offset)
}
#if defined(BACKSLASH_IN_FILENAME)
-/*
- * Convert all backslashes in fname to forward slashes in-place.
- */
+/// Convert all backslashes in fname to forward slashes in-place,
+/// unless when it looks like a URL.
void forward_slash(char_u *fname)
{
char_u *p;
- for (p = fname; *p != NUL; ++p)
- /* The Big5 encoding can have '\' in the trail byte. */
- if (enc_dbcs != 0 && (*mb_ptr2len)(p) > 1)
- ++p;
- else if (*p == '\\')
+ if (path_with_url(fname)) {
+ return;
+ }
+ for (p = fname; *p != NUL; p++) {
+ // The Big5 encoding can have '\' in the trail byte.
+ if (enc_dbcs != 0 && (*mb_ptr2len)(p) > 1) {
+ p++;
+ } else if (*p == '\\') {
*p = '/';
+ }
+ }
}
#endif
diff --git a/src/nvim/os/win_defs.h b/src/nvim/os/win_defs.h
index 55894e4d12..6a29f86e79 100644
--- a/src/nvim/os/win_defs.h
+++ b/src/nvim/os/win_defs.h
@@ -46,6 +46,8 @@
# endif
#endif
+#define BACKSLASH_IN_FILENAME
+
#ifdef _MSC_VER
typedef SSIZE_T ssize_t;
#endif
diff --git a/src/nvim/path.c b/src/nvim/path.c
index aff0ee2d48..41fd69f238 100644
--- a/src/nvim/path.c
+++ b/src/nvim/path.c
@@ -1284,6 +1284,29 @@ static int expand_backtick(
return cnt;
}
+#ifdef BACKSLASH_IN_FILENAME
+/// Replace all slashes by backslashes.
+/// This used to be the other way around, but MS-DOS sometimes has problems
+/// with slashes (e.g. in a command name). We can't have mixed slashes and
+/// backslashes, because comparing file names will not work correctly. The
+/// commands that use a file name should try to avoid the need to type a
+/// backslash twice.
+/// When 'shellslash' set do it the other way around.
+/// When the path looks like a URL leave it unmodified.
+void slash_adjust(char_u *p)
+{
+ if (path_with_url(p)) {
+ return;
+ }
+ while (*p) {
+ if (*p == psepcN) {
+ *p = psepc;
+ }
+ mb_ptr_adv(p);
+ }
+}
+#endif
+
// Add a file to a file list. Accepted flags:
// EW_DIR add directories
// EW_FILE add files
diff --git a/src/nvim/version.c b/src/nvim/version.c
index 33456fb1b9..69d423f531 100644
--- a/src/nvim/version.c
+++ b/src/nvim/version.c
@@ -782,7 +782,7 @@ static int included_patches[] = {
// 899 NA
898,
// 897 NA
- // 896,
+ 896,
895,
// 894 NA
893,