diff options
author | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2015-12-13 12:41:30 +0900 |
---|---|---|
committer | Shougo Matsushita <Shougo.Matsu@gmail.com> | 2015-12-13 15:06:35 +0900 |
commit | 0488fea0dea7f092f6c4bbaa744118f0d6275263 (patch) | |
tree | c78d2fff821041b081d59d630bfa157f35481163 /src/nvim/fileio.c | |
parent | f183cc14de40542899f1bad44943695b0ccf0e5c (diff) | |
download | rneovim-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.c | 11 |
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(); } } |