summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0815
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0815')
-rw-r--r--data/vim/patches/8.1.0815424
1 files changed, 424 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0815 b/data/vim/patches/8.1.0815
new file mode 100644
index 000000000..711cc4ad8
--- /dev/null
+++ b/data/vim/patches/8.1.0815
@@ -0,0 +1,424 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0815
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0815
+Problem: Dialog for file changed outside of Vim not tested.
+Solution: Add a test. Move FileChangedShell test. Add 'L' flag to
+ feedkeys().
+Files: src/testdir/test_autocmd.vim, src/testdir/test_filechanged.vim,
+ src/testdir/Make_all.mak, src/evalfunc.c, runtime/doc/eval.txt
+
+
+*** ../vim-8.1.0814/src/testdir/test_autocmd.vim 2019-01-24 19:37:35.912390940 +0100
+--- src/testdir/test_autocmd.vim 2019-01-24 20:33:47.524044208 +0100
+***************
+*** 1386,1477 ****
+ bwipe!
+ endfunc
+
+! func Test_FileChangedShell_reload()
+! if !has('unix')
+! return
+! endif
+! augroup testreload
+! au FileChangedShell Xchanged let g:reason = v:fcs_reason | let v:fcs_choice = 'reload'
+! augroup END
+! new Xchanged
+! call setline(1, 'reload this')
+! write
+! " Need to wait until the timestamp would change by at least a second.
+! sleep 2
+! silent !echo 'extra line' >>Xchanged
+! checktime
+! call assert_equal('changed', g:reason)
+! call assert_equal(2, line('$'))
+! call assert_equal('extra line', getline(2))
+!
+! " Only triggers once
+! let g:reason = ''
+! checktime
+! call assert_equal('', g:reason)
+!
+! " When deleted buffer is not reloaded
+! silent !rm Xchanged
+! let g:reason = ''
+! checktime
+! call assert_equal('deleted', g:reason)
+! call assert_equal(2, line('$'))
+! call assert_equal('extra line', getline(2))
+!
+! " When recreated buffer is reloaded
+! call setline(1, 'buffer is changed')
+! silent !echo 'new line' >>Xchanged
+! let g:reason = ''
+! checktime
+! call assert_equal('conflict', g:reason)
+! call assert_equal(1, line('$'))
+! call assert_equal('new line', getline(1))
+!
+! " Only mode changed
+! silent !chmod +x Xchanged
+! let g:reason = ''
+! checktime
+! call assert_equal('mode', g:reason)
+! call assert_equal(1, line('$'))
+! call assert_equal('new line', getline(1))
+!
+! " Only time changed
+! sleep 2
+! silent !touch Xchanged
+! let g:reason = ''
+! checktime
+! call assert_equal('time', g:reason)
+! call assert_equal(1, line('$'))
+! call assert_equal('new line', getline(1))
+!
+! if has('persistent_undo')
+! " With an undo file the reload can be undone and a change before the
+! " reload.
+! set undofile
+! call setline(2, 'before write')
+! write
+! call setline(2, 'after write')
+! sleep 2
+! silent !echo 'different line' >>Xchanged
+! let g:reason = ''
+! checktime
+! call assert_equal('conflict', g:reason)
+! call assert_equal(3, line('$'))
+! call assert_equal('before write', getline(2))
+! call assert_equal('different line', getline(3))
+! " undo the reload
+! undo
+! call assert_equal(2, line('$'))
+! call assert_equal('after write', getline(2))
+! " undo the change before reload
+! undo
+! call assert_equal(2, line('$'))
+! call assert_equal('before write', getline(2))
+!
+! set noundofile
+! endif
+!
+!
+! au! testreload
+! bwipe!
+! call delete('Xchanged')
+! endfunc
+--- 1386,1389 ----
+ bwipe!
+ endfunc
+
+! " FileChangedShell tested in test_filechanged.vim
+*** ../vim-8.1.0814/src/testdir/test_filechanged.vim 2019-01-24 21:53:43.128252985 +0100
+--- src/testdir/test_filechanged.vim 2019-01-24 21:49:33.022078243 +0100
+***************
+*** 0 ****
+--- 1,146 ----
++ " Tests for when a file was changed outside of Vim.
++
++ func Test_FileChangedShell_reload()
++ if !has('unix')
++ return
++ endif
++ augroup testreload
++ au FileChangedShell Xchanged_r let g:reason = v:fcs_reason | let v:fcs_choice = 'reload'
++ augroup END
++ new Xchanged_r
++ call setline(1, 'reload this')
++ write
++ " Need to wait until the timestamp would change by at least a second.
++ sleep 2
++ silent !echo 'extra line' >>Xchanged_r
++ checktime
++ call assert_equal('changed', g:reason)
++ call assert_equal(2, line('$'))
++ call assert_equal('extra line', getline(2))
++
++ " Only triggers once
++ let g:reason = ''
++ checktime
++ call assert_equal('', g:reason)
++
++ " When deleted buffer is not reloaded
++ silent !rm Xchanged_r
++ let g:reason = ''
++ checktime
++ call assert_equal('deleted', g:reason)
++ call assert_equal(2, line('$'))
++ call assert_equal('extra line', getline(2))
++
++ " When recreated buffer is reloaded
++ call setline(1, 'buffer is changed')
++ silent !echo 'new line' >>Xchanged_r
++ let g:reason = ''
++ checktime
++ call assert_equal('conflict', g:reason)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ " Only mode changed
++ silent !chmod +x Xchanged_r
++ let g:reason = ''
++ checktime
++ call assert_equal('mode', g:reason)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ " Only time changed
++ sleep 2
++ silent !touch Xchanged_r
++ let g:reason = ''
++ checktime
++ call assert_equal('time', g:reason)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ if has('persistent_undo')
++ " With an undo file the reload can be undone and a change before the
++ " reload.
++ set undofile
++ call setline(2, 'before write')
++ write
++ call setline(2, 'after write')
++ sleep 2
++ silent !echo 'different line' >>Xchanged_r
++ let g:reason = ''
++ checktime
++ call assert_equal('conflict', g:reason)
++ call assert_equal(3, line('$'))
++ call assert_equal('before write', getline(2))
++ call assert_equal('different line', getline(3))
++ " undo the reload
++ undo
++ call assert_equal(2, line('$'))
++ call assert_equal('after write', getline(2))
++ " undo the change before reload
++ undo
++ call assert_equal(2, line('$'))
++ call assert_equal('before write', getline(2))
++
++ set noundofile
++ endif
++
++ au! testreload
++ bwipe!
++ call delete('Xchanged_r')
++ endfunc
++
++ func Test_file_changed_dialog()
++ if !has('unix')
++ return
++ endif
++ au! FileChangedShell
++
++ new Xchanged_d
++ call setline(1, 'reload this')
++ write
++ " Need to wait until the timestamp would change by at least a second.
++ sleep 2
++ silent !echo 'extra line' >>Xchanged_d
++ call feedkeys('L', 'L')
++ checktime
++ call assert_match('W11:', v:warningmsg)
++ call assert_equal(2, line('$'))
++ call assert_equal('reload this', getline(1))
++ call assert_equal('extra line', getline(2))
++
++ " delete buffer, only shows an error, no prompt
++ silent !rm Xchanged_d
++ checktime
++ call assert_match('E211:', v:warningmsg)
++ call assert_equal(2, line('$'))
++ call assert_equal('extra line', getline(2))
++
++ " Recreate buffer and reload
++ call setline(1, 'buffer is changed')
++ silent !echo 'new line' >Xchanged_d
++ call feedkeys('L', 'L')
++ checktime
++ call assert_match('W12:', v:warningmsg)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ " Only mode changed, reload
++ silent !chmod +x Xchanged_d
++ call feedkeys('L', 'L')
++ checktime
++ call assert_match('W16:', v:warningmsg)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ " Only time changed, no prompt
++ sleep 2
++ silent !touch Xchanged_d
++ let v:warningmsg = ''
++ checktime
++ call assert_equal('', v:warningmsg)
++ call assert_equal(1, line('$'))
++ call assert_equal('new line', getline(1))
++
++ bwipe!
++ call delete('Xchanged_d')
++ endfunc
+*** ../vim-8.1.0814/src/testdir/Make_all.mak 2019-01-17 13:04:05.765227482 +0100
+--- src/testdir/Make_all.mak 2019-01-24 20:39:55.069040398 +0100
+***************
+*** 121,126 ****
+--- 121,127 ----
+ test_feedkeys \
+ test_file_perm \
+ test_file_size \
++ test_filechanged \
+ test_fileformat \
+ test_filetype \
+ test_filter_cmd \
+***************
+*** 316,321 ****
+--- 317,323 ----
+ test_exit.res \
+ test_farsi.res \
+ test_file_size.res \
++ test_filechanged.res \
+ test_find_complete.res \
+ test_fixeol.res \
+ test_fnameescape.res \
+*** ../vim-8.1.0814/src/evalfunc.c 2019-01-24 15:04:44.666887862 +0100
+--- src/evalfunc.c 2019-01-24 21:24:30.371463057 +0100
+***************
+*** 3674,3679 ****
+--- 3674,3680 ----
+ int typed = FALSE;
+ int execute = FALSE;
+ int dangerous = FALSE;
++ int lowlevel = FALSE;
+ char_u *keys_esc;
+
+ /* This is not allowed in the sandbox. If the commands would still be
+***************
+*** 3697,3702 ****
+--- 3698,3704 ----
+ case 'i': insert = TRUE; break;
+ case 'x': execute = TRUE; break;
+ case '!': dangerous = TRUE; break;
++ case 'L': lowlevel = TRUE; break;
+ }
+ }
+ }
+***************
+*** 3708,3714 ****
+ keys_esc = vim_strsave_escape_csi(keys);
+ if (keys_esc != NULL)
+ {
+! ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
+ insert ? 0 : typebuf.tb_len, !typed, FALSE);
+ vim_free(keys_esc);
+ if (vgetc_busy
+--- 3710,3725 ----
+ keys_esc = vim_strsave_escape_csi(keys);
+ if (keys_esc != NULL)
+ {
+! if (lowlevel)
+! {
+! #ifdef USE_INPUT_BUF
+! add_to_input_buf(keys, (int)STRLEN(keys));
+! #else
+! emsg(_("E980: lowlevel input not supported"));
+! #endif
+! }
+! else
+! ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
+ insert ? 0 : typebuf.tb_len, !typed, FALSE);
+ vim_free(keys_esc);
+ if (vgetc_busy
+*** ../vim-8.1.0814/runtime/doc/eval.txt 2019-01-23 21:14:59.165314597 +0100
+--- runtime/doc/eval.txt 2019-01-24 21:26:05.667078878 +0100
+***************
+*** 4084,4107 ****
+ feedkeys({string} [, {mode}]) *feedkeys()*
+ Characters in {string} are queued for processing as if they
+ come from a mapping or were typed by the user.
+ By default the string is added to the end of the typeahead
+ buffer, thus if a mapping is still being executed the
+ characters come after them. Use the 'i' flag to insert before
+ other characters, they will be executed next, before any
+ characters from a mapping.
+ The function does not wait for processing of keys contained in
+ {string}.
+ To include special keys into {string}, use double-quotes
+ and "\..." notation |expr-quote|. For example,
+ feedkeys("\<CR>") simulates pressing of the <Enter> key. But
+ feedkeys('\<CR>') pushes 5 characters.
+! If {mode} is absent, keys are remapped.
+ {mode} is a String, which can contain these character flags:
+! 'm' Remap keys. This is default.
+ 'n' Do not remap keys.
+ 't' Handle keys as if typed; otherwise they are handled as
+ if coming from a mapping. This matters for undo,
+ opening folds, etc.
+ 'i' Insert the string instead of appending (see above).
+ 'x' Execute commands until typeahead is empty. This is
+ similar to using ":normal!". You can call feedkeys()
+--- 4110,4140 ----
+ feedkeys({string} [, {mode}]) *feedkeys()*
+ Characters in {string} are queued for processing as if they
+ come from a mapping or were typed by the user.
++
+ By default the string is added to the end of the typeahead
+ buffer, thus if a mapping is still being executed the
+ characters come after them. Use the 'i' flag to insert before
+ other characters, they will be executed next, before any
+ characters from a mapping.
++
+ The function does not wait for processing of keys contained in
+ {string}.
++
+ To include special keys into {string}, use double-quotes
+ and "\..." notation |expr-quote|. For example,
+ feedkeys("\<CR>") simulates pressing of the <Enter> key. But
+ feedkeys('\<CR>') pushes 5 characters.
+!
+ {mode} is a String, which can contain these character flags:
+! 'm' Remap keys. This is default. If {mode} is absent,
+! keys are remapped.
+ 'n' Do not remap keys.
+ 't' Handle keys as if typed; otherwise they are handled as
+ if coming from a mapping. This matters for undo,
+ opening folds, etc.
++ 'L' Lowlevel input. Only works for Unix or when using the
++ GUI. Keys are used as if they were coming from the
++ terminal. Other flags are not used. *E980*
+ 'i' Insert the string instead of appending (see above).
+ 'x' Execute commands until typeahead is empty. This is
+ similar to using ":normal!". You can call feedkeys()
+*** ../vim-8.1.0814/src/version.c 2019-01-24 20:30:49.333537878 +0100
+--- src/version.c 2019-01-24 21:50:25.757695053 +0100
+***************
+*** 790,792 ****
+ /**/
+! 814,
+ /**/
+--- 790,794 ----
+ /**/
+! 815,
+! /**/
+! 814,
+ /**/
+
+--
+You were lucky. We lived for three months in a brown paper bag in a
+septic tank. We used to have to get up at six o'clock in the morning,
+clean the bag, eat a crust of stale bread, go to work down mill for
+fourteen hours a day week in-week out. When we got home, our Dad
+would thrash us to sleep with his belt!
+
+ /// 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 ///