SourcePost ハック

自動コマンドイベント SourcePre は存在するのに SourcePost はないので作ってみた。

diff -u ../src.orig/ex_cmds2.c ./ex_cmds2.c
--- ../src.orig/ex_cmds2.c	Mon Apr 17 19:19:07 2006
+++ ./ex_cmds2.c	Sun Dec 31 23:47:14 2006
@@ -3093,6 +3093,9 @@
 #endif
 
 theend:
+#ifdef FEAT_AUTOCMD
+    apply_autocmds(EVENT_SOURCEPOST, fname_exp, fname_exp, FALSE, curbuf);
+#endif
     vim_free(fname_exp);
     return retval;
 }
diff -u ../src.orig/fileio.c ./fileio.c
--- ../src.orig/fileio.c	Mon May  1 00:28:57 2006
+++ ./fileio.c	Sun Dec 31 23:47:14 2006
@@ -7003,6 +7003,7 @@
     {"ShellCmdPost",	EVENT_SHELLCMDPOST},
     {"ShellFilterPost",	EVENT_SHELLFILTERPOST},
     {"SourcePre",	EVENT_SOURCEPRE},
+    {"SourcePost",	EVENT_SOURCEPOST},
     {"SpellFileMissing",EVENT_SPELLFILEMISSING},
     {"StdinReadPost",	EVENT_STDINREADPOST},
     {"StdinReadPre",	EVENT_STDINREADPRE},
diff -u ../src.orig/vim.h ./vim.h
--- ../src.orig/vim.h	Mon May  1 00:32:38 2006
+++ ./vim.h	Sun Dec 31 23:47:30 2006
@@ -1144,6 +1145,7 @@
     EVENT_REMOTEREPLY,		/* upon string reception from a remote vim */
     EVENT_SWAPEXISTS,		/* found existing swap file */
     EVENT_SOURCEPRE,		/* before sourcing a Vim script */
+    EVENT_SOURCEPOST,		/* after sourcing a Vim script */
     EVENT_SPELLFILEMISSING,	/* spell file missing */
     EVENT_CURSORMOVED,		/* cursor was moved */
     EVENT_CURSORMOVEDI,		/* cursor was moved in Insert mode */

自動コマンドイベントを追加するのは、発動させるタイミングさえ間違えなければ簡単。
イベント名と enum 値の対応が fileio.c にあるのはちょっと謎だが。