To: vim_dev@googlegroups.com Subject: Patch 8.0.0224 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0224 Problem: When 'fileformats' is changed in a BufReadPre auto command, it does not take effect in readfile(). (Gary Johnson) Solution: Check the value of 'fileformats' after executing auto commands. (Christian Brabandt) Files: src/fileio.c, src/testdir/test_fileformat.vim *** ../vim-8.0.0223/src/fileio.c 2017-01-13 21:59:59.327172086 +0100 --- src/fileio.c 2017-01-23 21:24:28.482126938 +0100 *************** *** 274,282 **** int msg_save = msg_scroll; linenr_T read_no_eol_lnum = 0; /* non-zero lnum when last line of * last read was missing the eol */ ! int try_mac = (vim_strchr(p_ffs, 'm') != NULL); ! int try_dos = (vim_strchr(p_ffs, 'd') != NULL); ! int try_unix = (vim_strchr(p_ffs, 'x') != NULL); int file_rewind = FALSE; #ifdef FEAT_MBYTE int can_retry; --- 274,282 ---- int msg_save = msg_scroll; linenr_T read_no_eol_lnum = 0; /* non-zero lnum when last line of * last read was missing the eol */ ! int try_mac; ! int try_dos; ! int try_unix; int file_rewind = FALSE; #ifdef FEAT_MBYTE int can_retry; *************** *** 738,743 **** --- 738,747 ---- curbuf->b_op_start.lnum = ((from == 0) ? 1 : from); curbuf->b_op_start.col = 0; + try_mac = (vim_strchr(p_ffs, 'm') != NULL); + try_dos = (vim_strchr(p_ffs, 'd') != NULL); + try_unix = (vim_strchr(p_ffs, 'x') != NULL); + #ifdef FEAT_AUTOCMD if (!read_buffer) { *************** *** 769,774 **** --- 773,783 ---- else apply_autocmds_exarg(EVENT_FILEREADPRE, sfname, sfname, FALSE, NULL, eap); + /* autocommands may have changed it */ + try_mac = (vim_strchr(p_ffs, 'm') != NULL); + try_dos = (vim_strchr(p_ffs, 'd') != NULL); + try_unix = (vim_strchr(p_ffs, 'x') != NULL); + if (msg_scrolled == n) msg_scroll = m; *** ../vim-8.0.0223/src/testdir/test_fileformat.vim 2016-10-12 17:45:13.642857417 +0200 --- src/testdir/test_fileformat.vim 2017-01-23 21:24:08.074263064 +0100 *************** *** 15,17 **** --- 15,31 ---- call assert_equal(test_fileformats, &fileformat) set fileformats& endfunc + + func Test_fileformat_autocommand() + let filecnt=['', 'foobar', 'eins', '', 'zwei', 'drei', 'vier', 'fünf', ''] + let ffs=&ffs + call writefile(filecnt, 'Xfile', 'b') + au BufReadPre Xfile set ffs=dos ff=dos + new Xfile + call assert_equal('dos', &l:ff) + call assert_equal('dos', &ffs) + " cleanup + let &ffs=ffs + au! BufReadPre Xfile + bw! + endfunc *** ../vim-8.0.0223/src/version.c 2017-01-23 20:47:09.037078522 +0100 --- src/version.c 2017-01-23 21:26:24.265354675 +0100 *************** *** 766,767 **** --- 766,769 ---- { /* Add new patch number below this line */ + /**/ + 224, /**/ -- Overflow on /dev/null, please empty the bit bucket. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///