From a203182302733c0ea98d66ee1f576f251697dc81 Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Tue, 7 Mar 2006 22:29:51 +0000
Subject: [PATCH] updated for version 7.0217

---
 runtime/doc/cmdline.txt |  8 +++++---
 runtime/doc/insert.txt  |  9 +++++++--
 src/ex_docmd.c          |  2 +-
 src/fileio.c            |  1 +
 src/message.c           | 12 ++++++------
 src/os_riscos.c         |  2 --
 src/os_unix.c           | 11 ++++++++---
 src/os_vms.c            |  6 ++++++
 src/os_win32.c          |  2 --
 src/spell.c             |  1 +
 src/vim.h               |  1 +
 11 files changed, 36 insertions(+), 19 deletions(-)

diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 8a0f0a4a3e..e593907b3d 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 04
+*cmdline.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -354,6 +354,7 @@ word before the cursor.  This is available for:
 - File names: Only after a command that accepts a file name or a setting for
   an option that can be set to a file name.  This is called file name
   completion.
+- Shell command names: After ":!cmd", ":r !cmd" and ":w !cmd".  $PATH is used.
 - Options: Only after the ":set" command.
 - Mappings: Only after a ":map" or similar command.
 - Variable and function names: Only after a ":if", ":call" or similar command.
@@ -742,8 +743,9 @@ Note: these are typed literally, they are not special keys!
 	<afile>    when executing autocommands, is replaced with the file name
 		   for a file read or write
 	<abuf>     when executing autocommands, is replaced with the currently
-		   effective buffer number (for ":r file" it is the current
-		   buffer, the file being read is not in a buffer).
+		   effective buffer number (for ":r file" and ":so file" it is
+		   the current buffer, the file being read/sourced is not in a
+		   buffer).
 	<amatch>   when executing autocommands, is replaced with the match for
 		   which this autocommand was executed.  It differs from
 		   <afile> only when the file name isn't used to match with
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 551d133a83..4bdc24c68e 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
+*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1078,7 +1078,7 @@ INSERT COMPLETION POPUP MENU				*ins-completion-menu*
 Vim can display the matches in a simplistic popup menu.
 
 The menu is used when:
-- The 'completeopt' option contains "menu".
+- The 'completeopt' option contains "menu" or "menuone".
 - The terminal supports at least 8 colors.
 - There are at least two matches.
 
@@ -1093,6 +1093,11 @@ in the second state.
 If you select another match, e.g., with CTRL-N or CTRL-P, you go from the
 second to the first state.  This doesn't change the list of matches.
 
+When you are back at the original text then you are in the second state.  To
+get there right away you can use a mapping that uses CTRL-P right after
+starting the completion: >
+	:imap <F7> <C-N><C-P>
+
 
 In the first state these keys have a special meaning:
 <BS> and CTRL-H   Delete one character, find the matches for the word before
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index e1e5a83c4b..31aa4ace90 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -2426,7 +2426,7 @@ do_one_cmd(cmdlinep, sourcing,
 	get_flags(&ea);
 						/* no arguments allowed */
     if (!ni && !(ea.argt & EXTRA) && *ea.arg != NUL
-			      && vim_strchr((char_u *)"|\"", *ea.arg) == NULL)
+	    && *ea.arg != '"' && (*ea.arg != '|' || (ea.argt & TRLBAR) == 0))
     {
 	errormsg = (char_u *)_(e_trailing);
 	goto doend;
diff --git a/src/fileio.c b/src/fileio.c
index 8333f73b24..205e5f0c6a 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -6983,6 +6983,7 @@ static struct event_name
     {"QuickFixCmdPre",	EVENT_QUICKFIXCMDPRE},
     {"RemoteReply",	EVENT_REMOTEREPLY},
     {"SessionLoadPost",	EVENT_SESSIONLOADPOST},
+    {"SourcePre",	EVENT_SOURCEPRE},
     {"SpellFileMissing",EVENT_SPELLFILEMISSING},
     {"StdinReadPost",	EVENT_STDINREADPOST},
     {"StdinReadPre",	EVENT_STDINREADPRE},
diff --git a/src/message.c b/src/message.c
index c3acc409a6..e0971b67bc 100644
--- a/src/message.c
+++ b/src/message.c
@@ -3846,7 +3846,7 @@ tv_str(tvs, idxp)
 
 /*
  * This code was included to provide a portable vsnprintf() and snprintf().
- * Some systems may provide their own, but we always use these for
+ * Some systems may provide their own, but we always use this one for
  * consistency.
  *
  * This code is based on snprintf.c - a portable implementation of snprintf
@@ -3866,14 +3866,14 @@ tv_str(tvs, idxp)
  * The locale is not used, the string is used as a byte string.  This is only
  * relevant for double-byte encodings where the second byte may be '%'.
  *
- * It is permitted for str_m to be zero, and it is permitted to specify NULL
- * pointer for resulting string argument if str_m is zero (as per ISO C99).
+ * It is permitted for "str_m" to be zero, and it is permitted to specify NULL
+ * pointer for resulting string argument if "str_m" is zero (as per ISO C99).
  *
  * The return value is the number of characters which would be generated
  * for the given input, excluding the trailing null. If this value
- * is greater or equal to str_m, not all characters from the result
- * have been stored in str, output bytes beyond the (str_m-1) -th character
- * are discarded. If str_m is greater than zero it is guaranteed
+ * is greater or equal to "str_m", not all characters from the result
+ * have been stored in str, output bytes beyond the ("str_m"-1) -th character
+ * are discarded. If "str_m" is greater than zero it is guaranteed
  * the resulting string will be null-terminated.
  */
 
diff --git a/src/os_riscos.c b/src/os_riscos.c
index cc52d85a69..8d6df27802 100644
--- a/src/os_riscos.c
+++ b/src/os_riscos.c
@@ -637,7 +637,6 @@ mch_isdir(name)
     return FALSE;
 }
 
-#if defined(FEAT_EVAL) || defined(PROTO)
 /*
  * Return 1 if "name" can be executed, 0 if not.
  * Return -1 if unknown. Requires which to work.
@@ -663,7 +662,6 @@ mch_can_exe(name)
     vim_free(p);
     return retval;
 }
-#endif
 
 /*
  * Check what "name" is:
diff --git a/src/os_unix.c b/src/os_unix.c
index c60ddafe52..a80bd21807 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -2610,8 +2610,6 @@ mch_isdir(name)
 #endif
 }
 
-#if defined(FEAT_EVAL) || defined(PROTO)
-
 static int executable_file __ARGS((char_u *name));
 
 /*
@@ -2681,7 +2679,6 @@ mch_can_exe(name)
     vim_free(buf);
     return retval;
 }
-#endif
 
 /*
  * Check what "name" is:
@@ -4924,6 +4921,10 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
 		if ((dir && !(flags & EW_DIR)) || (!dir && !(flags & EW_FILE)))
 		    continue;
 
+		/* Skip files that are not executable if we check for that. */
+		if (!dir && (flags & EW_EXEC) && !mch_can_exe(p))
+		    continue;
+
 		if (--files_free == 0)
 		{
 		    /* need more room in table of pointers */
@@ -5390,6 +5391,10 @@ mch_expand_wildcards(num_pat, pat, num_file, file, flags)
 	if ((dir && !(flags & EW_DIR)) || (!dir && !(flags & EW_FILE)))
 	    continue;
 
+	/* Skip files that are not executable if we check for that. */
+	if (!dir && (flags & EW_EXEC) && !mch_can_exe((*file)[i]))
+	    continue;
+
 	p = alloc((unsigned)(STRLEN((*file)[i]) + 1 + dir));
 	if (p)
 	{
diff --git a/src/os_vms.c b/src/os_vms.c
index b1706fea38..28976b131a 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -445,10 +445,16 @@ mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, i
 	    /* files should exist if expanding interactively */
 	    if (!(flags & EW_NOTFOUND) && mch_getperm(vms_fmatch[i]) < 0)
 		continue;
+
 	    /* do not include directories */
 	    dir = (mch_isdir(vms_fmatch[i]));
 	    if (( dir && !(flags & EW_DIR)) || (!dir && !(flags & EW_FILE)))
 		continue;
+
+	    /* Skip files that are not executable if we check for that. */
+	    if (!dir && (flags & EW_EXEC) && !mch_can_exe(vms_fmatch[i]))
+		continue;
+
 	    /* allocate memory for pointers */
 	    if (--files_free < 1)
 	    {
diff --git a/src/os_win32.c b/src/os_win32.c
index a45255caee..330ce5a572 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -2617,7 +2617,6 @@ mch_writable(char_u *name)
 				       || (perm & FILE_ATTRIBUTE_DIRECTORY)));
 }
 
-#if defined(FEAT_EVAL) || defined(PROTO)
 /*
  * Return 1 if "name" can be executed, 0 if not.
  * Return -1 if unknown.
@@ -2663,7 +2662,6 @@ mch_can_exe(char_u *name)
     }
     return FALSE;
 }
-#endif
 
 /*
  * Check what "name" is:
diff --git a/src/spell.c b/src/spell.c
index fe46006c61..090b77f2dd 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -15110,6 +15110,7 @@ spell_dump_compl(buf, pat, ic, dir, dumpflags_arg)
 		    /* Done all bytes at this node, go up one level. */
 		    --depth;
 		    line_breakcheck();
+		    ins_compl_check_keys(50);
 		}
 		else
 		{
diff --git a/src/vim.h b/src/vim.h
index ff57561d97..a58ce7c8c3 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -1124,6 +1124,7 @@ enum auto_event
     EVENT_FUNCUNDEFINED,	/* if calling a function which doesn't exist */
     EVENT_REMOTEREPLY,		/* upon string reception from a remote vim */
     EVENT_SWAPEXISTS,		/* found existing swap file */
+    EVENT_SOURCEPRE,		/* before sourcing a Vim script */
     EVENT_SPELLFILEMISSING,	/* spell file missing */
     EVENT_CURSORMOVED,		/* cursor was moved */
     EVENT_CURSORMOVEDI,		/* cursor was moved in Insert mode */
-- 
GitLab