]> granicus.if.org Git - vim/commitdiff
updated for version 7.2-021 v7.2.021
authorBram Moolenaar <Bram@vim.org>
Thu, 18 Sep 2008 19:29:58 +0000 (19:29 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 18 Sep 2008 19:29:58 +0000 (19:29 +0000)
src/ex_docmd.c
src/fileio.c
src/globals.h
src/version.c

index 509805f86c4fd1b371edb7aef17ad7401575332d..84099a7cf1797ad912d446fbe40e2b31f5f94508 100644 (file)
@@ -9542,6 +9542,15 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped)
 #ifdef FEAT_AUTOCMD
        case SPEC_AFILE:        /* file name for autocommand */
                result = autocmd_fname;
+               if (result != NULL && !autocmd_fname_full)
+               {
+                   /* Still need to turn the fname into a full path.  It is
+                    * postponed to avoid a delay when <afile> is not used. */
+                   autocmd_fname_full = TRUE;
+                   result = FullName_save(autocmd_fname, FALSE);
+                   vim_free(autocmd_fname);
+                   autocmd_fname = result;
+               }
                if (result == NULL)
                {
                    *errormsg = (char_u *)_("E495: no autocommand file name to substitute for \"<afile>\"");
index ef39a2982e91e27b449a64ddf11d98ff02e11046..c86f55dbbc1b83b3f809f597244f35881e5f8873 100644 (file)
@@ -8523,6 +8523,7 @@ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
     char_u     *save_sourcing_name;
     linenr_T   save_sourcing_lnum;
     char_u     *save_autocmd_fname;
+    int                save_autocmd_fname_full;
     int                save_autocmd_bufnr;
     char_u     *save_autocmd_match;
     int                save_autocmd_busy;
@@ -8601,6 +8602,7 @@ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
      * Save the autocmd_* variables and info about the current buffer.
      */
     save_autocmd_fname = autocmd_fname;
+    save_autocmd_fname_full = autocmd_fname_full;
     save_autocmd_bufnr = autocmd_bufnr;
     save_autocmd_match = autocmd_match;
     save_autocmd_busy = autocmd_busy;
@@ -8618,14 +8620,15 @@ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
        if (fname != NULL && *fname != NUL)
            autocmd_fname = fname;
        else if (buf != NULL)
-           autocmd_fname = buf->b_fname;
+           autocmd_fname = buf->b_ffname;
        else
            autocmd_fname = NULL;
     }
     else
        autocmd_fname = fname_io;
     if (autocmd_fname != NULL)
-       autocmd_fname = FullName_save(autocmd_fname, FALSE);
+       autocmd_fname = vim_strsave(autocmd_fname);
+    autocmd_fname_full = FALSE; /* call FullName_save() later */
 
     /*
      * Set the buffer number to be used for <abuf>.
@@ -8810,6 +8813,7 @@ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
     sourcing_lnum = save_sourcing_lnum;
     vim_free(autocmd_fname);
     autocmd_fname = save_autocmd_fname;
+    autocmd_fname_full = save_autocmd_fname_full;
     autocmd_bufnr = save_autocmd_bufnr;
     autocmd_match = save_autocmd_match;
 #ifdef FEAT_EVAL
@@ -8918,7 +8922,7 @@ auto_next_pat(apc, stop_at_last)
     {
        apc->curpat = NULL;
 
-       /* only use a pattern when it has not been removed, has commands and
+       /* Only use a pattern when it has not been removed, has commands and
         * the group matches. For buffer-local autocommands only check the
         * buffer number. */
        if (ap->pat != NULL && ap->cmds != NULL
index dc3038d827055b2058af543504d9b403c76e5226..c03c693223a322be9da064751039de468904a1c5 100644 (file)
@@ -1022,6 +1022,7 @@ EXTERN char_u     *new_last_cmdline INIT(= NULL); /* new value for last_cmdline */
 #endif
 #ifdef FEAT_AUTOCMD
 EXTERN char_u  *autocmd_fname INIT(= NULL); /* fname for <afile> on cmdline */
+EXTERN int     autocmd_fname_full;          /* autocmd_fname is full path */
 EXTERN int     autocmd_bufnr INIT(= 0);     /* fnum for <abuf> on cmdline */
 EXTERN char_u  *autocmd_match INIT(= NULL); /* name for <amatch> on cmdline */
 EXTERN int     did_cursorhold INIT(= FALSE); /* set when CursorHold t'gerd */
index e842d4e8ca65f696f436816f2d0d2b543ace4502..7daa1d0d0643cc9eb2b5bb0bb0691fec9c2cbafd 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    21,
 /**/
     20,
 /**/