Patch 8.1.0729
Problem: There is a SourcePre autocommand event but not a SourcePost.
Solution: Add the SourcePost autocommand event. (closes #3739)
Files: src/vim.h, src/fileio.c, src/ex_cmds2.c, runtime/doc/autocmd.txt,
src/testdir/test_source.vim, src/testdir/Make_all.mak
*** ../vim-8.1.0728/src/vim.h 2018-11-16 16:21:01.637310049 +0100
--- src/vim.h 2019-01-11 22:36:50.325271889 +0100
***************
*** 1324,1329 ****
--- 1324,1330 ----
EVENT_SHELLFILTERPOST, // after ":1,2!cmd", ":w !cmd", ":r !cmd".
EVENT_SOURCECMD, // sourcing a Vim script using command
EVENT_SOURCEPRE, // before sourcing a Vim script
+ EVENT_SOURCEPOST, // after sourcing a Vim script
EVENT_SPELLFILEMISSING, // spell file missing
EVENT_STDINREADPOST, // after reading from stdin
EVENT_STDINREADPRE, // before reading from stdin
*** ../vim-8.1.0728/src/fileio.c 2018-12-24 00:22:35.739150151 +0100
--- src/fileio.c 2019-01-12 13:24:18.082143365 +0100
***************
*** 7795,7802 ****
{"SessionLoadPost", EVENT_SESSIONLOADPOST},
{"ShellCmdPost", EVENT_SHELLCMDPOST},
{"ShellFilterPost", EVENT_SHELLFILTERPOST},
- {"SourcePre", EVENT_SOURCEPRE},
{"SourceCmd", EVENT_SOURCECMD},
{"SpellFileMissing",EVENT_SPELLFILEMISSING},
{"StdinReadPost", EVENT_STDINREADPOST},
{"StdinReadPre", EVENT_STDINREADPRE},
--- 7795,7803 ----
{"SessionLoadPost", EVENT_SESSIONLOADPOST},
{"ShellCmdPost", EVENT_SHELLCMDPOST},
{"ShellFilterPost", EVENT_SHELLFILTERPOST},
{"SourceCmd", EVENT_SOURCECMD},
+ {"SourcePre", EVENT_SOURCEPRE},
+ {"SourcePost", EVENT_SOURCEPOST},
{"SpellFileMissing",EVENT_SPELLFILEMISSING},
{"StdinReadPost", EVENT_STDINREADPOST},
{"StdinReadPre", EVENT_STDINREADPRE},
*** ../vim-8.1.0728/src/ex_cmds2.c 2018-12-28 19:06:43.095216722 +0100
--- src/ex_cmds2.c 2019-01-11 23:16:51.542941756 +0100
***************
*** 4360,4365 ****
--- 4360,4366 ----
#ifdef FEAT_PROFILE
proftime_T wait_start;
#endif
+ int trigger_source_post = FALSE;
p = expand_env_save(fname);
if (p == NULL)
***************
*** 4384,4389 ****
--- 4385,4394 ----
#else
retval = OK;
#endif
+ if (retval == OK)
+ // Apply SourcePost autocommands.
+ apply_autocmds(EVENT_SOURCEPOST, fname_exp, fname_exp,
+ FALSE, curbuf);
goto theend;
}
***************
*** 4653,4658 ****
--- 4658,4666 ----
}
#endif
+ if (!got_int)
+ trigger_source_post = TRUE;
+
#ifdef FEAT_EVAL
/*
* After a "finish" in debug mode, need to break at first command of next
***************
*** 4679,4684 ****
--- 4687,4696 ----
convert_setup(&cookie.conv, NULL, NULL);
#endif
+ if (trigger_source_post)
+ apply_autocmds(EVENT_SOURCEPOST, si->sn_name, si->sn_name,
+ FALSE, curbuf);
+
theend:
vim_free(fname_exp);
return retval;
*** ../vim-8.1.0728/runtime/doc/autocmd.txt 2018-10-19 22:35:04.885189994
+0200
--- runtime/doc/autocmd.txt 2019-01-11 22:49:53.065508811 +0100
***************
*** 917,922 ****
--- 925,936 ----
*SourcePre*
SourcePre Before sourcing a Vim script. |:source|
<afile> is the name of the file being sourced.
+ *SourcePost*
+ SourcePost After sourcing a Vim script. |:source|
+ <afile> is the name of the file being sourced.
+ Not triggered when sourcing was interrupted.
+ Also triggered after a SourceCmd autocommand
+ was triggered.
*SourceCmd*
SourceCmd When sourcing a Vim script. |:source|
<afile> is the name of the file being sourced.
*** ../vim-8.1.0728/src/testdir/test_source.vim 2019-01-12 13:24:41.469959774
+0100
--- src/testdir/test_source.vim 2019-01-11 23:21:39.817674439 +0100
***************
*** 0 ****
--- 1,38 ----
+ " Tests for the :source command.
+
+ func Test_source_autocmd()
+ call writefile([
+ \ 'let did_source = 1',
+ \ ], 'Xsourced')
+ au SourcePre *source* let did_source_pre = 1
+ au SourcePost *source* let did_source_post = 1
+
+ source Xsourced
+
+ call assert_equal(g:did_source, 1)
+ call assert_equal(g:did_source_pre, 1)
+ call assert_equal(g:did_source_post, 1)
+
+ call delete('Xsourced')
+ au! SourcePre
+ au! SourcePost
+ unlet g:did_source
+ unlet g:did_source_pre
+ unlet g:did_source_post
+ endfunc
+
+ func Test_source_cmd()
+ au SourceCmd *source* let did_source = expand('<afile>')
+ au SourcePre *source* let did_source_pre = 2
+ au SourcePost *source* let did_source_post = 2
+
+ source Xsourced
+
+ call assert_equal(g:did_source, 'Xsourced')
+ call assert_false(exists('g:did_source_pre'))
+ call assert_equal(g:did_source_post, 2)
+
+ au! SourceCmd
+ au! SourcePre
+ au! SourcePost
+ endfunc
*** ../vim-8.1.0728/src/testdir/Make_all.mak 2019-01-11 19:19:40.685585822
+0100
--- src/testdir/Make_all.mak 2019-01-11 22:41:31.703179473 +0100
***************
*** 222,227 ****
--- 222,228 ----
test_signs \
test_smartindent \
test_sort \
+ test_source \
test_source_utf8 \
test_spell \
test_startup \
***************
*** 376,381 ****
--- 377,383 ----
test_shortpathname.res \
test_signs.res \
test_smartindent.res \
+ test_source.res \
test_spell.res \
test_startup.res \
test_stat.res \
*** ../vim-8.1.0728/src/version.c 2019-01-11 22:15:00.519123428 +0100
--- src/version.c 2019-01-12 13:21:41.247375355 +0100
***************
*** 797,798 ****
--- 797,800 ----
{ /* Add new patch number below this line */
+ /**/
+ 729,
/**/
--
hundred-and-one symptoms of being an internet addict:
168. You have your own domain name.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.