aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/fileio.c
diff options
context:
space:
mode:
authorShougo Matsushita <Shougo.Matsu@gmail.com>2015-12-13 12:41:30 +0900
committerShougo Matsushita <Shougo.Matsu@gmail.com>2015-12-13 15:06:35 +0900
commit0488fea0dea7f092f6c4bbaa744118f0d6275263 (patch)
treec78d2fff821041b081d59d630bfa157f35481163 /src/nvim/fileio.c
parentf183cc14de40542899f1bad44943695b0ccf0e5c (diff)
downloadrneovim-0488fea0dea7f092f6c4bbaa744118f0d6275263.tar.gz
rneovim-0488fea0dea7f092f6c4bbaa744118f0d6275263.tar.bz2
rneovim-0488fea0dea7f092f6c4bbaa744118f0d6275263.zip
vim-patch:7.4.635
Problem: If no NL or CR is found in the first block of a file then the 'fileformat' may be set to "mac". (Issue 77) Solution: Check if a CR was found. (eswald) https://github.com/vim/vim/commit/05eb612ff3597fb7102f892bfd320f28b56d2fc6
Diffstat (limited to 'src/nvim/fileio.c')
-rw-r--r--src/nvim/fileio.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c
index bc5b08ef24..7cc483ea11 100644
--- a/src/nvim/fileio.c
+++ b/src/nvim/fileio.c
@@ -1544,6 +1544,11 @@ rewind_retry:
/* First try finding a NL, for Dos and Unix */
if (try_dos || try_unix) {
for (p = ptr; p < ptr + size; ++p) {
+ // Reset the carriage return counter.
+ if (try_mac) {
+ try_mac = 1;
+ }
+
if (*p == NL) {
if (!try_unix
|| (try_dos && p > ptr && p[-1] == CAR))
@@ -1551,6 +1556,8 @@ rewind_retry:
else
fileformat = EOL_UNIX;
break;
+ } else if (*p == CAR && try_mac) {
+ try_mac++;
}
}
@@ -1571,6 +1578,10 @@ rewind_retry:
if (try_mac > try_unix)
fileformat = EOL_MAC;
}
+ } else if (fileformat == EOL_UNKNOWN && try_mac == 1) {
+ // Looking for CR but found no end-of-line markers at all:
+ // use the default format.
+ fileformat = default_fileformat();
}
}