To: vim_dev@googlegroups.com Subject: Patch 7.4.1658 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.4.1658 Problem: A plugin does not know when VimEnter autocommands were already triggered. Solution: Add the v:vim_did_enter variable. Files: src/eval.c, src/main.c, src/vim.h, src/testdir/test_autocmd.vim, src/testdir/test_alot.vim, runtime/doc/autocmd.txt, runtime/doc/eval.txt *** ../vim-7.4.1657/src/eval.c 2016-03-26 18:20:36.949052940 +0100 --- src/eval.c 2016-03-26 19:52:15.324681887 +0100 *************** *** 372,377 **** --- 372,378 ---- {VV_NAME("true", VAR_SPECIAL), VV_RO}, {VV_NAME("null", VAR_SPECIAL), VV_RO}, {VV_NAME("none", VAR_SPECIAL), VV_RO}, + {VV_NAME("vim_did_enter", VAR_NUMBER), VV_RO}, }; /* shorthand */ *** ../vim-7.4.1657/src/main.c 2016-03-19 22:11:47.424674965 +0100 --- src/main.c 2016-03-26 19:53:32.543894305 +0100 *************** *** 969,974 **** --- 969,977 ---- if (p_im) need_start_insertmode = TRUE; + #ifdef FEAT_EVAL + set_vim_var_nr(VV_VIM_DID_ENTER, 1L); + #endif #ifdef FEAT_AUTOCMD apply_autocmds(EVENT_VIMENTER, NULL, NULL, FALSE, curbuf); TIME_MSG("VimEnter autocommands"); *** ../vim-7.4.1657/src/vim.h 2016-03-19 22:11:47.440674791 +0100 --- src/vim.h 2016-03-26 19:54:29.839309878 +0100 *************** *** 1869,1875 **** #define VV_TRUE 64 #define VV_NULL 65 #define VV_NONE 66 ! #define VV_LEN 67 /* number of v: vars */ /* used for v_number in VAR_SPECIAL */ #define VVAL_FALSE 0L --- 1869,1876 ---- #define VV_TRUE 64 #define VV_NULL 65 #define VV_NONE 66 ! #define VV_VIM_DID_ENTER 67 ! #define VV_LEN 68 /* number of v: vars */ /* used for v_number in VAR_SPECIAL */ #define VVAL_FALSE 0L *** ../vim-7.4.1657/src/testdir/test_autocmd.vim 2016-03-26 20:58:12.436405922 +0100 --- src/testdir/test_autocmd.vim 2016-03-26 20:53:35.119229095 +0100 *************** *** 0 **** --- 1,8 ---- + " Tests for autocommands + + func Test_vim_did_enter() + call assert_false(v:vim_did_enter) + + " This script will never reach the main loop, can't check if v:vim_did_enter + " becomes one. + endfunc *** ../vim-7.4.1657/src/testdir/test_alot.vim 2016-03-25 17:55:24.966112156 +0100 --- src/testdir/test_alot.vim 2016-03-26 19:58:01.349155450 +0100 *************** *** 2,7 **** --- 2,8 ---- " This makes testing go faster, since Vim doesn't need to restart. source test_assign.vim + source test_autocmd.vim source test_cursor_func.vim source test_delete.vim source test_ex_undo.vim *** ../vim-7.4.1657/runtime/doc/autocmd.txt 2015-07-17 17:38:00.555399737 +0200 --- runtime/doc/autocmd.txt 2016-03-26 20:00:34.623594678 +0100 *************** *** 904,910 **** loading .vimrc files, executing the "-c cmd" arguments, creating all windows and loading the buffers in them. ! *VimLeave* VimLeave Before exiting Vim, just after writing the .viminfo file. Executed only once, like VimLeavePre. --- 918,932 ---- loading .vimrc files, executing the "-c cmd" arguments, creating all windows and loading the buffers in them. ! Just before this event is triggered the ! |v:vim_did_enter| variable is set, so that you ! can do: > ! if v:vim_did_enter ! call s:init() ! else ! au VimEnter * call s:init() ! endif ! < *VimLeave* VimLeave Before exiting Vim, just after writing the .viminfo file. Executed only once, like VimLeavePre. *** ../vim-7.4.1657/runtime/doc/eval.txt 2016-03-20 20:56:56.040282977 +0100 --- runtime/doc/eval.txt 2016-03-26 20:04:48.841005116 +0100 *************** *** 1745,1750 **** --- 1762,1771 ---- version 5.0 and 5.1 may have a patch 123, but these are completely different. + *v:vim_did_enter* *vim_did_enter-variable* + v:vim_did_enter Zero until most of startup is done. It is set to one just + before |VimEnter| autocommands are triggered. + *v:warningmsg* *warningmsg-variable* v:warningmsg Last given warning message. It's allowed to set this variable. *** ../vim-7.4.1657/src/version.c 2016-03-26 19:41:43.875118885 +0100 --- src/version.c 2016-03-26 20:57:38.932747069 +0100 *************** *** 750,751 **** --- 750,753 ---- { /* Add new patch number below this line */ + /**/ + 1658, /**/ -- In a world without fences, who needs Gates and Windows? /// 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 ///