To: vim_dev@googlegroups.com Subject: Patch 8.0.0176 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.0.0176 Problem: Using :change in between :function and :endfunction fails. Solution: Recognize :change inside a function. (ichizok, closes #1374) Files: src/userfunc.c, src/testdir/test_viml.vim *** ../vim-8.0.0175/src/userfunc.c 2016-11-10 20:01:41.201582868 +0100 --- src/userfunc.c 2017-01-12 22:15:55.659667539 +0100 *************** *** 2085,2093 **** } } ! /* Check for ":append" or ":insert". */ p = skip_range(p, NULL); if ((p[0] == 'a' && (!ASCII_ISALPHA(p[1]) || p[1] == 'p')) || (p[0] == 'i' && (!ASCII_ISALPHA(p[1]) || (p[1] == 'n' && (!ASCII_ISALPHA(p[2]) || (p[2] == 's')))))) --- 2085,2098 ---- } } ! /* Check for ":append", ":change", ":insert". */ p = skip_range(p, NULL); if ((p[0] == 'a' && (!ASCII_ISALPHA(p[1]) || p[1] == 'p')) + || (p[0] == 'c' + && (!ASCII_ISALPHA(p[1]) || (p[1] == 'h' + && (!ASCII_ISALPHA(p[2]) || (p[2] == 'a' + && (STRNCMP(&p[3], "nge", 3) != 0 + || !ASCII_ISALPHA(p[6]))))))) || (p[0] == 'i' && (!ASCII_ISALPHA(p[1]) || (p[1] == 'n' && (!ASCII_ISALPHA(p[2]) || (p[2] == 's')))))) *** ../vim-8.0.0175/src/testdir/test_viml.vim 2016-07-19 17:11:58.000000000 +0200 --- src/testdir/test_viml.vim 2017-01-12 22:15:18.627955280 +0100 *************** *** 1239,1244 **** --- 1239,1315 ---- endfunc "------------------------------------------------------------------------------- + " Test 95: lines of :append, :change, :insert {{{1 + "------------------------------------------------------------------------------- + + function! DefineFunction(name, body) + let func = join(['function! ' . a:name . '()'] + a:body + ['endfunction'], "\n") + exec func + endfunction + + func Test_script_lines() + " :append + try + call DefineFunction('T_Append', [ + \ 'append', + \ 'py <